1

18 の母集団を持つデータセットがあります。各集団には複数の個体があり、各個体には「色」の呼び出しがあります。ペアワイズ MS-within と MS-aming を取得するために、母集団を主因子とする一元配置 ANOVA で一度に 2 つの母集団のみを比較したいと思います。

次のコードを使用して、オムニバス ANOVA から MS を抽出する方法を知っています。

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

最初に被験者間 MS (PopColor$Pop) を生成し、次に被験者間 MS (残差) をそれぞれ生成します。

[1] 3.7079911 0.4536985
  1. すべての母集団間ですべてのペアワイズ一元配置分散分析を実行し、MS 内および MS 内を抽出する do ループを作成する方法はありますか?
  2. 次に、2 つの MS 値を各比較から独自の対称行列に移動したいと思います。1 つは人口でラベル付けされた被験者間 MS 行列で、もう 1 つは人口でラベル付けされた被験者内 MS 行列です。これらは、Population 名と同一の列名と行名を持ちます。

以下は、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))

どんな助けでも大歓迎です!ありがとう!

4

1 に答える 1

0

ポイント2がわかりません(私のような統計学者ではないため、少し技術的です)。最初のポイントについては、母集団のすべてのペアに lm/Anova を適用したいので、理解しています。使用できますcombn

ombn: 一度に m を取った x の要素のすべての組み合わせを生成します

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可能なペアがあります。

于 2013-06-23T22:34:30.743 に答える