R简单线性回归中如何重缩放age变量以得到每1/5/10年的β系数
线性回归变量缩放疑问解答
系数解读纠正
你当前得到的age系数86.06不是年龄升高0.1年的效应,而是年龄每升高1年对应的结局平均升高值。
原因是你的age变量本身单位为年,比如取值67.1即代表67.1岁,线性回归中自变量的系数默认代表「自变量每升高1个单位时,因变量的平均变化量」,因此原系数对应的就是年龄增长1年的效应。
不同年龄增长跨度的效应获取方法
你可以通过两种方式得到1年、5年、10年对应的效应β,二者结果完全一致:
- 方法1:直接换算原系数(无需重新拟合模型)
线性回归的系数与自变量缩放幅度呈线性相关,直接基于原系数计算即可:- 每升高1年的效应:
86.06 * 1 = 86.06 - 每升高5年的效应:
86.06 * 5 = 430.3 - 每升高10年的效应:
86.06 * 10 = 860.6
- 每升高1年的效应:
- 方法2:重缩放年龄变量后拟合模型
如果你希望直接从模型输出中得到对应跨度的系数,可以对age变量做如下转换后重新拟合:library(dplyr) # 重缩放年龄变量 mydata <- mydata %>% mutate( age_1y = age, # 每单位对应1年增长 age_5y = age / 5, # 每单位对应5年增长 age_10y = age / 10 # 每单位对应10年增长 ) # 示例:拟合10年跨度的回归模型 fit_10y <- lm(continuous_outcome ~ age_10y, data = mydata) # 输出的age_10y系数即为年龄每升高10年的效应值
注:两种方法得到的效应值、标准误、p值、模型拟合度完全一致,仅系数量纲不同,可根据报告需求灵活选择。
内容的提问来源于stack exchange,提问作者tcvdb1992
相关产品推荐
相关产品推荐

