簡體   English   中英

R中的ANOVA:自由度幾乎都等於1

[英]ANOVA in R: Degrees of freedom almost all equal 1

這是我的榮譽論文! 我的顧問不知道如何使用R,我不知道如何使用其他任何東西,所以我在這里。

我有一個數據集,開頭像這樣:

> d.weight
    R   N   P  C D.weight
1   1   0   0 GO     45.3
2   2   0   0 GO     34.0
3   3   0   0 GO     19.1
4   4   0   0 GO     26.6
5   5   0   0 GO     23.5
6   1  45   0 GO     22.1
7   2  45   0 GO     15.5
8   3  45   0 GO     23.4
9   4  45   0 GO     15.8
10  5  45   0 GO     42.9
...

等等。

  • R是rep,其中有5個(1-5)。
  • N是氮水平,也有5(0,45,90,180,360)。
  • P是磷水平,也有5(0,35,70,140,​​280)。
  • C是植物組合,有4種(GO,GB,LO,LB)。
  • D.weight是以克為單位的干重。

但是,當我進行方差分析時,我得到了錯誤的自由度。 我通常在那組完整數據的子集上運行我的ANOVA,但是我只是做一個我實際上不會做的分析,只是這樣你就可以看到幾乎所有的Df都是錯誤的。

> example.aov=aov(D.weight ~ R+N+P+C, data=d.weight)
> summary(example.aov)
         Df Sum Sq Mean Sq F value  Pr(>F)    
R             1   1158    1158   9.484 0.00226 ** 
N             1    202     202   1.657 0.19900    
P             1  11040   11040  90.408 < 2e-16 ***
C             3  41032   13677 112.010 < 2e-16 ***
Residuals   313  38220     122

所以,基本上,唯一正確的是C因子。 是因為它有字母而不是數字嗎?

我找到了某個地方,如果我用每個術語寫下interaction(),我會得到正確的Df,但我不知道這是否是正確的做法。 例如:

> example.aov2=aov(D.weight ~ interaction(R)+interaction(N)+interaction(P)+interaction(C), data=d.weight)
> summary(example.aov2)
                Df Sum Sq Mean Sq F value   Pr(>F)    
interaction(R)   4   7423    1856  19.544 2.51e-14 ***
interaction(N)   4    543     136   1.429    0.224    
interaction(P)   4  13788    3447  36.301  < 2e-16 ***
interaction(C)   3  41032   13677 144.042  < 2e-16 ***
Residuals      304  28866      95

我用C因子嘗試了它只是為了看它是否搞砸了什么:

> example.aov3=aov(D.weight ~ C, data=d.weight)
> summary(example.aov3)
             Df Sum Sq Mean Sq F value Pr(>F)    
C             3  41032   13677   85.38 <2e-16 ***
Residuals   316  50620     160                   
> 
> example.aov4=aov(D.weight ~ interaction(C), data=d.weight)
> summary(example.aov4)
                Df Sum Sq Mean Sq F value Pr(>F)    
interaction(C)   3  41032   13677   85.38 <2e-16 ***
Residuals      316  50620     160

它看起來一樣。 我應該在任何地方添加交互()嗎?

謝謝您的幫助!

R通過檢查變量是numeric還是factor變量來確定是將變量視為分類(ANOVA類型分析)還是連續(回歸類型分析)。 最簡單的說,您可以將預測變量(獨立)變量轉換為因子

facs <- c("R","N","P")
d_weight[facs] <- lapply(d.weight[facs],factor) 

如果你想創建輔助變量而不是覆蓋你可以做類似的事情

for (varname in facs) {
   d_weight[[paste0("f",varname)]] <- factor(d_weight[[varname]])
}

可能有一種更緊湊的方式來做到這一點,但應該服務......

暫無
暫無

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

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