我是R(斯塔塔难民)的相对新手。
我有一个数据,它的观察是个别的人。我也有一个按年龄划分的养老金平衡模式。我想根据每个人的年龄(上个生日时的年龄)向他们提供预测的养老金余额。该模型的建立是为了平滑按年龄分列的养老金平衡的分组平均数据:
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 (不是我的真实数据):
age=data.frame(seq(25,51,2))另一种选择是使用dataframe,并从适当的年龄行读取Super的相关值,并将其追加到age中。
不幸的是,我不知道怎么做这两件事。我认为一定有一种方法可以使用vapply()来对模型进行预测,但是无法让它工作。我还尝试了cbind():
cbind(age,y = predict(mod, newdata = age))但是有个错误告诉我行数不匹配。任何帮助都很感激。
发布于 2017-02-26 10:29:38
您正在尝试将数据绑定到
cbind(age,y = predict(mod, newdata = age))预测的输出是一个数组:
> class(predict(mod, data.frame(x = 20:64)))
[1] "array"所以你需要使用如下的东西:
New <- data.frame(age=seq(25,51,2))
pred <- cbind(Age = New$age, newdata = predict(mod, data.frame(x = New$age), "response"))或
pred <- cbind(Age = seq(25,51,2), newdata = predict(mod, data.frame(x=seq(25,51,2)), "response"))https://stackoverflow.com/questions/42466983
复制相似问题