2013-06-23 50 views
1

我有一個數據集,其中有18個數據集。每個人都有幾個人,每個人都有一個「彩色」的呼叫。我只想用人口作爲主要因素以單因素方差分析(One-way ANOVA)一次比較兩個種羣,以獲得兩兩結合的MS-內和MS-間。如何進行迭代ANOVA並從R中的lm對象中提取均方值

我知道如何從總括ANOVA使用以下代碼提取MS:

mylm <- lm(Color ~ Pop, data=PopColor) 
anova(mylm)[["Mean Sq"]] 

其產生中-受試者第一MS(PopColor $ POP),則受試者之間-MS(剩餘)分別爲:

[1] 3.7079911 0.4536985 
  1. 是否有,我可以創造一個do循環做全配單因素方差分析所有人羣之間,然後抽取中並在MS的方法嗎?
  2. 然後,我想將每個比較中的兩個MS值移到它們自己的對稱矩陣上:一個羣體標記的受試者MS矩陣和一個羣體標記的受試者MS矩陣。這些將具有與人口名稱相同的列和行名稱。

下面是我的數據有6個種羣的一個子集:

dput(dat) 
structure(list(Pop = structure(c(6L, 6L, 6L, 6L, 6L, 6L, 6L, 
6L, 6L, 6L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("pop1001", "pop1026", 
"pop252", "pop254a", "pop311", "pop317"), class = "factor"), 
    Color = c(4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 3L, 3L, 
    3L, 3L, 2L, 3L, 3L, 3L, 2L, 2L, 2L, 1L, 3L, 3L, 2L, 3L, 2L, 
    3L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 3L, 3L, 2L, 3L, 3L, 2L, 
    3L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 3L, 2L, 2L, 3L, 4L, 
    2L, 3L, 2L, 4L, 3L, 3L, 2L, 3L, 2L, 3L, 3L, 4L, 3L, 2L, 4L, 
    4L, 1L, 2L, 2L, 2L, 2L, 1L, 3L, 2L, 3L, 2L, 3L, 3L, 3L, 3L, 
    2L, 3L, 4L, 2L, 2L, 4L, 3L)), .Names = c("Pop", "Color"), class = "data.frame", row.names = c(NA, 
-94L)) 

任何幫助將不勝感激!謝謝!

+1

歡迎來到SO。我格式化了一些你的問題。請閱讀如何格式化問題的幫助。格式良好的問題通常會得到最好的答案。 – agstudy

+0

感謝您重新格式化我的問題agstudy! – Ros1920

+0

你可能使用'multcomp'軟件包更好,它也可以糾正多重比較。 – hadley

回答

0

我不明白你點2(有點像技術不像我這樣的統計學家)。對於第一點,我瞭解它,因爲你想在所有人羣中應用lm/Anova。您可以使用combn

combn:生成採取米×的元件的所有組合在同一時間

pops <- unique(PopColor$Pop) 
ll <- combn(pops,2,function(x){ 
        dat.pair <- PopColor[PopColor$Pop %in% pops[x],] 
        mylm <- lm(Color ~ Pop, data=dat.pair) 
        c(as.character(pops[x]),anova(mylm)[["Mean Sq"]]) 
},simplify=FALSE) 
do.call(rbind,ll) 
    [,1]  [,2]  [,3]     [,4]    
[1,] "pop1026" "pop254a" "0.210291858678956" "0.597865353037767" 
[2,] "pop1026" "pop1001" "0.52409988385598" "0.486874236874237" 
[3,] "pop1026" "pop317" "15.7296466973886" "0.456486042692939" 
[4,] "pop1026" "pop311" "1.34392057218144" "0.631962930099576" 
[5,] "pop1026" "pop252" "0.339324116743472" "0.528899835796388" 
[6,] "pop254a" "pop1001" "0.0166666666666669" "0.351785714285714" 
[7,] "pop254a" "pop317" "14.45"    "0.227777777777778" 
[8,] "pop254a" "pop311" "1.92898550724637" "0.561430575035063" 
[9,] "pop254a" "pop252" "0.8"    "0.344444444444444" 
[10,] "pop1001" "pop317" "20.4166666666667" "0.205357142857143" 
[11,] "pop1001" "pop311" "3.55030333670374" "0.46474019088017" 
[12,] "pop1001" "pop252" "1.35"    "0.280357142857143" 
[13,] "pop317" "pop311" "9.60474308300398" "0.429172510518934" 
[14,] "pop317" "pop252" "8.45"    "0.116666666666667" 
[15,] "pop311" "pop252" "0.110803689064557" "0.496914446002805" 

正如你可以看到我們有choose(6,2)=15候選條件對。

+0

我不知道爲什麼downvote! .....真的很棒 – agstudy

+0

我需要15個聲望點,所以我無法撤銷downvote!感謝您的回答agstudy - 這真的很有幫助! – Ros1920

+0

不客氣。我不是專家,但是個人而言,我會嘗試使用'multicomp'軟件包的@hadley建議 – agstudy