R - 如何按组进行回归并获取预测值?

标签 r statistics

personID<-c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26)
genger<-c('male', 'male', 'male', 'male', 'male', 'male', 'male', 'male', 'male', 'male', 'male', 'female', 'female', 'female', 'female', 'female', 'female', 'female', 'female', 'female', 'female', 'female', 'female', 'female', 'female', 'female')
height<-c(181, 161, 198, 195, 177, 175, 197, 195, 198, 193, 161, 167, 132, 181, 165, 151, 163, 180, 169, 181, 177, 135, 143, 107, 161, 142)
weight<-c(165,  73, 90, 89, 80, 159,    179,    177,    180,    175,    73, 76, 60, 165,    150,    69, 148,    164,    154,    165,    161,    61, 130,    97, 146,    65)
data<-data.frame(personID, genger, height, weight)
data

我是 R 初学者。

我喜欢按性别(男、女)执行回归。

回归公式为权重= solpe*高度 + 截距。

我用谷歌搜索了一些文章,但我不明白。

我想要的输出如下。

person_id   gender  height  weight  predict_value  error
1            male   181      165       xxx           xx
2            male   161      73        ...           ...  
3            male   198      90 
4            male   195      89 
5            male   177      80 
6            male   175      159    
7            male   197      179    
8            male   195      177    
9            male   198      180    
10           male   193      175    
11           male   161       73    
12          female  167       76    
13          female  132       60    
14          female  181      165    
15          female  165      150    
16          female  151       69    

如何按性别进行回归分析并添加预测和误差列?

如有任何帮助,我们将不胜感激。

最佳答案

这是一种方法。您可以拆分数据,执行回归并使用 Predict() 查找置信区间,然后可以取消拆分以返回原始结构。例如,使用您的测试数据并在示例数据中的“genger”(原文如此)列上进行拆分

unsplit(lapply(split(data, data$genger), function(x) {
    m<-lm(weight~height, x)
    cbind(x, predict(m, interval ="confidence"))
}), data$genger)

这会返回

   personID genger height weight       fit        lwr       upr
1         1   male    181    165 124.17126  94.106766 154.23576
2         2   male    161     73  87.11321  29.280886 144.94554
3         3   male    198     90 155.67061 115.126629 196.21458
4         4   male    195     89 150.11190 113.707198 186.51660
5         5   male    177     80 116.75965  83.508504 150.01080
# etc...

关于R - 如何按组进行回归并获取预测值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28756618/

相关文章:

matlab - 在 Matlab 中调整多重比较的 p 值

C# 普通随机数

python - 如何使用 pymc3 指定伯努利分布的大小?

python - 将列中的字符串转换为分类变量

java - 放大高低值阻尼器

r - 如何初始化工作人员以并行使用包函数

r - 在summary()中使用变量作为参数

r - 在 R 中的相关矩阵上应用阈值

r - 在 EC2 RHEL 7 上安装 R

r - 在 R 中的行首添加字符