0

私が分析しなければならないデータの研究デザインは単純です。1 つのコントロール グループ (CTRL) と 2 つの異なる治療グループ (TREAT_1 および TREAT_2) があります。データには、2 つの共変量 COV1 と COV2 も含まれています。データに線形または二次処理効果があるかどうかを確認するように依頼されました。

私の状況を説明するために、ダミーのデータセットを作成しました。

df1 <- data.frame(

Observation = c(rep("CTRL",15), rep("TREAT_1",13), rep("TREAT_2", 12)),

COV1 = c(rep("A1", 30), rep("A2", 10)),

COV2 = c(rep("B1", 5), rep("B2", 5), rep("B3", 10), rep("B1", 5), rep("B2", 5), rep("B3", 10)),

Variable = c(3944133, 3632461, 3351754, 3655975, 3487722, 3644783, 3491138, 3328894,
             3654507, 3465627, 3511446, 3507249, 3373233, 3432867, 3640888,

             3677593, 3585096, 3441775, 3608574, 3669114, 4000812, 3503511, 3423968,
             3647391, 3584604, 3548256, 3505411, 3665138, 

             4049955, 3425512, 3834061, 3639699, 3522208, 3711928, 3576597, 3786781,
             3591042, 3995802, 3493091, 3674475)
)

plot(Variable ~ Observation, data = df1)

プロットからわかるように、対照群と治療群の間には直線関係があります。この線形効果が統計的に有意かどうかを確認するために、contr.poly() 関数を使用してコントラストを変更し、次のような線形モデルに適合させます。

contrasts(df1$Observation) <- contr.poly(levels(df1$Observation))

lm1 <- lm(log(Variable) ~ Observation, data = df1)
summary.lm(lm1)

要約から、線形効果が統計的に有意であることがわかります。

Observation.L  0.029141   0.012377    2.355    0.024 *  
Observation.Q  0.002233   0.012482    0.179    0.859  

ただし、この最初のモデルには、2 つの共変量のいずれも含まれていません。それらを含めると、線形関係の有意でない p 値が得られます。

lm2 <- lm(log(Variable) ~ Observation + COV1 + COV2, data = df1)
summary.lm(lm2)

Observation.L  0.04116    0.02624   1.568    0.126    
Observation.Q  0.01003    0.01894   0.530    0.600    
COV1A2        -0.01203    0.04202  -0.286    0.776    
COV2B2        -0.02071    0.02202  -0.941    0.354    
COV2B3        -0.02083    0.02066  -1.008    0.320   

ここまでは順調ですね。ただし、タイプ I ではなくタイプ II の Anova を実行するように言われました。タイプ II の Anova を実行するには、car パッケージの Anova() 関数を使用しました。

Anova(lm2, type="II")

Anova Table (Type II tests)

Response: log(Variable)
              Sum Sq Df F value Pr(>F)
Observation 0.006253  2  1.4651 0.2453
COV1        0.000175  1  0.0820 0.7763
COV2        0.002768  2  0.6485 0.5292
Residuals   0.072555 34 

ここでタイプ II を使用する場合の問題は、線形効果と二次効果の p 値が得られないことです。したがって、効果が統計的に線形か二次かはわかりません。

次のコードは、Anova() 関数と同じ Observation の p 値を生成することがわかりました。ただし、結果には、線形効果または二次効果の p 値も含まれていません。

lm2 <- lm(log(Variable) ~ Observation + COV1 + COV2, data = df1)
lm3 <- lm(log(Variable) ~ COV1 + COV2, data = df1)
anova(lm2, lm3)

タイプ II anova と対比関数を実行して、線形効果と二次効果の p 値を取得する方法を知っている人はいますか?

助けていただければ幸いです。

ベストピーター

4

1 に答える 1

4

これに対する部分的な回避策を 1 つ見つけましたが、さらに修正が必要になる場合があります。stats パッケージの関数 drop1() のドキュメントは、この関数がタイプ II の二乗和を生成することを示しています (ただし、このページ: http://www.statmethods.net/stats/anova.html ) は drop1() がタイプを生成すると宣言していますIII の二乗和です。二乗和の計算をクロスチェックするために、これ (http://afni.nimh.nih.gov/sscc/gangc/SS.html) を調べるのにあまり時間をかけませんでした。それを使用してすべてを手動で計算することもできますが、誰かがすでにそれを実行していればいいので、この質問をしていると思います.

とにかく、Observation2 という名前のダミー データに 2 番目のベクトルを追加し、線形コントラストのみを設定しました (特定の時間に特定のベクトルに対して 1 つのコントラスト セットのみを指定できます)。

df1[,"Observation2"]<-df1$Observation
contrasts(df1$Observation2, how.many=1)<-contr.poly

次に、3 番目の線形モデルを作成しました。

lm3<-lm(log(Variable)~Observation2+COV1+COV2, data=df1)

また、drop1 を使用して F 検定を実行し、2 つのモデル間でタイプ II ANOVA の F 統計を比較しました: lm2。これには、線形項と二次項の両方が含まれています。

drop1(lm2, test="F")

線形コントラストのみを含む lm3 :

drop1(lm3, test="F")

これには、モデル同士の直接比較は含まれていませんが、線形モデルの F 統計量が高く (それに応じて p 値が低く)、2 次モデルの代わりに F 統計量に依存することになります。

于 2012-12-06T20:29:08.910 に答える