私はRに精通しているユーザーであり、4つの生息地変数について5年間で約35人のランダムな勾配(選択係数)を推定しようとしています。応答変数は、場所が「使用済み」(1)または「使用可能」(0)の生息地(以下「使用」)であったかどうかです。
Windows 64ビットコンピューターを使用しています。
Rバージョン3.1.0では、以下のデータと式を使用します。PS、TH、RS、およびHWは固定効果です(標準化された、測定された生息地までの距離)。lme4 V 1.1-7。
str(dat)
'data.frame': 359756 obs. of 7 variables:
$ use : num 1 1 1 1 1 1 1 1 1 1 ...
$ Year : Factor w/ 5 levels "1","2","3","4",..: 4 4 4 4 4 4 4 4 3 4 ...
$ ID : num 306 306 306 306 306 306 306 306 162 306 ...
$ PS: num -0.32 -0.317 -0.317 -0.318 -0.317 ...
$ TH: num -0.211 -0.211 -0.211 -0.213 -0.22 ...
$ RS: num -0.337 -0.337 -0.337 -0.337 -0.337 ...
$ HW: num -0.0258 -0.19 -0.19 -0.19 -0.4561 ...
glmer(use ~ PS + TH + RS + HW +
(1 + PS + TH + RS + HW |ID/Year),
family = binomial, data = dat, control=glmerControl(optimizer="bobyqa"))
glmerは、私にとって意味のある固定効果のパラメーター推定値を提供します。また、データを定性的に調査するときに、ランダムな勾配(各生息地タイプに対する選択係数として解釈します)も意味があります。モデルの対数尤度は-3050.8です。
ただし、動物の生態学のほとんどの研究ではRを使用しません。動物の位置データを使用すると、空間的自己相関により標準エラーがタイプIエラーになりやすいためです。Rはモデルベースの標準誤差を使用しますが、経験的(またHuber-whiteまたはサンドイッチ)標準誤差が優先されます。
Rは現在このオプションを提供していませんが(私の知る限り-私が間違っている場合は修正してください)、SASは-SASにアクセスできませんが、同僚が標準エラーを判断するために自分のコンピューターを借りることに同意しました経験的方法を使用すると大幅に変化します。
まず、モデルベースの標準エラーを使用する場合、SASがRと同様の推定値を生成するようにします。これにより、モデルが両方のプログラムで同じ方法で指定されていることを確認できます。それらがまったく同じであるかどうかは気にしません-ちょうど似ています。試しました(SAS V 9.2):
proc glimmix data=dat method=laplace;
class year id;
model use = PS TH RS HW / dist=bin solution ddfm=betwithin;
random intercept PS TH RS HW / subject = year(id) solution type=UN;
run;title;
行を追加するなど、他のさまざまな形式も試しました
random intercept / subject = year(id) solution type=UN;
random intercept PS TH RS HW / subject = id solution type=UN;
指定せずに試した
solution type = UN,
またはコメントアウト
ddfm=betwithin;
モデルをどのように指定しても(多くの方法を試してみました)、固定効果が十分に類似していても、SASのランダムな勾配をRからの出力にリモートで類似させることはできません。そして、私が異なることを意味するとき、私はサインさえ同じではないことを意味します。SASの-2対数尤度は71344.94でした。
完全なデータセットをアップロードできません。そのため、3人の個人のレコードのみでおもちゃのデータセットを作成しました。SASは、数分で出力を提供します。Rでは1時間以上かかります。奇妙な。このおもちゃのデータセットを使用して、固定効果のさまざまな推定値を取得しています。
私の質問:ランダムな勾配の推定値がRとSASで非常に異なる可能性がある理由を誰かが明らかにできますか?呼び出しが同様の結果を生成するようにコードを変更するために、RまたはSASでできることはありますか?Rの推定値を「信じる」ため、SASのコードを変更したいです。
私は本当にこれらの違いに関心があり、この問題の根底に到達したいです!
RおよびSASの完全なデータセットの35人のうち3人のみを使用する玩具データセットからの出力は、jpegとして含まれています。
編集と更新:
@JakeWestfallが発見を助けたように、SASの勾配には固定効果が含まれていません。固定効果を追加すると、結果は次のようになります。プログラム間で1つの固定効果「PS」のR勾配とSAS勾配を比較します(選択係数=ランダム勾配)。SASのバリエーションの増加に注意してください。
0
sおよび1
s としてラベル付けされた二項データを使用してR
、「1」応答の確率をモデル化し、SASが「0」応答の確率をモデル化することです。SASモデルを "1"の確率にするには、応答変数をとして記述する必要がありますuse(event='1')
。もちろん、これを行わなくても、ランダム効果の分散の同じ推定値と、符号が反転していても同じ固定効果の推定値を期待する必要があります。
ranef()
ではなく、関数を使用してSASのランダム効果と比較する必要があるということですcoef()
。前者は実際の変量効果を与え、後者は変量効果と固定効果ベクトルを与えます。したがって、これはあなたの投稿に示されている数字が異なる理由の多くを説明していますが、まだ完全には説明できないかなりの不一致が残っています。
ID
はRの要因ではないことに気付きました。それが何かを変更するかどうかを確認してください。