1 lmPerm 包的置换检验
lmPerm包可做线性模型的置换检验。比如lmp()和aovp()函数即lm()和aov()函数的修改版,能够进行置换检验,而非正态理论检验。lmp()和aovp()函数的参数与lm()和aov()函数类似,只额外添加了perm=参数。perm=选项的可选值有Exact、Prob或SPR。Exact根据所有可能的排列组合生成精确检验。Prob从所有可能的排列中不断抽样,直至估计的标准差在估计的p值0.1之下,判停准则由可选的Ca参数控制。SPR使用贯序概率比检验来判断何时停止抽样。注意,若观测数大于10,perm="Exact"将自动默认转为perm="Prob",因为精确检验只适用于小样本问题。
1.1 简单回归和多项式回归
(1)简单线性回归的置换检验
library(lmPerm)
set.seed(1234)
fit <- lmp(weight~height, data=women, perm="Prob")
summary(fit)
结果分析:p=2e-16在0到0.001之间,有三颗星星,表示效果最好。
(2)多项式回归的置换检验
library(lmPerm)
set.seed(1234)
fit <- lmp(weight~height + I(height^2), data=women, perm="Prob")
summary(fit)
结果分析:p=2e-16,并且关于height的二次方的p值也在0到0.001之间,有三颗星星,表示效果最好,与上面简单线性回归的置换检验效果差不多。
1.2 多元回归
多元回归被用来通过美国50个州的人口数、文盲率、收入水平和结霜天数预测犯罪率。将lmp()函数应用到此问题:
library(lmPerm)
set.seed(1234)
states <- as.data.frame(state.x77)
fit <- lmp(Murder~Population + Illiteracy+Income+Frost, data=states, perm="Prob")
summary(fit)
结果分析:谋杀率Murder与文盲率Illiteracy之间的关系紧密,因为后面有三颗星星。
1.3 单因素方差分析和协方差分析
(1)单因素方差分析的置换检验
library(lmPerm)
library(multcomp)
set.seed(1234)
fit <- aovp(response~trt, data=cholesterol, perm="Prob")
anova(fit)
结果分析:各种疗法对降低胆固醇的影响的效果不全相同。
(2)单因素协方差分析的置换检验
问题:当控制妊娠期时间相同时,观测四种药物剂量对鼠崽体重的影响。
library(lmPerm)
set.seed(1234)
fit <- aovp(weight ~ gesttime + dose, data=litter, perm="Prob")
anova(fit)
结果分析:依据p值可知,当控制妊娠期时间gesttime相同时,四种药物剂量dose对鼠崽的体重weight影响不相同。
1.4 双因素方差分析
维生素C对豚鼠牙齿生长的影响为例,该实验两个可操作的因子是剂量dose(三水平)和喂食方式supp(两水平)。10只豚鼠分别被分配到每种处理组合中,形成一个3×2的析因实验设计。
set.seed(1234)
fit <- aovp(len~supp*dose, data=ToothGrowth, perm="Prob")
anova(fit)
结果分析:在0.05的显著性水平下,三种效应都不等于0;在0.01的水平下(0.01到0.05之间只有一颗星),只有主效应显著。
置换检验点评:基于正态理论的检验与上面置换检验的结果非常接近。置换检验真正发挥功用的地方是处理非正态数据(如分布偏倚很大)、存在离群点、样本很小或无法做参数检验等情况。