使用lmer进行多级回归的正确缩放方法[R]

时间:2017-01-20 14:41:01

标签: r scaling lme4 multi-level

让我们说我有10个国家(第2级)的300家公司(1级)的数据。 1级变量是PQ和大小。 2级变量是人均GDP。

printf( "bigendian ? %s\n", bigendian() ? "true" : "false" );

当我运行时,我收到警告信息

  

警告消息:1:某些预测变量非常不同   scale:考虑重新缩放2:在checkConv(attr(opt,“derivs”)中,   opt $ par,ctrl = control $ checkConv,:模型无法收敛   MAX |毕业生| = 1.77081(tol = 0.002,组分1)3:In   checkConv(attr(opt,“derivs”),opt $ par,ctrl = control $ checkConv,:
  模型几乎无法识别:非常大的特征值     - 重新缩放变量?模型几乎无法识别:大的特征值比     - 重新缩放变量?

事实上,当我使用原始数据运行模型时,我收到了另一条警告消息:

  

模型未收敛:使用1个负特征值退化Hessian

我想我需要缩放自变量来解决这个问题。像这样在多级回归中缩放的正确方法是什么?这个问题很重要,因为多级模型的结果取决于缩放。还是有其他一些我无法找到的问题?

1 个答案:

答案 0 :(得分:4)

tl; dr 这些模型具有几乎相同的合身度;缩放模型略微更好,更可靠;固定效应几乎相等;两种模型都估计了奇异的随机效应方差 - 协方差矩阵,这使得比较变得更加困难,意味着你不应该依赖这些模型来得出任何情况下的差异结论......

在居中和重新缩放后,模型应具有相同的含义。正如我在下面所示,固定效应基本相同。我发现很难说服自己方差 - 协方差估计是等价的,但无论如何模型都是单数的(即,没有足够的信息来拟合正定方差 - 协方差矩阵)。 / p>

使用您的示例并使用缩放参数重新运行:

MLdata <- transform(MLdata,
    size_cs=scale(size),
    GDP_cs=scale(GDP))
m2 <- lmer(PQ ~ size_cs + GDP_cs + (size_cs|country), data = MLdata,
                   REML = FALSE)

比较对数似然性:

logLik(dummymodel)  ## -828.4349
logLik(m2)          ## -828.4067

这表明模型非常接近,但缩放模型的效果稍好一些(尽管0.03对数似然单位的改进非常小)。

固定效果看起来不同,但我会表明它们是等同的:

fixef(dummymodel)
##   (Intercept)          size           GDP 
##  1.345754e+01  3.706393e-05 -5.464550e-06 
##     fixef(m2)
## (Intercept)     size_cs      GDP_cs 
## 13.86155940  0.27300688 -0.05914308 

(如果您查看两个模型的coef(summary(.)),您会发现sizeGDP的统计信息几乎相同。)

来自this question

rescale.coefs <- function(beta,mu,sigma) {
   beta2 <- beta ## inherit names etc.
   ## parameters other than intercept:
   beta2[-1] <- sigma[1]*beta[-1]/sigma[-1]
   ## intercept:
   beta2[1]  <- sigma[1]*beta[1]+mu[1]-sum(beta2[-1]*mu[-1])
   return(beta2)
}     
cm <- sapply(MLdata[c("size","GDP")],mean)
csd <- sapply(MLdata[c("size","GDP")],sd)

rescaled <- rescale.coefs(fixef(m2),mu=c(0,cm),sigma=c(1,csd))
all.equal(rescaled,fixef(m2))
cbind(fixef(dummymodel),rescaled)
##                                rescaled
## (Intercept)  1.345754e+01  1.345833e+01
## size         3.706393e-05  3.713062e-05
## GDP         -5.464550e-06 -5.435151e-06

非常相似。

关于方差 - 协方差矩阵:

VarCorr(dummymodel)
##  Groups   Name        Std.Dev.   Corr  
##  country  (Intercept) 2.3420e-01       
##           size        1.5874e-05 -1.000
##  Residual             3.8267e+00

VarCorr(m2)
##  Groups   Name        Std.Dev.   Corr 
##  country  (Intercept) 0.0000e+00      
##           size_cs     4.7463e-08   NaN
##  Residual             3.8283e+00      

方差 - 协方差矩阵都不是正定的;第一个国家的拦截变化与各国的坡度变化完全相关,而第二个国家的跨度分布为零。此外,在任何一种情况下,相对于残差方差,国家间差异非常小。 如果两个矩阵都是正定的,我们可以努力找到可以从一个案例扩展到另一个案例的转换(我认为它只是将每个元素乘以(s_i s_j),其中s_。是应用于给定预测变量的比例因子)。如果他们不是PD,那就变得棘手了。