在R中从校正后的GLM生成标准化Beta系数的报错问题
单变量Logistic回归标准化Beta系数计算方案
问题说明
你运行单变量Logistic回归时,因变量Group为因子型(取值"patients"/"controls"),自变量x为数值型,原代码存在笔误(公式里的x = mod应为x),正确拟合代码应为:
glmmodel <- glm(Group ~ x, family = binomial, data = df)
你尝试用lm.beta()、beta()、quantpsych包的lm.beta()获取标准化Beta系数均报错,原因是这些函数仅支持线性回归(lm对象),无法兼容Logistic回归的glm对象。
可行解决方案
方案一:手动标准化自变量后重新拟合
对数值型自变量做z-score标准化((x-均值)/标准差),再用标准化后的变量拟合模型,此时输出的系数就是标准化Beta系数:
# 对自变量x做标准化 df$x_std <- scale(df$x) # 拟合标准化后的Logistic回归 glm_std <- glm(Group ~ x_std, family = binomial, data = df) # 查看标准化系数 summary(glm_std)
注:Logistic回归的因变量是分类变量,无需标准化,仅处理自变量即可。
方案二:用effectsize包自动计算
effectsize包支持对glm模型直接计算标准化系数,原理是自动标准化自变量后重新拟合模型:
# 安装并加载包 install.packages("effectsize") library(effectsize) # 计算已拟合模型的标准化系数 std_coef <- standardize(glmmodel, method = "refit") # 输出结果 print(std_coef)
内容的提问来源于stack exchange,提问作者bobosein
相关产品推荐
相关产品推荐

