大模型下测试框架和流程 线性模型的置换测试lmPerm包
上次谈了用coin包做置换检验。lmPerm软件包支持线性模型的置换检验。具体地说,lmp()和aovp()函数是修改后的lm()和aov()函数,用于执行置换检验,而不是正常的理论检验。
lmp()和aovp()函数中的参数类似于lm()和aov()函数中的参数,只是增加了一个perm=参数。perm=选项可以取值"Exact", "Prob", 或"SPR"。Exact根据所有可能的排列生成精确的测试。Prob从所有可能的排列中持续采样,直到估计标准偏差降到估计p值的0.1以下。停止规则由可选的Ca参数控制。最后,SPR使用序贯概率比检验(a sequential probability ratio test)来决定何时停止抽样。请注意,如果观察次数大于10,则perm=”exact”将自动缺省为perm=”prob”;精确测试仅适用于较小的问题。
为了了解其工作原理,我们将使用置换方法进行简单回归、多项式回归、多元回归、单向方差分析、单向协方差分析和双向析因设计。
简单线性回归
我们用线性回归的方法研究了15名女性的体重和身高之间的关系。使用lmp()而不是lm()生成如下清单所示的置换测试结果。
#Permutation tests for simple linear regressionlibrary(lmPerm)set.seed(1234)fit <- lmp(weight~height, data=women, perm="Prob")summary(fit)
简单线性回归
多项式回归的置换检验
#Permutation tests for polynomial regressionlibrary(lmPerm)set.seed(1234)fit <- lmp(weight~height I(height^2), data=women, perm="Prob")summary(fit)
多项式回归
如您所见,使用置换测试测试这些回归非常简单,几乎不需要对底层代码进行更改。输出也类似于lm()函数产生的输出。请注意,添加了一个Iter列,指示需要多少次迭代才能达到停止规则。
多元回归
下面运用多元回归从人口、文盲、收入和霜冻四个方面对美国50个州的谋杀率进行了预测。对此问题应用lmp()函数会产生以下输出。
#Permutation tests for multiple regressionlibrary(lmPerm)set.seed(1234)states <- as.data.frame(state.x77)fit <- lmp(Murder~Population Illiteracy Income Frost, data=states, perm="Prob")summary(fit)
多元回归
当使用正态理论时,人口和文盲都是显著的(p<0.05)。但根据置换检验,人口变量不再显著。当两种方法不一致时,您应该更仔细地查看您的数据。这可能是因为正态假设是站不住脚的,或者是存在异常值。
单因素方差分析和协方差分析
方差设计的每一种分析都可以通过排列检验来执行。首先,让我们看一下关于治疗方案对降低胆固醇的影响的单因素方差分析(One-way ANOVA)问题。代码和结果将在下一个清单中给出。
#Permutation test for One-Way ANOVAlibrary(lmPerm)library(multcomp)set.seed(1234)fit <- aovp(response~trt, data=cholesterol, perm="Prob")summary(fit)
单因素方差分析
结果表明,两种方法的治疗效果不尽相同。本节中的第二个示例将置换测试应用于协方差的单向分析。这个问题是从第9章开始的,在这一章中,你调查了四种药物剂量对老鼠窝重的影响,并控制了怀孕时间。下一个清单显示了排列测试和结果。
#Permutation test for one-way ANCOVAlibrary(lmPerm)set.seed(1234)fit <- aovp(weight ~ gesttime dose, data=litter, perm="Prob")summary(fit)
协方差的单向分析
根据p值,四种药物剂量对窝重的影响并不相等,在控制了怀孕时间前提下。
双因素方差分析
我们研究了维生素C对豚鼠牙齿生长的影响。两个操纵因素分别是剂量(三个水平)和给药方式(两个水平)。在每个处理组合中放置10只豚鼠,采用平衡的3x2析因设计。排列测试将在下一个清单中提供。
#Permutation test for two-way ANOVAlibrary(lmPerm)set.seed(1234)fit <- aovp(len~supp*dose, data=ToothGrowth, perm="Prob")summary(fit)
双因素方差分析
在0.05的显著性水平上,所有三个效应在统计上都不同于零。在0.01水平上,只有主效应显著。
重要的是要注意,当aovp()应用于ANOVA设计时,它默认为唯一的平方和(也称为SAS Type III平方和)。每种效果都会针对其他每种效果进行调整。R中参数方差分析设计的默认值是顺序平方和(SAS I类平方和)。每个效果都会针对模型中较早出现的效果进行调整。对于平衡设计,这两种方法是一致的,但对于每个细胞观察次数不相等的不平衡设计,就不是这样了。不平衡越大,分歧就越大。如果需要,在aovp()函数中指定seqs=true将产生连续的平方和。
关于置换检验的补充意见
R提供除coin和lmPerm之外的其他排列包。perm包提供一些与coin包相同的功能,并且可以作为该包的独立验证。corrperm包提供具有重复测量的相关性的排列测试。logregperm包为Logistic回归提供了一个排列测试。也许最重要的是,glmperm包将置换测试扩展到了广义线性模型。
置换检验为依赖于基础抽样分布知识的检验提供了一种强大的替代方案。在描述的每一种排列测试中,我们都能够测试统计假设,而不需要求助于正态分布、t分布、F分布或卡方分布。
您可能已经注意到,基于正态理论的测试结果与前面几节中的置换方法的结果非常接近。这些问题中的数据表现良好,方法之间的一致性证明了正态的理论方法在这种情况下是多么有效。
在数据明显非正态(例如,高度倾斜)、存在异常值、样本量较小或不存在参数检验的情况下,置换检验才真正有用武之地。然而,如果原始样本不能很好地代表感兴趣的总体,则没有任何测试(包括排列测试)会改进生成的推论。
置换检验主要用于生成可用于测试无效假设的p值。他们可以帮助回答这个问题,“有效果吗?”用置换检验求取置信区间和测量精度估计的难度较大。幸运的是,这是Bootstrapping擅长的领域。
欢迎点赞和关注!