R:是否可以在拟合模型周围绘制数据?

时间:2014-01-27 18:14:22

标签: r statistics usage-statistics

我作为正在实施新计划的销售组织的一部分工作。从本质上讲,我们正在测试向潜在客户发送电子邮件是否更有可能出现并查看我们产品的“演示”。我的数据包含大约26,000个与潜在客户交互的观察结果,其中一些已经发送了“演示提醒”(发送电子邮件的条款),而另一些则没有。每行数据还有一些列进一步分解数据(呼叫多长时间?销售人员拨打了多少电话?成功举行演示的呼叫结果是什么?等等)。

我使用数据在R中生成了一个广义线性模型,看起来非常合适。然后,使用没有发送提醒的数据,我绘制了一个预测图表,假设他们发送了一个会假设发生了什么。

以下是我的代码:

library(car)
library(ggplot2)

#data
demo.reminder.data <- read.csv("demo mo mixed aggregate raw.csv")

#model
demo.glm.final <- glm(Demos_Held ~ Rep_Channel + Demo_sent + Contacts + Opportunities + Vertical + Total_calls_bucket + Rep_Location, data = demo.reminder.data, family = binomial(link = "logit"))

#null model and goodness of fit
demo.null <- glm(Demos_Held ~ 1, data = demo.reminder.data, family = 'binomial')
AIC(demo.null)
AIC(demo.glm.final)

#data with no demo reminders
demo.reminder.data.none.sent <- demo.reminder.data
demo.reminder.data.none.sent$Demo_sent <- "No Demo Reminder"

#data with demo reminders
demo.reminder.data.all.sent <- demo.reminder.data
demo.reminder.data.all.sent$Demo_sent <- "Demo Reminder"


#predict probability of hold with no reminder
demo.reminder.data$none.sent.pred <- predict(demo.glm.final, newdata=demo.reminder.data.none.sent, type="response")

#predict probability of hold with reminder
demo.reminder.data$all.sent.pred <- predict(demo.glm.final, newdata=demo.reminder.data.all.sent, type="response")


demo.reminder.data$abs.lift.pred <- demo.reminder.data$all.sent.pred - demo.reminder.data$none.sent.pred

#plot 1
qplot(none.sent.pred, abs.lift.pred, data=demo.reminder.data) + xlab("Probability of Hold - No Reminder") + ylab("Increase in Probability With Reminder") + ggtitle("Effect of Demo Reminders")

#plot 2
qplot(demo.reminder.data$none.sent.pred, demo.reminder.data$all.sent.pred, data = demo.reminder.data)+ xlab("Probability of Hold - No Reminder") + ylab("Increase in Probability With Reminder") + ggtitle("Effect of Demo Reminders")

问题/问题:当我绘制此数据时,它看起来 way 太完美了。它基本上表明,对于初始可能性低于25%的任何东西,出现在演示中的可能性增加了65%,而我的直觉告诉我,一封电子邮件没有这种能力。我怀疑问题在于我只是将点数绘制到拟合的模型上,这就是为什么我看到这个完美的对数曲线(会附上图片,但鉴于这是我的第一篇文章,我的声誉不够高)。我想,实际数据会更加分散,曲线下面的点数更多(曲线上方的一些点)。

我有没有办法在模型周围绘制以显示实际上会是什么样子?

更重要的是,我想,这种方法是否正确?我相信它是,但我可能会遗漏一些非常明显的东西。

提前致谢!

编辑:获得足够的积分来发布情节图片 Plot 1

1 个答案:

答案 0 :(得分:2)

除非您提供至少一个(代表性的)数据样本,否则您一定会得到模糊的回答。像这样......

首先,你将所有东西加上厨房水槽扔进你的模型,所以它可能是过度指定的。您是否运行summary(demo.glm.final)以查看哪个参数有p<0.05?你看过合适的统计数据吗?特别是,使用:

plot(demo.glm.final)

这将显示残差是否正常分配,以及是否存在杠杆率非常高的情况。

第二,你在stepAIC(...)上运行demo.glm.final了吗?这将删除不重要的参数。

第三,您将完整数据集与人工设置为Demo_sent的{​​{1}}与人工设置为"Demo Reminder"的{​​{1}}的完整数据集进行比较。更好的比较可能只是查看那些没有发送提醒的记录,并预测仅在这些情况下发送提醒的效果:

Demo_sent