使用未缩放的响应变量拟合的lmer模型的无缩放预测系数

3
我已经拟合了一个lmer模型,现在我正在尝试根据实际系数而不是缩放系数来解释系数。
我的最佳模型如下:
 lmer(logcptplus1~scale.t6+scale.logdepth+(1|location) + (1|Fyear),data=cpt, REML=TRUE)

因此,两个预测变量都已缩放,其中一个是缩放的对数值。我的响应变量没有缩放,只是取了对数。

为了缩放我的预测变量,我在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

那么我如何从这些基于缩放的预测变量的系数中获得我的响应变量的实际估计值呢?

注意:我知道如何对我的预测变量进行非缩放处理,但不知道如何对系数进行非缩放/转换处理。

谢谢。

1个回答

4

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

因此,要反转模型系数,您只需要将系数乘以协变量的标准差并加上均值即可。scale函数会为您保留均值和标准差。因此,如果我们假设您的协变量值是 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

换句话说,它与无标度化预测变量是相同的,因为它是一种单调转换。

谢谢,但这对截距有什么影响呢?截距也被缩放到两个变量上了,对吧?你知道如何转换吗?我对lmers和混合模型都很陌生,我正在努力从整体上获得真实的参数估计值。 - user4093066
正确的,截距取决于模型中的两个变量,而且不会有一种方法来转换它。 如果想要获得真实的参数估计值,我建议您从一开始就不要缩放参数。 缩放的主要原因(除了可能在计算上有帮助)是可以让您比较参数估计值。 真正的问题是为什么您实际上需要真实的参数估计值。 只需绘制出每个参数的预测并用真实值替换x轴即可。 - mfidino
我认为楼主想要真实的参数估计,以便进行推断。 - theforestecologist
你可以将截距进行反变换:请参见https://dev59.com/ioDba4cB1Zd3GeqPH7hI#24286763 - Ben Bolker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接