R语言进行最小显著性差异分析 (LSD)

Python0242

R语言进行最小显著性差异分析 (LSD),第1张

形式如下:

输出文件如下

最新版的r语言没有方差分析表格的解决方法如下:

ANOVA对各疗法的F检验表明,4种药品用于缓解术后疼痛的疗效不同,但是并不能得出哪种药品疗法与其他不同。

多重比较可以解决这个问题.e.g. TukeyHSD()函数提供了对各组均值差异的成对检验;multcomp包中的glht()函数提供了多重均值比较更为全面的方法,既适用于线性模型,也适用于广义线性模型;多重t检验方法针对每组数据进行t检验。代码如下: TukeyHSD(medicine.aov) #par()函数旋转轴标签,增大左边界面积,使标签摆放更美观。 par(las = 2) par(mar = c(5, 8, 4, 2)) plot(TukeyHSD(medicine.aov))

图形中置信区间包含0的药品对比,说明差异不显著。 library(multcomp) #为适合字母阵列摆放,par语句用来增大顶部边界面积 par(mar = c(5, 4, 6, 2)) tuk <- glht(medicine.aov, linfct = mcp(Treatment = "Tukey")) #cld()函数中level选项为设置的显著性水平(这里的0.05对应95%置信区间) plot(cld(tuk, level = 0.05), col = "lightgrey")

有相同字母的组(用箱线图表示)说明均值差异不显著。

多次重复使用t检验会增大犯第一类错误的概率,为了克服这一缺点,需要调整p-值。R软件调整p-值用的是p.adjust()函数,函数使用的不同参数代表不同的调整方法。 attach(medicine) #求数据在各水平下的均值 mu<-c(mean(Response[Treatment==1]), mean(Response[Treatment==2]), mean(Response[Treatment==3]),mean(Response[Treatment==4]))mu #作多重t检验。这里用到的pairwise.t.test()函数用来得到多重比较的p值 pairwise.t.test(Response, Treatment, p.adjust.method = "none")

#观察两个作调整后的p值的情况。p.adjust.method()函数的参数也可换为"hochberg","hommel","bonferroni","BH","BY","fdr"等。 pairwise.t.test(Response, Treatment, p.adjust.method = "holm") #绘制箱线图 plot(medicine$Response~medicine$Treatment)

一行一行来。

basic.stats <- function(x,more=F) { # 建立名叫basic.stats的函数,参数为x和more,more默认是F就是不用输入,但你也可以输入,有额外效果。

stats <- list() #建立名叫stats的列表类型变量

clean.x <- x[!is.na(x)] #把x中的NA全部踢掉,留下有用的数据记为clean.x

stats$mean <- mean(clean.x)# 计算clean.x的均值 赋给列表中的mean单元

stats$std <- sd(clean.x)# 计算clean.x的标准差 赋给列表中的std单元

stats$med <- median(clean.x) # 计算clean.x的中位数 赋给列表中的med单元

if(more) { #如果你在函数中输入2个变量,默认是basic.stats(x),你可以输入basic.stats(x, y) 有额外效果

stats$skew <- sum(((clean.x-stats$mean)/stats$std)^3)/length(clean.x) #计算偏度 赋给列表中的skew单元

stats$kurt <- sum(((clean.x-stats$mean)/stats$std)^4)/length(clean.x) - 3 #计算峰度 赋给列表中的kurt单元

unlist(stats) #最后拆解列表变量stats 使其变为简单的向量数值变量