lmとlmeの重みの引数はRで大きく異なります-私はそれらを正しく使用していますか?


8

したがって、lmの重み関数は、関連する観測の「重み」値が大きいほど観測に重みを与えるように思えますが、lmeのlme関数は正確に反対です。これは簡単なシミュレーションで確認できます。

#make 3 vectors- c is used as an uninformative random effect for the lme model
a<-c(1:10)
b<-c(2,4,6,8,10,100,14,16,18,20)
c<-c(1,1,1,1,1,1,1,1,1,1)

ここで、lmの従属変数の逆数に基づいて観測値に重み付けするモデルを実行する場合、逆数をとらずに、従属変数だけで重み付けした場合にのみ、nlmeでまったく同じ結果を生成できます。

summary(lm(b~a,weights=1/b))
summary(lme(b~a,random=~1|c,weights=~b))

これを反転して、逆が真であることを確認できます。lmでweights = bを指定すると、一致するlme結果を取得するにはweights = 1 / bが必要です。

だから、私はこれをよく理解しています。あることについて検証し、別のものについて質問したいだけです。

  1. 従属変数の逆に基づいてデータに重みを付けたい場合、lme内でweights =〜(従属変数)をコーディングするだけで問題ありませんか?
  2. lmeがlmとはまったく異なる重みを処理するように書かれているのはなぜですか?混乱を引き起こす以外に、これの目的は何ですか?

どんな洞察もいただければ幸いです!


1
2.への答えは、彼らは非常に異なる人々が非常に異なることをするために書かれたということです。lm()Sやさまざまな本との互換性が必要でしたが、nlmeはそうではありませんでした。nlmeはそうではなく、より柔軟で、異質性を許容範囲より柔軟にモデル化できるようにすることを目指していましたlm
Gavin Simpson

回答:


12

Q1

このlme表記でweights = ~ bは、varFixed分散関数が単一の引数とともに使用されますb。この関数は、形式分散関数をモデルに追加します ここで、はベクトル引数の値を取ります。s 2v = | v | vs2(v)s2(v)=|v|vb

したがって、あなたは使うべきweights = ~ I(1/b)lme()持つように分散の。εi=1/bi

ではlm、あなたが渡すものをweights正反対であるようです。weightsある分散に比例しました。

私のデータの重み付けが何を意味するのかは100%わかりませんが、もし観測値の不均一な分散を提供するつもりなら、私はあなたが望んでweights = ~ I(1/b)いると思います。

Q2

私の直感(2つの関数のそれぞれの作成者に尋ねる必要があります)は、これはおかしなことでlm()ありlme()、非常に異なる人々が非常に異なることを行うために作成したものであるということです。nlmelm()Sやさまざまな本との互換性が必要でしたが(そうであることが望まれていました)、nlmeはそうではありませんでした。それはより柔軟で、インフラストラクチャを介したlm分散関数の使用を通じてよりも柔軟にモデル化できるようにすることを目的としていvarFuncます。


これは十分に明確です。「データに重みを付ける」とは、大きなフィットから大きな残差が予想され、通常の最小二乗ではなくパーセンテージ最小二乗に似ていることをモデルフィットに考慮させたいことを意味します。また、私はスタックオーバーフローでクロスポストを削除しました、申し訳ありません!
コリン2013

その場合は、nlmeの他の分散関数を確認することをお勧めします。あなたがしていることは、あなたの観察の分散が正確にの(絶対的な)値であるということbです。で分散が増加したとだけ言ったほうがいいようですbvarPower()たとえば、分散は、はモデルパラメーターを推定します。が0値を取らない場合、これは問題ありません。値が0の場合、関数の方が優れている可能性があります。ここでの分散はです。δVRεI= σ 2×E2δ×BのIσ^2×|b|2δδbvarExp()varε=σ^2×e2δ×b
ギャビンシンプソン

ではlm()、分散があることに注意文言比例の逆数にしますweightslme私たちが議論したコードでb 、分散です。あなたの説明に従って、あなたが本当にそれを望んでいないと思います...また、平均応答で分散が増加する場合、GLMMが適切であり、平均分散関係を直接モデル化できるため、lme4パッケージが適切であることに注意してください、共分散行列の変更によるのではなく、lmeコードが行っていることです。
ギャビンシンプソン

最後に、スタックオーバーフローで不機嫌そうに聞こえました。それは意図的なものではありませんでした。OTとして終了してCross Validatedに移行することに投票できないことを忘れてしまいました。理由についてはコメントを残す必要がありますが、最初のコメントはすでに残しておきます。目にする目の数に基づいて質問のSEサイトを選択しないでください。最も適切な会場を選択してください。あなたの質問を推進すると何も間違ってあり、クロス検証済みもっと目を取得するには、あなたも上のRのパブリックチャットルームで、それへのリンクを投稿することができ、スタックオーバーフロー。OTの質問をクロスポストまたは投稿すると、リソースが多すぎて投票数が少なくなるため、投票数が少なくなります。–
Gavin Simpson
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.