我根据泊松Poisson回归、GAM样条曲线模型对一个十字路口的骑自行车者的数量进行预测,
str(base) 'data.frame': 214 obs. $ 日期 : chr "1-Apr" "2-Apr" "3-Apr7" "4-Apr" ... $ 最高温度 : num 46 62.1 63 51.1 63 48.9 48 55.9 66 73.9 ... $ 最低温度 : num 37 41 50 46 46 41 43 39.9 45 55 ... $ 降雨量 : num 0 0 0.03 1.18 0 0.73 0.01 0 0 0 ... $ 数量: int 606 2021 2470 723 2807 461 1222 1674 2375 3324 ... $ 温差 : num 9 21.1 13 5.1 17 7.9 5 16 21 18.9 ......
使用Poisson回归预测周日、周一有多少骑自行车的人,天气情况是温度85F-70F没有下雨。我们创建一个预测数据框。
newbase = data.frame(DAY=as.factor( 最高温度=c(85,85),最低温度=c(70,70, 降雨量=c(0,0))
让我们创建一个包含所有解释变量的模型。
我们还添加一个虚拟变量来指示不下雨的日子,
summary(reg) Coefficients: Estimate Std. Error z value Pr(|z|) (Intercept) 6.8844970 0.0110463 623.241 2e-16 *** 最高温度 0.0210950 0.0003133 67.328 2e-16 *** 最低温度 -0.0114006 0.0003351 -34.024 2e-16 *** 降雨量 -0.6570450 0.0071899 -91.384 2e-16 *** I(降雨量 == 0)TRUE 0.1303908 0.0033283 39.176 2e-16 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 (Dispersion parameter for poisson family taken to be 1) Null deviance: 70021 on 213 degrees of freedom Residual deviance: 26493 on 203 degrees of freedom AIC: 28580 Number of Fisher Scoring iterations: 4
所以变量似乎都显著。如果我们要检查非线性效应,可以将样条曲线放在所有连续变量上
gam(数量~bs(最高温度)+bs(最低温度)+bs(降雨量)+I(降雨量==0),poisson
最高温度或最低温度
以及下面的降雨量曲线,最大观测值(3)与之前观测值(1.8)之间的线性平滑
我们还可以回归最小温度,以及最大和最小温度之间的温差(在线性模型中,模型是等效的,但是通过非线性变换,可以更简单地给出差异)
现在,我们可以比较这四个模型及其预测。例如,对于线性模型(虚拟变量表示没有下雨),
predict(reg,newdata=newbase,type="response se.fit=TRUE
对于星期一,我们获得λ的95%置信区间
P$fit[1]+c(-2,2)*P$se.fit[1] [1] 3349.842 3401.395
对于星期日,95%置信区间为
[1] 2987.497 3033.861
我们可以可视化四个模型的置信区间
而周日,我们有
换句话说,通过更改模型,我们对预测的置信区间进行了更改(有时区间完全不相交)。