5

共同研究者が分析を行いますが、SAS を持っていないため、反復測定モデルを SAS から R に変換しようとしています。4 つのグループを扱い、1 グループあたり 8 ~ 10 匹の動物を扱い、各動物に 5 つの時点を設定します。モック データ ファイルは、こちら https://drive.google.com/file/d/0B-WfycVUQyhaVGU2MUpuQkg4Mk0/edit?usp=Rdata ファイルとして共有され、こちら https://drive.google.com/file/d/ から入手できます0B-WfycVUQyhaR0JtZ0V4VjRkTk0/edit?usp= Excel ファイルとして共有:

元の SAS コード (1) は次のとおりです。

proc mixed data=essai.data_test method=reml;
    class group time mice;
    model param = group time group*time / ddfm=kr;
    repeated time / type=un subject=mice group=group;
run;

与える:

    Type 3 Tests des effets fixes
               DDL     DDL     Valeur
Effet         Num.    Res.          F    Pr > F
group            3    15.8       1.58    0.2344
time             4    25.2      10.11    <.0001
group*time      12    13.6       1.66    0.1852

R は SAS と同じように自由度を処理しないことを知っているので、最初に (2) のような結果を得ようとしています。

proc mixed data=essai.data_test method=reml;
    class group time mice;
    model param = group time group*time;
    repeated time / type=un subject=mice group=group;
run;

ここでいくつかのヒントを見つけました反復測定混合モデル式を SAS から Rに変換し、複合対称相関行列を指定すると、これは完全に機能します。ただし、一般的な相関行列については同じことを得ることができません。

SAS で (2) を使用すると、次の結果が得られます。

   Type 3 Tests des effets fixes
              DDL     DDL     Valeur
Effet         Num.    Res.          F    Pr > F
group            3      32       1.71    0.1852
time             4     128      11.21    <.0001
group*time      12     128       2.73    0.0026

次の R コードを使用します。

options(contrasts=c('contr.sum','contr.poly'))
mod <- lme(param~group*time, random=list(mice=pdDiag(form=~group-1)),
            correlation = corSymm(form=~1|mice),
            weights = varIdent(form=~1|group),
            na.action = na.exclude, data = data, method = "REML")
anova(mod,type="marginal")

私は得る:

            numDF denDF   F-value p-value
(Intercept)     1   128 1373.8471  <.0001
group           3    32    1.5571  0.2189
time            4   128   10.0628  <.0001
group:time     12   128    1.6416  0.0880

自由度は似ていますが、固定効果のテストではなく、これがどこから来たのかわかりません。ここで私が間違っていることを誰かが知っていますか?

4

2 に答える 2

1

R コードは、複数の点で SAS コードと異なります。それらのいくつかは修正可能ですが、SAS 分析を再現するためにすべての側面を修正することはできませんでした。

  1. R コードはランダム効果を含む混合効果モデルに適合しますmiceが、SAS コードは残差間の相関を可能にする一般化線形モデルに適合しますが、ランダム効果はありません (RANDOMステートメントがないため)。R では、同じパッケージのgls関数を使用する必要があります。nlme

  2. R コードでは、同じグループ内のすべての観測値は同じ分散を持ちますが、SAS コードでは構造化されていない共分散行列を持ちます。つまり、各グループ内の各時点には独自の分散があります。を使用しても同じ効果が得られweights=varIdent(form=~1|group*time)ます。

  3. R コードでは、相関行列はグループに関係なくすべてのマウスで同じです。SAS コードでは、各グループに独自の相関行列があります。これは、Rでの再現方法がわからない部分です。

R モデルの方がより意味があるように思われることに注意する必要があります。SAS は、あまりにも多くの分散と相関を見積もっています (ちなみに、これはステートメントのRおよびRCORRオプションを使用して意味のある配置になっていることがわかります)。repeated

于 2014-09-12T22:05:45.973 に答える