验证Poisson回归模型的成本函数


11

对于我收集的计数数据,我使用泊松回归来构建模型。我使用glmR中的函数来执行此操作family = "poisson"。为了评估可能的模型(我有几个预测变量),我使用了AIC。到目前为止,一切都很好。现在,我要执行交叉验证。我已经使用包中的cv.glm函数成功完成了此操作boot。从我的文档中可以cv.glm看到,例如对于二项式数据,您需要使用特定的成本函数来获得有意义的预测误差。但是,我还不知道哪种成本函数适用于family = poisson,并且广泛的Google搜索没有产生任何特定的结果。我的问题是,任何人都需要弄清楚哪种成本函数适用cv.glm于Poisson glm。


1
该功能cv.glmnet在包装glmnet使用type.measure="deviance"的泊松家庭。
rcs 2013年

严格来说,文档显示对二进制数据使用特定的成本函数是有意义的。
Corone 2013年

@corone不是连续数据,也不是二进制数据。因此,我一直在寻找适合于计数数据的成本函数。
保罗Hiemstra

1
我认为这里的数据离散性不会有很大的不同,除非您的数量很少。问题在于数据的分布。对于二进制数据,预测是介于0和1之间的连续概率,但是响应始终是0或1。在他们的示例中,强制使成本为“正确”或“错误”,并计算正确与错误的次数。您是否特别担心连续性?我会以我的答案添加PS到地址的连贯性
Corone的

Answers:


12

假设在您的特定情况下没有什么特别的,我认为使用默认值(均方误差)或使用日志误差的​​均值,甚至使用卡方误差都是一个很好的论据。

成本函数的目的是表示您对错误的预测有多“烦恼”,特别是什么“错误”最困扰您。这对于二进制响应特别重要,但在任何情况下都可能很重要。

均方误差(响应)

C=1ni(YiY^i)2

使用MSE,您对上下误差均同样敏感,对大小预测也同样敏感。这是很标准的事情,因此我认为在大多数情况下不会皱眉。

均方误差(对数响应)

C=1ni(lnYilnY^i)2

因为您正在处理计数数据,所以可以说您不是对称的,也不是大小无关的。对于10的预测,以10计的计数与1000的预测相差很大。这是某种“规范的”成本函数,因为您已将成本与链接函数进行了匹配。这样可以确保成本与模型中假设的方差分布相匹配。

卡方误差

C=1ni(YiY^i)2Y^i

第三种方法是使用卡方误差。如果将GLM与其他基于计数的模型进行比较,这可能会特别有吸引力-尤其是在GLM中存在某些因素的情况下。与错误日志响应类似,这将随大小而定,但在预测计数周围是对称的。您现在正在根据百分比误差评估拟合优度。


论离散

该问题引用了文档示例,其中它们具有二进制响应变量,因此请使用其他成本函数。二进制响应的问题在于,即使响应始终精确地为0或1,GLM也会预测一个介于0和1之间的实数。完全正确的说法是,该数字越接近正确的响应就越好。预测,但通常人们不希望如此。这样做的理由是,一个人通常必须表现为0或1,因此将取小于0.5的任何值作为0的预测。在这种情况下,简单地计算“错误”的预测数是有道理的。这里的论点是,对于是非题,你只能是对是错—没有错的等级。

Y^


对于GLM,最好使用1 /方差权重使用加权均方误差(由R的glm输出的$ weights插槽给出,对于Poisson = 1 / E(Y))。我相信这适用于任何类型的GLM。
Tom Wenseleers
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.