R - 如何按组进行回归并获得预测值?
R - How to do regression by group and getting predict values?
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初学者。
我喜欢按性别(男、女)进行回归。
回归公式为weight=solpe*height + intercept
我谷歌了一下,但我没看懂几篇文章。
我想要的输出如下。
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() 找到置信区间,然后您可以将 return 拆分为原始结构。例如,使用您的测试数据并在样本数据
的 "genger" (原文如此)列上拆分
unsplit(lapply(split(data, data$genger), function(x) {
m<-lm(weight~height, x)
cbind(x, predict(m, interval ="confidence"))
}), data$genger)
这个returns
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...
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初学者。
我喜欢按性别(男、女)进行回归。
回归公式为weight=solpe*height + intercept
我谷歌了一下,但我没看懂几篇文章。
我想要的输出如下。
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() 找到置信区间,然后您可以将 return 拆分为原始结构。例如,使用您的测试数据并在样本数据
的 "genger" (原文如此)列上拆分unsplit(lapply(split(data, data$genger), function(x) {
m<-lm(weight~height, x)
cbind(x, predict(m, interval ="confidence"))
}), data$genger)
这个returns
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...