对于我收集的计数数据,我使用泊松回归来构建模型。我使用glm
R 中的函数来执行此操作,我在其中使用family = "poisson"
. 为了评估可能的模型(我有几个预测变量),我使用 AIC。到现在为止还挺好。现在我想执行交叉验证。我已经使用包中的cv.glm
函数成功地做到了这一点boot
。从我看到的文档中cv.glm
,例如对于二项式数据,您需要使用特定的成本函数来获得有意义的预测误差。但是,我还不知道什么成本函数适用于family = poisson
,并且广泛的谷歌搜索没有产生任何具体的结果。cv.glm
我的问题是,在泊松 glm 的情况下,任何人都可以了解哪种成本函数适合。
验证泊松回归模型的成本函数
假设在您的特定情况下没有什么特别的,我认为使用默认值(均方误差)或使用日志误差的平均值,甚至卡方误差都有一个很好的论据。
成本函数的目的是表达你对错误预测的“不安”程度,特别是“错误”最困扰你的地方。这对于二元响应尤其重要,但在任何情况下都很重要。
均方误差(响应)
使用 MSE,您对上下误差同样敏感,对大小预测同样敏感。这是一件非常标准的事情,所以我认为在大多数情况下不会被反对。
均方误差(日志响应)
因为您正在使用计数数据,所以可以说您不是对称的,也不是大小无关的。预测 10 与预测 1000 相差 10 分。这是一个有点“规范”的成本函数,因为您已将成本与链接函数相匹配。这确保了成本与模型中假设的方差分布相匹配。
卡方误差
第三种方法是使用卡方误差。如果您将 GLM 与其他基于计数的模型进行比较,这可能特别有吸引力 - 特别是如果您的 GLM 中有因素。与错误日志响应类似,这将随大小缩放,但它围绕预测计数对称。您现在正在根据百分比误差评估拟合优度。
关于离散性
该问题引用了文档示例,其中它们具有二进制响应变量,因此请使用不同的成本函数。二进制响应的问题是 GLM 将预测一个介于 0 和 1 之间的实数,即使响应始终恰好是 0 或 1。完全正确地说该数字越接近正确响应越好预测,但通常人们不希望这样。推理是,人们必须经常将其视为 0 或 1,因此将任何小于 0.5 的值作为对 0 的预测。在这种情况下,简单地计算“错误”预测的数量是有意义的。这里的论点是,对于一个真/假问题,你只能是对或错 - 没有错误的等级。
在您的情况下,您有计数数据。在这里,接受与响应不同支持的预测更为常见。例如,预测每个家庭有 2.4 个孩子,或每年有 9.7 人死亡。通常人们不会尝试对此做任何事情,因为这不是“正确”或“错误”,而是尽可能接近。如果你真的必须有一个整数的预测,也许是因为你的计数率非常低,那么你没有理由不能先对预测进行四舍五入并计算“整数”或错误。在这种情况下,上面的三个表达式仍然适用,但您只需舍入即可。