固定効果なしでlmerモデルを指定することは可能ですか?


9

Rでは、グローバル固定効果なしでlmerモデルをどのように指定しますか?たとえば、私が次のようなことを言った場合

lmer(y ~ (1 | group) + (0 + x | group), data = my_df)

適合モデルは

yij=a+αi+βixij

モデルの適合方法

yij=αi+βixij


私の折り返しの答えはそれlmer(y~0+(1|group)+(0+x|group))がうまくいくだろうということでした、しかしこれはエラーをもたらします。
Mike Lawrence

4
lme4パッケージは混合モデルのみ(少なくとも1つの固定効果と1つのランダム効果)専用であるため、lmerで固定効果のないモデルを指定することはできないと思います。いずれにせよ、ドキュメントで変量効果モデルを見た覚えはありません。(R-SIG-混合モデルのリストにそれを求めるために有用である可能性stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
maxTC

1
好奇心から、なぜそうしたいのですか?多分あなたの根本的な目標にアプローチする別の方法があるでしょう。
jbowman

2
センターがy最初:)
マクロ

回答:


8

@Mike Lawrenceが言及したように、固定効果のないモデルを定義するときに行うべき明白なことは、次のような形になります。

lmer(y ~ -1 + (1|GroupIndicator))

実際には非常に簡単です。1つは切片またはX行列を定義しません。これがうまくいかない基本的な理由は、@ maxTCが指摘したように、「lme4パッケージは混合モデルのみに専用である」ということです。

特に、lmer()フィッティングが行うことは、ペナルティ付き最小二乗回帰を解いてプロファイルされた逸脱を計算することです。 y^ そして y 球状のランダム効果だけでなく u そして 0(式(11)、参照(2))。計算上、この最適化手順は、システムのブロック構造を利用して、対応するシステムのコレスキー分解を計算します(式(5)、参照(1))。グローバル固定効果を設定しないと、lmer()のコードが対応できない方法でブロック構造が実質的に歪められます。とりわけ、条件付き期待値u に基づいています β^の解決策 β^ 存在しなかったマトリックスシステム(マトリックス RXX Ref。(1)、または LXRef。(2)にあります)。したがって、次のようなエラーが発生します。

Error in mer_finalize(ans) : 
  Cholmod error 'invalid xtype' at file:../Cholesky/cholmod_solve.c, line 970

結局のところ、そもそも解決すべきことは何もありませんでした。

lmer()プロファイルの逸脱コスト関数を書き直したくない場合、最も簡単な解決策はCS-101の公理に基づいています:ガベージイン、ガベージアウト

 N = length(y); Garbage <- rnorm(N); 
 lmer(y ~ -1 + Garbage + (1|GroupIndicator));

変数を定義します Garbageそれは単なるノイズです。前と同じように、lmer()は、固定切片を使用せず、X行列のみを使用するように指示されています(この場合は、単一列行列Garbage)。この追加のガウスノイズ変数は、サンプル測定誤差やランダム効果の分散とは無相関であると予想されます。言うまでもなく、モデルの構造が多いほど、望ましくないが統計的に有意なランダム相関が得られる可能性が小さくなります。

したがって、lmer()にはプラセボがあります X 変数(行列)を操作します。期待どおりに、関連する βゼロになるため、データを正規化する必要はありませんでした(それらをセンタリング、ホワイトニングなど)。おそらくプラセボのいくつかのランダムな初期化を試みますXマトリックスも害はありません。「ガベージ」に関する最後の注意:ガウスノイズの使用は「偶然」ではありませんでした。これは、分散が等しいすべての確率変数の中で最大のエントロピーを持っているため、情報が得られる可能性が最も低くなります。

明らかに、これはソリューションよりも計算上のトリックですが、ユーザーはグローバルな固定効果なしにlmerモデルを効果的に指定できます。2つの参照を回避することをお詫び申し上げます。一般に、Ref。(1)は、lmer()が何をしているのかを理解するのに最適な方法だと思いますが、Ref。(2)は実際のコードの精神に近いものです。

上記のアイデアを示すコードの一部を次に示します。

library(lme4)
N= 500;                 #Number of Samples
nlevA = 25;             #Number of levels in the random effect 
set.seed(0)             #Set the seed
e = rnorm(N); e = 1*(e - mean(e) )/sd(e); #Some errors

GroupIndicator =  sample(nlevA, N, replace=T)   #Random Nvel Classes 

Q = lmer( rnorm(N) ~ (1| GroupIndicator ));      #Dummy regression to get the matrix Zt easily
Z = t(Q@Zt);            #Z matrix

RA <-  rnorm(nlevA )                        #Random Normal Matrix
gammas =c(3*RA/sd(RA))                      #Colour this a bit

y = as.vector(  Z %*% gammas +  e )         #Our measurements are the sum of measurement error (e) and Group specific variance

lmer_native <- lmer(y ~ -1 +(1| GroupIndicator)) #No luck here.
Garbage <- rnorm(N)                              #Prepare the garbage

lmer_fooled <- lmer(y ~ -1 + Garbage+(1| GroupIndicator)) #OK...
summary(lmer_fooled)                             #Hey, it sort of works!

参照:

  1. DM BatesとS. DebRoyによる線形混合モデルとペナルティ付き最小二乗、ジャーナルオブマルチバリアント分析、91巻1、2004年10月(プレプリントへのリンク
  2. 2012年6月、Douglas Batesによる混合モデルの計算方法。(ソースへのリンク

マルコがコメントで述べたアプローチよりもあなたが提案したアプローチを好む理由はありますか?
russellpierce 2013

2
はい; データを変更しないため、逆変換は必要ありません。その結果、lmer()によるすべての標準的な診断と利点があります。適合変数、残差、変量効果レベルなどは、「変更されたもの」ではなく「真の」データセットに対応するため、直接解釈できます。
usεr11852
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.