glm模型数据集总结

时间:2014-02-07 12:23:52

标签: r glm stat s

第一篇文章,所以放轻松。

在GLMing的保险领域,经典的方法是对索赔频率和平均严重程度进行建模。考虑到这一点,我构建了几个模型来为自己进行实验,现在有一个问题。

有人可以解释一下GLM如何处理不同级别的数据集摘要,特别是在错误估计方面?

考虑以下示例。数据显示两个变量的强烈严重性趋势:    - A比B更贵    - 福特>起亚> Vaux> JAG

我将模型拟合到数据集的未经编辑和汇总版本,因此GLM在两种情况下都适用相同的参数

然而,GLM表明了对未经证实的数据的拟合模型。但是当我总结并使用加权平均值,即平均严重程度时,模型很难适应。也许这就像你期望的那样,在所有未经证实的数据都有更多的模型要点之后。此外,似乎加权均值用于表示RELATIVE强度,因此在这里,指定加权均值是没有意义的,因为它们都是相同的权重。

但更有趣的是,我不能用GLM模拟平均严重程度吗?我的意思是,我知道将GLM拟合到一个未经证实的数据集的结果将是一个平均严重程度,但我希望将模型拟合到已经汇总的数据。似乎对聚合数据集进行建模不会给出模型拟合的真实指示。

道歉,如果这是一个愚蠢的问题,我不是统计学家,所以不要完全理解Hessian矩阵。

请参阅以下代码:

library(boot) 
library(reshape) 

dataset <- data.frame(
  Person = rep(c("A", "B"), each=200), 
  Car = rep(c("Ford", "Kia", "Vaux", "Jag"), 2, each=50),
  Amount = c(rgamma(50, 200), rgamma(50, 180), rgamma(50, 160), rgamma(50, 140), 
         rgamma(50, 100), rgamma(50, 80), rgamma(50, 60), rgamma(50, 40))
)

Agg1 <- ddply(dataset, .(Person, Car), summarise, mean=mean(Amount), length=length(Amount))

m1 <- glm(Amount ~ Person + Car, data = dataset, family = Gamma(link="log")) 
m2 <- glm(mean ~ Person + Car, data = Agg1, family = Gamma(link="log"), weights=length) 

summary(m1)
summary(m2)

谢谢,

尼克

1 个答案:

答案 0 :(得分:0)

底线是两个模型都是相同的 - 聚合模型“非常适合”的原因完全是由于聚合导致的自由度降低。

在了解模型相同的原因之前,我应该指出,这并不一定意味着任何一种模型都是合适的。您应该对两者运行诊断,尤其是使用:

par(mfrow=c(2,2))
plot(m1)

当你这样做时。你会看到残差是正态分布的(这是必不可少的),但它们遵循的模式( - ,+, - ),这是令人不安的。在宣布这是一个很好的模型之前,我想了解这一点。 [不可否认,这是由数据组成,但原则仍适用。]

比较聚合模型和基础模型,查看系数的值。

coef.m1 <- summary(m1)$coefficients
coef.m2 <- summary(m2)$coefficients
cbind(coef.m1[,1],coef.m2[,1])
#                   [,1]       [,2]
# (Intercept)  5.4096980  5.4096976
# PersonB     -0.9249371 -0.9249366
# CarJag      -0.6144606 -0.6144602
# CarKia      -0.1786556 -0.1786555
# CarVaux     -0.3597925 -0.3597923

您认为聚合模型“更差”的原因是因为p值,但这些取决于t = coeff/sem1m2中se的比率对于所有系数都是相同的:

coef.m2[,2]/coef.m1[,2]
# (Intercept)     PersonB      CarJag      CarKia     CarVaux 
#    7.836171    7.836171    7.836171    7.836171    7.836171 

  

se~sd /√df

两个模型的se的比率应为约

  

se m1 / se m2 =√((n m1 -1)/(n m2 - 1))

sqrt((nrow(dataset)-1)/(nrow(Agg1)-1))
# [1] 7.549834

坦率地说,我很困惑为什么这个比例不完全等于7.55。

换句话说,glm(...)无法知道您汇总了数据。它认为你正在尝试使用4个参数和8个数据点的截距来拟合模型。