gpt4 book ai didi

r - 未缩放预测系数 lmer 模型适合未缩放的响应

转载 作者:行者123 更新时间:2023-12-04 09:34:36 26 4
gpt4 key购买 nike

我已经拟合了一个 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

那么我如何才能从这些根据我的缩放预测变量缩放的系数获得我的响应变量的真实估计值?

注意:我了解如何取消缩放我的预测变量,只是不知道如何取消缩放/转换系数

谢谢

最佳答案

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

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

关于r - 未缩放预测系数 lmer 模型适合未缩放的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35209579/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com