を使用してマルチレベル回帰のスケールを修正する方法10カ国(レベル2)に300社(レベル1)のデータがあるとしましょう。レベル1の変数はPQとサイズです。レベル2変数は1人当たりGDPです。私はこれを実行するとlmer [R]
library(lme4)
set.seed(1)
PQ <- runif(300,7,21)
id <- (1:300)
country <- sample(1:10,300,replace=T)
size <- sample(1:25000,300,replace=T)
GDP <- sample(800:40000,10,replace=T)
Country1 <- 1:10
L1data <- as.data.frame(cbind(id,country,PQ,size))
L2data <- as.data.frame(cbind(Country1,GDP))
MLdata <- merge(L1data,L2data, by.x = "country", by.y = "Country1")
dummymodel <- lmer(PQ ~ size + GDP + (size|country), data = MLdata, REML = F)
私は警告メッセージに
警告メッセージを得る:1:一部の予測変数は非常に異なる スケールである:2を再スケーリング考えてみます。checkConv(ATTR(OPTでは、 "derivs" )、 opt $ par、ctrl = control $ checkConv、モデルは と収束しませんでしたmax | grad | = 1.77081(tol = 0.002、コンポーネント1)3: でcheckconv(attr(opt、 "derivs")、opt $ par、ctrl = control $ checkConv、:
モデルはほとんど識別できません:非常に大きな固有値 - 変数のサイズを変更しますか?モデルはほとんど識別できません:大きい固有値の比 - 変数のスケールを変更しますか?実際に
私は、元のデータでモデルを実行するとき、私は追加の警告メッセージが表示されます:
モデルが収束に失敗しました:1つの、負の固有値
と縮退ヘッセは私が推測しますこの問題を解決するために独立変数をスケーリングする必要があります。このようなマルチレベル回帰のスケールを変更する正しい方法は何ですか?この問題は、マルチレベルモデルの結果がスケーリングに依存するため、重要です。または私が見つけることができない他のいくつかの問題がありますか?
すべての変数as.data.frame(scale(MLdata))をスケーリングした後、モデルが正しくフィットしました。 –
ありがとうございます。これはマルチレベルでこのようなデータをスケールするのに理論的に有効ですか?各レベルで説明された結果と分散は、スケーリングのために大きな変化をもたらします。 –