4

私はこれをいくつか検索しましたが、私が見つけたメーリングリストの投稿はnlme、私がこれを行ったのに対し、ランダム効果を指定していない人に関連付けられています. 私は、Pinheiro と Bates による本 Mixed Effect Models in S and S-Plus も所有していますが、この本から私の問題を解決することはできません。

私はまだ栄養データの分析に取り組んでおり、現在は実際のデータに移行しています. データは人口調査から得られたもので、各回答者が栄養素の 24 時間摂取量を 2 回想起するため、反復測定設計を特徴としています。

lme4 モデルをデータにうまく当てはめましたが、代わりに非線形法を使用するとどうなるかを調べようとしています。私のデータのスナップショットは以下のとおりです。

head(Male.Data)
   RespondentID Age SampleWeight  IntakeDay IntakeAmt AgeFactor BoxCoxXY
2        100020  12    0.4952835 Day1Intake 12145.852     9to13 15.61196
7        100419  14    0.3632839 Day1Intake  9591.953    14to18 15.01444
8        100459  11    0.4952835 Day1Intake  7838.713     9to13 14.51458
12       101138  15    1.3258785 Day1Intake 11113.266    14to18 15.38541
14       101214   6    2.1198688 Day1Intake  7150.133      4to8 14.29022
18       101389   5    2.1198688 Day1Intake  5091.528      4to8 13.47928

データに関する要約情報は次のとおりです。

str(Male.Data)
'data.frame':   4498 obs. of  7 variables:
$ RespondentID: Factor w/ 4487 levels "100013","100020",..: 2 7 8 12 14 18 19 20 21 22 ...
$ Age         : int  12 14 11 15 6 5 10 2 2 9 ...
$ SampleWeight: num  0.495 0.363 0.495 1.326 2.12 ...
$ IntakeDay   : Factor w/ 2 levels "Day1Intake","Day2Intake": 1 1 1 1 1 1 1 1 1 1 ...
$ IntakeAmt   : num  12146 9592 7839 11113 7150 ...
$ AgeFactor   : Factor w/ 4 levels "1to3","4to8",..: 3 4 3 4 2 2 3 1 1 3 ...
$ BoxCoxXY    : num  15.6 15 14.5 15.4 14.3 ...

パッケージを使用して、次を使用lme4して線形混合効果モデルを正常に適合させました (ランダム効果は被験者からのものであり、 の変換である にIntakeDay関連付けられた反復測定係数です):BoxCoxXYIntakeAmt

Male.lme1 <- lmer(BoxCoxXY ~ AgeFactor + IntakeDay + (1|RespondentID),
        data = Male.Data, 
        weights = SampleWeight)

このパッケージを使用してnlme、非線形モデルをフィッティングして 2 つを比較しようとしましたが、構文を機能させることができません。私の最初の問題は、自分のデータに関連する SelfStart モデルがないように見えることでした。そのため、geeglm開始値 ( というデータ フレームに保存された係数Male.nlme.start) を生成していました。しかし、今はエラーが発生します:

Error in getGroups.data.frame(dataMix, eval(parse(text = paste("~1", deparse(groups[[2]]),  : 
Invalid formula for groups

私が間違っていることを理解できませんnlme。私が使用している構文は次のとおりです。

Male.nlme1 <- nlme(BoxCoxXY ~ AgeFactor + IntakeDay + RespondentID , data = Male.Data, 
fixed = AgeFactor + IntakeDay ~ 1, 
random = RespondentID ~ 1,
start=c(Male.nlme.start[,"Estimate"]))

全体的なモデル仕様に含まれている場合と含まれていない場合の両方で分析を試みましたRespondentIDが、影響はないようです。

私が非線形の方法に固執しようとしている理由は、SAS の元の分析が非線形のアプローチを使用していたからです。私の残差などは、lme 分析からは許容できるほど良好に見えますが、非線形アプローチがどのような影響を与えるかを知りたいと思っています。

参考traceback()までに、前回の分析試行の結果RespondentIDは次のとおりです。

5: stop("Invalid formula for groups")
4: getGroups.data.frame(dataMix, eval(parse(text = paste("~1", deparse(groups[[2]]), 
   sep = "|"))))
3: getGroups(dataMix, eval(parse(text = paste("~1", deparse(groups[[2]]), 
   sep = "|"))))
2: nlme.formula(BoxCoxXY ~ AgeFactor + IntakeDay, data = Male.Data, 
   fixed = AgeFactor + IntakeDay ~ 1, random = RespondentID ~ 
       1, start = c(Male.nlme.start[, "Estimate"]))
1: nlme(BoxCoxXY ~ AgeFactor + IntakeDay, data = Male.Data, fixed = AgeFactor + 
   IntakeDay ~ 1, random = RespondentID ~ 1, start = c(Male.nlme.start[, 
   "Estimate"])) 

誰かが私が間違っている場所を提案できますか? (1) の因子レベルが多すぎRespondentIDて機能しないのnlmeか、(2) の開始パラメーターを指定した場合にのみメソッドが機能するのか、これは私のデータであるためRespondentID、これは私が持っているデータでは無意味に思えます。サブジェクト識別子。

更新:ベンに答えるために、SASnlmixedモデルは固定効果の一般的な対数尤度関数です:

ll1 <- log(1/sqrt(2*pi*Scale))
ll2 <- as.data.frame(-(BoxCoxXY - Intercept + AgeFactor + IntakeDay + u2)^2)/(2*Scale)+(Lambda.Value-1)*log(IntakeAmt)
ll <- ll1 + ll2
model IntakeAmt ~ general(ll)

どこ:

Scalegeeglm=とからの分散値

Lambda.Value= 式を介してboxcox()変換するために使用された、以前の からの最大対数尤度出力に関連付けられたラムダ値IntakeAmtBoxCoxXYMale.Data$BoxCoxXY <- (Male.Data$IntakeAmt^Lambda.Value-1)/Lambda.Value

SAS コードのrandomステートメントは次のとおりです。

random u1 u2 ~ normal([0,0][&vu1,COV_U1U2,&vu2]) subject=RespondentID

そのため、モデルには 2 つの誤差項があり、両方とも変量効果として適合しています。2 番目の角括弧は、行順にリストされた変量効果分散行列の下三角を表し、SAS 構文で SAS マクロ変数を使用して指定されます。

与えられたモデルの要約は、共変量行列 (BX) とエラー コンポーネントを示す通常の 1 行の概要であるため、ここではあまり役に立ちません。

2 番目の更新: 分析のために性別ごとに個別のデータ フレームに分割する前に、データ フレーム全体で RespondentID を因数分解したため、女性被験者に関連付けられた RespondentID レベルを削除していないことに気付きました。nlmeRespondentID の未使用の因子レベルを削除して分析を繰り返しましたが、同じエラーが発生しました。結果はlmer同じです - これは良いことです。:)

4

0 に答える 0