拟合负二项式模型

时间:2018-10-19 02:05:45

标签: r statistics regression poisson

我正在为以下模型运行负二项式模型。复制本文Association Between Gun Law Reforms

中表3的结果

di = ln(ni)+β00+β10yeari + ei,i = 1997,…,2013

其中,d =原始死亡率,n =处于危险状态的人年和年为1997年至2013年。

以上模型用于估计趋势(以相对 (1997-2013)期间死亡人数的年死亡率变化

如何在R中适合此模型。有关R中语法的任何建议。 也有人可以解释什么是β00和β10?我应该如何选择这些值?

下面是我的数据框中的值

Cons(2, _)

下面是我的值dput(dataframe)

Nil

我计算出avgsuicidegun的基本年使用量为(suicidegun * 100000)/ personyearsatrisk,平均每年有100,000人。

avgsum是avgsuicidegun和avghomocidegun的总和

下图显示了每年枪支平均死亡率趋势。此图中请参考1997年至2013年的趋势线:

Fire Arms Mean Rate

我正在尝试找到涉及FireArms的死亡人数/每100000人口(95%CI)的年死亡率的趋势估计值

2 个答案:

答案 0 :(得分:1)

我同意@Grubbmeister的观点,您对模型的描述看起来很奇怪。可能应该是:

enter image description here

要适合此模型:

## compute total gun deaths per year
gundata <- transform(gundata, guntotal=suicidegun+homocidegun)
library(MASS)
g1 <- glm.nb(guntotal ~ 1 + year + offset(log(personyearsatrisk)),
       data=gundata)

要提取所需的系数:

coef(g1)  
coef(summary(g1))
1-exp(coef(g1)["year"])  ## 0.04903379

“年”系数为-0.05027,这意味着枪支死亡人数以每年5%的速度减少;通过上面的计算可以得出更精确的值(即每年减少4.9%)。

我仅快速浏览了您链接的论文,但此处的系数(exp(coef(g1)["year"]))似乎与他们为1997-2013年期间趋势所引用的0.951值相符(这是预期的乘性在一年内枪支死亡率下降;负二项式模型使用对数链接函数)。

答案 1 :(得分:0)

我不太了解如何对已对数转换的预测变量使用负二项式分布,因为它是为整数数据设计的。

无论如何...我们将继续努力。我还没有进行任何日志转换,但是要做到这一点,请将@RequestMapping(value = "/multiAnswer", method = RequestMethod.POST) public Response submitAnswer(SubmitMultiAnswerRq rq) { return service.submitAnswer(rq); } public class SubmitMultiAnswerRq { private List<SubmitAnswerRq> answers; //getter and setter } 放在必须转换的变量周围。

您还应该提供以下代码行:

log()

您要求的beta是最终模型中的常数,您可以通过以下方式获取它:

death$avgsum<-((death$homocidegun+death$suicidegun)/death$personyearsatrisk)*100000

    install.packages("MASS")
    library("MASS")
    mod<-glm.nb(avgsum~year, data= death)
    #to check the residuals
    plot(mod)



#However, I don't think a negative binomial distribution works with this data, so I'd just use a simple linear regression instead:

mod1<-lm(avgsum~year, data= death)

要获取负二项式模型的R2值:

summary(mod)