首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何应用模型来预测和追加数据中每个观察的结果?

如何应用模型来预测和追加数据中每个观察的结果?
EN

Stack Overflow用户
提问于 2017-02-26 09:51:08
回答 1查看 121关注 0票数 0

我是R(斯塔塔难民)的相对新手。

我有一个数据,它的观察是个别的人。我也有一个按年龄划分的养老金平衡模式。我想根据每个人的年龄(上个生日时的年龄)向他们提供预测的养老金余额。该模型的建立是为了平滑按年龄分列的养老金平衡的分组平均数据:

代码语言:javascript
复制
library(mgcv)
# Age bracket mid-points
x = seq(22, 62, 5)

# Male age-bracket super balance medians
y = c(6, 21, 42, 65, 75, 110, 137, 150, 230)

# Model the super as a function of age bracket
mod = gam(y ~ s(x, k = 8), family = Gamma(link = "log"))

# Predict the super balance for each age
pred = cbind(Age = 20:64, Super = predict(mod, data.frame(x = 20:64), "response"))

# Plot raw data and predictions for each year
plot(y ~ x, xlim = c(20, 64), ylim = c(0, 250), las = 1)
points(pred, col = "red")

我还有另一个数据,年龄,它有很多向量,其中之一就是年龄。我想要做的是在这个数据中加入一个新的向量,使用mod来根据年龄来预测个人的养老金平衡。例如,dataframe (不是我的真实数据):

代码语言:javascript
复制
age=data.frame(seq(25,51,2))

另一种选择是使用dataframe,并从适当的年龄行读取Super的相关值,并将其追加到age中。

不幸的是,我不知道怎么做这两件事。我认为一定有一种方法可以使用vapply()来对模型进行预测,但是无法让它工作。我还尝试了cbind():

代码语言:javascript
复制
cbind(age,y = predict(mod, newdata = age))

但是有个错误告诉我行数不匹配。任何帮助都很感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-26 10:29:38

您正在尝试将数据绑定到

代码语言:javascript
复制
cbind(age,y = predict(mod, newdata = age))

预测的输出是一个数组:

代码语言:javascript
复制
> class(predict(mod, data.frame(x = 20:64)))
[1] "array"

所以你需要使用如下的东西:

代码语言:javascript
复制
New <- data.frame(age=seq(25,51,2))

pred <-  cbind(Age = New$age, newdata = predict(mod, data.frame(x = New$age), "response"))

代码语言:javascript
复制
pred <-  cbind(Age = seq(25,51,2), newdata = predict(mod, data.frame(x=seq(25,51,2)), "response"))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42466983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档