【发布时间】:2016-06-29 13:47:51
【问题描述】:
我正在构建一年前在 SO 上提出并回答的类似问题。 与此帖相关:how to merge two linear regression prediction models (each per data frame's subset) into one column of the data frame
我将使用与那里相同的数据,但使用新列。 我创建数据:
dat = read.table(text = " cats birds wolfs snakes trees
0 3 8 7 2
1 3 8 7 3
1 1 2 3 2
0 1 2 3 1
0 1 2 3 2
1 6 1 1 3
0 6 1 1 1
1 6 1 1 1 " ,header = TRUE)
模拟狼的数量,使用两个数据子集来区分条件。每个子集的方程不同。
f0 = lm(wolfs~snakes,data = dat,subset=dat$cats==0)
f1 = lm(wolfs~snakes + trees,data = dat,subset=dat$cats==1)
预测每个子集的狼数。
f0_predict = predict(f0,data = dat,subset=dat$cats==1,type='response')
f1_predict = predict(f1,data = dat,subset=dat$cats==0,type='response')
然后(再次,根据 2015 年的帖子)我将数据按 cat 变量拆分。
dat.l = split(dat, dat$cats)
dat.l
...这里有点棘手。 2015 年的帖子建议使用 lapply 将两组预测附加到数据集。但是,在这里,受访者的函数不起作用,因为它假设两个回归方程基本相同。这是我的尝试(接近原版,只是稍作调整):
dat.l = lapply(dat.l, function(x){
mod =
ifelse(dat$cats==0,lm(wolfs~snakes,data=x),lm(wolfs~snakes+trees,data=x))
x$full_prediction = predict(mod,data=x,type='response')
return(x)
})
unsplit(dat.l, dat$cats)
关于最后几个步骤的任何想法?我对 S.O. 还是比较陌生,并且是 R 的中间人,所以如果我没有按照社区的喜好准确发布,请慢慢走。
【问题讨论】:
标签: r dataframe subset prediction