線性模型的置換測試: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()生成如下清單所示的置換測試結果。

<code>#Permutation tests for simple linear regression
library(lmPerm)
set.seed(1234)
fit summary(fit)/<code>
線性模型的置換測試:lmPerm包

簡單線性迴歸

多項式迴歸的置換檢驗

<code>#Permutation tests for polynomial regression
library(lmPerm)
set.seed(1234)
fit summary(fit)/<code>
線性模型的置換測試:lmPerm包

多項式迴歸

如您所見,使用置換測試測試這些迴歸非常簡單,幾乎不需要對底層代碼進行更改。輸出也類似於lm()函數產生的輸出。請注意,添加了一個Iter列,指示需要多少次迭代才能達到停止規則。

多元迴歸

下面運用多元迴歸從人口、文盲、收入和霜凍四個方面對美國50個州的謀殺率進行了預測。對此問題應用lmp()函數會產生以下輸出。

<code>#Permutation tests for multiple regression
library(lmPerm)
set.seed(1234)
states fit data=states, perm="Prob")
summary(fit)/<code>
線性模型的置換測試:lmPerm包

多元迴歸

當使用正態理論時,人口和文盲都是顯著的(p<0.05)。但根據置換檢驗,人口變量不再顯著。當兩種方法不一致時,您應該更仔細地查看您的數據。這可能是因為正態假設是站不住腳的,或者是存在異常值。

單因素方差分析和協方差分析

方差設計的每一種分析都可以通過排列檢驗來執行。首先,讓我們看一下關於治療方案對降低膽固醇的影響的單因素方差分析(One-way ANOVA)問題。代碼和結果將在下一個清單中給出。

<code>#Permutation test for One-Way ANOVA
library(lmPerm)
library(multcomp)
set.seed(1234)
fit summary(fit)/<code>
線性模型的置換測試:lmPerm包

單因素方差分析

結果表明,兩種方法的治療效果不盡相同。本節中的第二個示例將置換測試應用於協方差的單向分析。這個問題是從第9章開始的,在這一章中,你調查了四種藥物劑量對老鼠窩重的影響,並控制了懷孕時間。下一個清單顯示了排列測試和結果。

<code>#Permutation test for one-way ANCOVA
library(lmPerm)
set.seed(1234)
fit summary(fit)/<code>
線性模型的置換測試:lmPerm包

協方差的單向分析

根據p值,四種藥物劑量對窩重的影響並不相等,在控制了懷孕時間前提下。

雙因素方差分析

我們研究了維生素C對豚鼠牙齒生長的影響。兩個操縱因素分別是劑量(三個水平)和給藥方式(兩個水平)。在每個處理組合中放置10只豚鼠,採用平衡的3x2析因設計。排列測試將在下一個清單中提供。

<code>#Permutation test for two-way ANOVA
library(lmPerm)
set.seed(1234)
fit summary(fit)/<code>
線性模型的置換測試:lmPerm包

雙因素方差分析

在0.05的顯著性水平上,所有三個效應在統計上都不同於零。在0.01水平上,只有主效應顯著。

重要的是要注意,當aovp()應用於ANOVA設計時,它默認為唯一的平方和(也稱為SAS Type III平方和)。每種效果都會針對其他每種效果進行調整。R中參數方差分析設計的默認值是順序平方和(SAS I類平方和)。每個效果都會針對模型中較早出現的效果進行調整。對於平衡設計,這兩種方法是一致的,但對於每個細胞觀察次數不相等的不平衡設計,就不是這樣了。不平衡越大,分歧就越大。如果需要,在aovp()函數中指定seqs=true將產生連續的平方和。

關於置換檢驗的補充意見

R提供除coinlmPerm之外的其他排列包。perm包提供一些與coin包相同的功能,並且可以作為該包的獨立驗證。corrperm

包提供具有重複測量的相關性的排列測試。logregperm包為Logistic迴歸提供了一個排列測試。也許最重要的是,glmperm包將置換測試擴展到了廣義線性模型。

置換檢驗為依賴於基礎抽樣分佈知識的檢驗提供了一種強大的替代方案。在描述的每一種排列測試中,我們都能夠測試統計假設,而不需要求助於正態分佈、t分佈、F分佈或卡方分佈。

您可能已經注意到,基於正態理論的測試結果與前面幾節中的置換方法的結果非常接近。這些問題中的數據表現良好,方法之間的一致性證明了正態的理論方法在這種情況下是多麼有效。

在數據明顯非正態(例如,高度傾斜)、存在異常值、樣本量較小或不存在參數檢驗的情況下,置換檢驗才真正有用武之地。然而,如果原始樣本不能很好地代表感興趣的總體,則沒有任何測試(包括排列測試)會改進生成的推論。

置換檢驗主要用於生成可用於測試無效假設的p值。他們可以幫助回答這個問題,“有效果嗎?”用置換檢驗求取置信區間和測量精度估計的難度較大。幸運的是,這是Bootstrapping擅長的領域。


分享到:


相關文章: