我正在尝试根据收集的历史数据预测网站的访问者数量。我认为这是我可以使用泊松回归的情况。
输入包含6列:
id(网站的ID),日,月,年,星期几,访问次数。
基本上作为输入,我们有一个CSV格式的列:" 2"," 22"," 7"," 2015&# 34;," 6"," 751"。
我正在尝试根据之前的访问次数预测访问次数。网站的大小可能会有所不同,所以我最终将它们划分为5个类别
所以我创建了一个名为type的第7列,其范围是1到5。
我的代码如下:
train = read.csv("train.csv", header = TRUE)
model<-glm(visits ~ type + day + month + year + dayofweek, train, family=poisson)
summary(model)
P = predict(model, newdata = train)
imp = round(P)
imp
预测的值甚至不接近,我教导我可能会得到10-20%的实际值,但未能这样做,预测的大多数值比实际值大200-300% 。这是火车数据集,应提供乐观的观点。
我是R的新手,在解释summary命令返回的数据时遇到了一些问题。这就是它的回报:
致电:glm(公式=访问〜类型+日+月+年+周日, family = poisson,data = train)
Deviance Residuals: Min 1Q Median 3Q Max
-571.05 -44.04 -11.33 -5.14 734.43系数:
Estimate Std. Error z value Pr(>|z|) (Intercept) -9.998e+02 6.810e-01 -1468.19 <2e-16 *** type 2.368e+00 1.280e-04 18498.53 <2e-16 *** day -2.473e-04 6.273e-06 -39.42 <2e-16 *** month 1.658e-02 3.474e-05 477.31 <2e-16 *** year 4.963e-01 3.378e-04 1469.31 <2e-16 *** dayofweek -3.783e-02 2.621e-05 -1443.46 <2e-16 ***
--- Signif。代码:0' '0.001' '0.01''0.05'。'0.1''1
(泊松族的分散参数为1)
Null deviance:1239161821在12370自由度上残留 偏差:157095033,关于12365自由度AIC:157176273
Fisher评分迭代次数:5
任何人都可以更详细地描述摘要命令返回的值以及它们在泊松回归中应该是什么样子,它会输出更好的预测? R中是否有更好的方法来处理基于随时间推移估计值的演变的数据?
答案 0 :(得分:4)
问题在于predict
命令。 predict.glm
中的默认值是对链接比例进行预测。如果您想要直接与原始数据进行比较的预测,则需要使用参数type = "response"
P <- predict(model, newdata = train, type = "response")
模型设置不理想。也许月份应作为分类变量(as.factor
)包含在内,您需要更多地考虑日(月的第31天,然后是下个月的第1天)。预测器“类型”也是可疑的,因为类型直接来自响应。
您的模型也高度分散。这可能表明缺少预测因子或其他问题。
您还应该考虑使用混合效果模型。