4

如果我这样做,我会得到两个系数(截距和年份)

data <- data.frame(accidents=c(3,1,5,0,2,3,4), year=1:7)
glm(accidents ~ year, family=poisson(link = log), data)

Coefficients:
(Intercept)         year  
     0.7155       0.0557

但正确答案是 0.944

data <-data.frame(accidents=c(3,1,5,0,2,3,4))
glm(accidents ~ ., family=poisson(link=log), data)

Coefficients:
(Intercept)  
  0.944 

有没有办法为响应变量指定 glm 公式?如果我对第一个数据框使用第二个公式,我会得到错误的答案,因为“。” 还包括“年”。在第二个数据框中,我在作弊,因为只有一列。

4

1 回答 1

11

这是您正在寻找的咒语:

glm(accidents ~ 1, family=poisson(link = log), data)

将它与您的原始数据框一起使用:

data <- data.frame(accidents=c(3,1,5,0,2,3,4), year=1:7)
coef(glm(accidents ~ 1, family=poisson(link = log), data))
(Intercept) 
  0.9444616 

此外,正如 Ben Bolker 所提到的,R 附带的 R 简介文档包括一个关于公式接口语法的内容丰富的部分

于 2012-01-29T23:55:27.463 回答