Nat*_*han 4 r posthoc r-car pairwise
我想在R中的Levene的测试中进行成对比较事后测试。我知道如何使用PROC GLM在SAS中进行测试,但是我似乎不知道如何在R中进行测试。有人吗?理念?在下面的示例中,我希望能够测试“ cat”的所有级别(即AB,AC,AD,BC,BD,CD)之间的方差均匀性。我发现最好的方法是将我的数据子集到每个对中,然后对每个子集运行一次Levene检验,然后在最后进行Bonferroni校正。但是,当我的因素数量很大时,这不是实际的解决方案。
library(car)
dat <- rnorm(100, mean=50, sd=10)
cat <- rep(c("A", "B", "C","D"), each=25)
df <- data.frame(cat,dat)
df$cat <- as.factor(df$cat)
LT <- leveneTest(dat ~ cat, data = df)
Run Code Online (Sandbox Code Playgroud)
由于Levene测试只是对样本方差(残差)而不是样本均值进行的ANOVA,因此您可以手动计算残差,然后在事后使用TukeyHSD测试运行ANOVA。
首先,如标题所示进行多次比较:使用您的示例,并加上一个额外的因素(cat2),以便我们也可以进行交互:
df <- df %>% group_by(cat, cat2) %>%
mutate(dat.med = ifelse(dat,median(Ctmax, na.rm=TRUE), ifelse(dat==NA, NA)))
Run Code Online (Sandbox Code Playgroud)
上面的代码跳过了NA值,并为每个因子组合计算了样本中位数,将其放入数据集中的新列(dat.med)中。
然后我们计算残差,将其更改为绝对值,然后将它们放在另一列中:
df$dat.med.res<-abs(df$dat-df$dat.med)
# Then we run an ANOVA, and post-hoc if necessary:
levene.dat.aov<-aov(dat.med.res~cat*cat2,df)
summary(levene.dat.aov)
TukeyHSD(levene.dat.aov)
Run Code Online (Sandbox Code Playgroud)
要添加重复的措施,请将方差分析更改为:
aov(dat.med.res~cat+Error(Subject/(cat)),df)
Run Code Online (Sandbox Code Playgroud)
对于具有两级因子的成对比较(使用程序包PairedData):
levene.var.test(df$dat[df$cat=="A"], df$dat[df$cat=="B"],location=c("median"))
Run Code Online (Sandbox Code Playgroud)