簡體   English   中英

為什么純素食主義者的adonis()每次都會返回不同的p值?

[英]Why does adonis() from vegan returns a different p-value every time it is?

素食主義者軟件包中的函數adonis執行非參數MANOVA,也稱為PERMANOVA。 問題(也不是,也許我只是不完全了解測試的工作原理)是,每當我使用相同的數據運行它時,我都會得到略有不同的p值。

這是示例數據。

dframetest <- data.frame(X = rnorm(20), Y = rnorm(20), Z = rnorm(20), Label = c(rep("A",10),rep("B",10)))

adonis(dframetest[,1:3] ~ Label, permutations = 1000, data = dframetest, method = "euclidean")

如果您幾次運行adonis ,您會發現p值幾乎總是略有不同,盡管看起來可能存在3-4個左右的值。 這讓我想知道,如果您的數據處於重要的“大范圍”,將會發生什么。 你會如何解釋的結果,如果返回的值會看起來像0.0530.0470.05

正如@ user2554330所提到的,我們使用數據的排列來測試測試統計量。 排列是偽隨機的,由permute包中的函數生成。 如果要獲得可重復的p值,請使用set.seed()設置隨機數生成器的種子; 例如

set.seed(42)
adonis(....)
set.seed(42)
adonis(....)

將產生相同的排列集,因此產生相同的p值。

排列p值的准確性將隨着排列數目的增加而增加; 如果嘗試運行示例而不設置RNG種子,但permutations = 10000 ,則應看到較少的變化。

adonis通過隨機選擇排列進行排列測試。 您要求提供1000個隨機排列,因此p值基於這1000個隨機排列中觀察到的測試統計量的等級。 (使用默認permutations = 999 ,您可以更容易地解釋數字;然后p=0.264意味着隨機數包括在內時,您所觀察到的統計信息從頂部起第264位。)

如果3次運行的返回值分別為0.053、0.047、0.05,那么您將知道真實的p值(通過枚舉每個可能的排列獲得)約為0.05。 但是,即使您知道真實的p值是0.049對0.051,結論也應該大致相同。 有證據表明,對於純粹的隨機數據,與預測變量無關,這種影響足夠大,以至於偶然發生的概率只有20分之一左右。

抱歉,我在這里下了話題。 如果要詢問對p值的解釋,則可能應該使用交叉驗證,而不是堆棧溢出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM