第一篇文章,所以放轻松。
在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)
谢谢,
尼克
答案 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/se
。 m1
与m2
中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个数据点的截距来拟合模型。