R语言线性回归分区间系数计算:循环实现可复现方案
分组计算线性回归系数的解决方案
以下是可复现的R代码,实现按每10个数据为一组计算线性回归系数,并按指定格式输出:
set.seed(111) # 生成模拟数据 a <- rnorm(100) b <- rnorm(100) # 创建分组标识:每10个数据一组,适配任意大小数据集 total_groups <- ceiling(length(a)/10) groups <- rep(1:total_groups, each = 10, length.out = length(a)) # 按分组计算回归系数 group_coefs <- tapply(seq_along(groups), groups, function(idx) { group_a <- a[idx] group_b <- b[idx] # 拟合当前组的线性回归模型 model <- lm(group_a ~ group_b) # 提取自变量b的系数,保留两位小数 round(coef(model)[["group_b"]], 2) }) # 格式化输出结果 for (group_num in seq_along(group_coefs)) { start <- (group_num - 1)*10 + 1 end <- min(group_num*10, length(a)) cat(sprintf("%d-%d区间系数:%.2f\n", start, end, group_coefs[group_num])) }
关键说明
- 分组逻辑自动适配任意大小的数据集,无需手动调整分组数量
- 使用
tapply()实现按组批量计算,避免重复编写循环代码 - 输出格式严格匹配需求,同时兼容数据总量不是10的倍数的情况
内容的提问来源于stack exchange,提问作者ToniNA
相关产品推荐
相关产品推荐

