我试图预测2018年使用Poisson GLM训练数据集的情况
我有以下数据
Year Gender Total_Apprentices
1 2012 Female 278290
2 2012 Male 230330
3 2013 Female 231645
4 2013 Male 205521
5 2014 Female 264554
6 2014 Male 233830
7 2015 Female 268593
8 2015 Male 239739
9 2016 Female 264350
10 2016 Male 230532
11 2017 Female 184237
12 2017 Male 191524
这是我编写的代码
library("xlsx")
library("tidyverse")
setwd("folder location")
getwd()
# Loading
# xlsx files using xlsx library
f_path <- "filename.xlsx"
my_data <- read.xlsx(f_path, 1, header=TRUE)
plot(my_data)
model1 <- glm(my_data$Total ~ my_data$Year+my_data$Gender,my_data, family= poisson)
summary(model1)
pois.pred <- predict(model1, type="response")
my_data
pois.pred
我将如何预测2018年
我尝试了下面的代码,但不起作用
n_data=data.frame(Year=2018,Gender="Male")
predict(model1, newdata=n_data, type="response")
我得到与此代码完全相同的输出
pois.pred <- predict(model1, type="response")
这基本上是在预测我从2012年到2017年的观测值,并且有一条消息
警告信息: 'newdata'有1行,但是找到的变量有12行
答案 0 :(得分:1)
问题出在glm
调用而不是predict
调用。如果在公式中传递数据,则将无法为模型提供新数据进行预测,因为变量将被称为my_data $ Year等。
模型对象,而不是Year and Gender。
如果将呼叫更改为:
glm(Total_Apprentices ~ Year+Gender,
data = my_data, family= poisson)
然后对新数据进行预测