如何在R中使用二项分布为这些数据拟合GLM?

时间:2017-09-05 04:58:55

标签: r

我被要求使用二项分布拟合GLM以解决以下问题:

进行了一项调查,以评估在当地社区实施的新型犬咳嗽疫苗的有效性。出于营销目的,疫苗是在两周内免费提供给那些希望带狗利用的人。有些狗接受了两次射击,一些只出现在第一次射击,有些则没有。在随后的会议中对600名当地狗主人进行的调查提供了下表中显示的信息。 enter image description here

如何将数据输入R以获得适合二项式符号的GLM的正确格式?

任何帮助都会很棒!

1 个答案:

答案 0 :(得分:3)

一种合适的方式是:

vaccine <- c(rep(c(0,1,2),c(12,4,8)),rep(c(0,1,2),c(175,61,340)))
cough <- c(rep(1,12+4+8),rep(0,175+61+340))

然后你可以这样做:

linfit <- glm(cough~vaccine,family=binomial)
summary(linfit)

factorfit <- glm(cough~as.factor(vaccine),family=binomial)
summary(factorfit)

ordfactorfit <- glm(cough~ordered(vaccine),family=binomial)
summary(ordfactorfit)

或者其他一些可能性,取决于您的特定假设。

这不是唯一的方法(并且您可能不希望使用非常大的数据集),但以这种方式“解开”会让事情变得简单。您可以轻松地重新填充(table(data.frame(cough=cough,vaccine=vaccine)))。

您可能还会发现签名的root-contribution-to-chi-square有趣:

 t=table(data.frame(cough=cough,vaccine=vaccine))
 r=rowSums(t)
 c=colSums(t)
 ex=outer(r,c)/sum(t)
 print((t-ex)/sqrt(ex),d=3)
     vaccine
cough      0      1      2
    0 -0.337 -0.177  0.324
    1  1.653  0.868 -1.587

这些解释有点类似于标准化残差。

No s对抗疫苗的比例(标有$ \ pm $ 1标准误差)同样有用。