2016-02-04 69 views
2

我已经拟合了一个lmer模型,现在我试图用真实系数而不是缩放系数来解释系数。非规模预测器系数lmer模型与非规模响应拟合

我的顶级型号是:

lmer(logcptplus1~scale.t6+scale.logdepth+(1|location) + (1|Fyear),data=cpt, REML=TRUE) 

所以无论是预测变量进行缩放,其中1为比例值记录。我的响应变量没有缩放,只是记录。

要缩放我的预测变量,我在r中使用了scale(data $ column,center = TRUE,scale = TRUE)函数。

我的模型输出结果是: 固定效应:

   Estimate Std. Error t value 
    (int)   3.31363 0.15163 21.853 
scale.t6  -0.34400 0.10540 -3.264 
scale.logdepth -0.58199 0.06486 -8.973 

所以我怎么能获得基于我的缩放预测变量按比例缩放从这些系数我响应变量真正的估计?

注:我知道如何unscale我的预测变量,只是没怎么unscale /变换系数

感谢

回答

2

scale功能做了数据的z变换,这意味着它需要的原始值,减去平均值,然后除以标准偏差。

to_scale <- 1:10 
using_scale <- scale(to_scale, center = TRUE, scale = TRUE) 
by_hand <- (to_scale - mean(to_scale))/sd(to_scale) 
identical(as.numeric(using_scale), by_hand) 
[1] TRUE 

因此,扭转模型系数所有你需要做的是通过协变量的标准差乘以系数,并添加平均值。比例函数适用于您的平均值和sd。因此,如果我们假设您的协变量值为scale.t6回归系数的using_scale向量,我们可以编写一个函数来为我们完成这项工作。

get_real <- function(coef, scaled_covariate){ 

      # collect mean and standard deviation from scaled covariate 
      mean_sd <- unlist(attributes(scaled_covariate)[-1]) 

      # reverse the z-transformation 
      answer <- (coef * mean_sd[2]) + mean_sd[1] 

      # this value will have a name, remove it 
      names(answer) <- NULL 

      # return unscaled coef 
       return(answer) 
} 

get_real(-0.3440, using_scale) 
[1] 4.458488 

换句话说,这与缩放预测变量是一回事,因为它是单调变换。

+0

谢谢,但是这是怎么翻译的拦截以及?截距也可以缩放到两个变量,对吗?你知道如何改变它吗?我对lmers和混合模型一般都不熟悉,而且我正在努力从整个模型中获取实际参数估计值 – user4093066

+0

正确,截距取决于模型中的两个变量,并且无法转换它。如果想要得到真实的参数估计值,我建议不要从开始就缩放参数。缩放的主要原因(除了潜在的计算上的帮助),您可以对参数估计进行比较。真正的问题是为什么你实际上需要真正的参数估计。只需绘制每个参数的预测值并将x轴替换为实际值即可。 –