讓我們說我有10個國家(2級)的300家公司(1級)的數據。 1級變量是PQ和大小。二級變量是人均國內生產總值。使用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(選擇 「derivs」 ), opt $ par,ctrl = control $ checkConv,:模型與 max | grad | = 1.77081(tol = 0.002,component 1)收斂3:在 checkConv(attr(opt,「derivs」),opt $ par,ctrl = control $ checkConv,:
模型幾乎不可識別:非常大的特徵值 - 重新定義變量?模型幾乎不可識別:較大的特徵值比率 - 重新定義變量?
事實上,當我運行的原始數據,我得到一個額外的警告信息模型:
模型沒有收斂:墮落黑森州與1個負本徵值
我想我需要擴展自變量來解決這個問題。像這樣在多級迴歸中進行縮放的正確方法是什麼?這個問題很重要,因爲多級模型的結果依賴於縮放。或者還有其他一些我無法找到的問題?
縮放所有變量'as.data.frame(scale(MLdata))'後,模型正確擬合。 –
謝謝。這在理論上是有效的在多層次上縮放這樣的數據嗎?由於縮放,每個級別解釋的結果和方差都有顯着變化。 –