基于分类变量的线性回归计算β(95%CI)及趋势P值(附R数据)
线性回归拟合计算趋势分析(模仿JAMA研究方法)
需求说明
本人阅读了JAMA发表的《2001-2016年美国人群久坐行为趋势》一文,希望学习其分析方法。该研究采用线性回归评估粗线性趋势,估计每2年变化的回归系数β及95%CI,将调查周期作为连续变量计算趋势P值。现提供R格式数据集,请求协助拟合线性回归模型并计算β(95%CI)和趋势P值。
数据集
data <- data.frame( Year_group = c("2001-2002", "2003-2004", "2005-2006", "2007-2008", "2009-2010","2011-2012","2013-2014","2015-2016"), Incidence = c(65.5,72.6,61.0,63.2,61.8,63.6,57.6,62.2), CI_Lower = c(59.1, 68.1, 56.3, 57.8, 54.5,59.2,53.7,57.1), CI_Upper = c(72.0, 77.2, 65.7, 68.7, 69.1,68.0,61.4,67.2))
分析步骤与代码
1. 构建连续时间变量
将每个调查周期转换为连续数值(以2001-2002为第1个周期,后续每2年递增1):
# 添加连续时间变量 data$time <- seq(1, nrow(data), 1)
2. 拟合线性回归模型
以Incidence为因变量、time为自变量拟合线性回归:
# 拟合模型 model <- lm(Incidence ~ time, data = data) # 提取模型统计结果与置信区间 summary_result <- summary(model) confint_result <- confint(model, level = 0.95)
3. 提取目标统计量
# 提取回归系数β(每2年的变化量) beta <- coef(model)[["time"]] # 提取95%置信区间 ci_lower <- confint_result["time", 1] ci_upper <- confint_result["time", 2] # 提取趋势P值 p_value <- summary_result$coefficients["time", "Pr(>|t|)"] # 格式化输出结果 cat(sprintf("每2年变化的回归系数β: %.2f (95%% CI: %.2f, %.2f)\n", beta, ci_lower, ci_upper)) cat(sprintf("趋势P值: %.4f\n", p_value))
结果解释
- 回归系数β代表每经过一个2年调查周期,
Incidence的平均变化幅度 - 95%CI反映该变化幅度的可信范围
- 趋势P值用于判断该线性趋势是否具有统计学意义
内容的提问来源于stack exchange,提问作者H Luei
相关产品推荐
相关产品推荐

