使用 glm 时,binomial、binomial() 和 'binomial' 之间有什么区别。它们并不相同,如以下代码所示:
> library(MASS)
> bwdf = birthwt[-10]
> mod = glm(low~., data=bwdf, family=binomial)
> mod2 = glm(low~., data=bwdf, family=binomial())
> mod3 = glm(low~., data=bwdf, family="binomial")
> identical(mod, mod2)
[1] FALSE
> identical(mod3, mod2)
[1] FALSE
> identical(mod3, mod)
[1] FALSE
但值是相同的:
> mod
Call: glm(formula = low ~ ., family = binomial, data = bwdf)
Coefficients:
(Intercept) age lwt race2 race3 smoke1 ptl ht1 ui1 ftv
0.48062 -0.02955 -0.01542 1.27226 0.88050 0.93885 0.54334 1.86330 0.76765 0.06530
Degrees of Freedom: 188 Total (i.e. Null); 179 Residual
Null Deviance: 234.7
Residual Deviance: 201.3 AIC: 221.3
>
> mod2
Call: glm(formula = low ~ ., family = binomial(), data = bwdf)
Coefficients:
(Intercept) age lwt race2 race3 smoke1 ptl ht1 ui1 ftv
0.48062 -0.02955 -0.01542 1.27226 0.88050 0.93885 0.54334 1.86330 0.76765 0.06530
Degrees of Freedom: 188 Total (i.e. Null); 179 Residual
Null Deviance: 234.7
Residual Deviance: 201.3 AIC: 221.3
>
> mod3
Call: glm(formula = low ~ ., family = "binomial", data = bwdf)
Coefficients:
(Intercept) age lwt race2 race3 smoke1 ptl ht1 ui1 ftv
0.48062 -0.02955 -0.01542 1.27226 0.88050 0.93885 0.54334 1.86330 0.76765 0.06530
Degrees of Freedom: 188 Total (i.e. Null); 179 Residual
Null Deviance: 234.7
Residual Deviance: 201.3 AIC: 221.3
有什么区别吗?
最佳答案
请记住,identical
函数非常挑剔,mod
对象的那部分是用于创建对象的调用。该 call
部分将根据括号和引号而有所不同,因此 identical
会说它们不同。尝试对您关心的 mod 对象的片段调用 identical
,看看它们是否相同。
如果你看一下 glm
代码的前几行,你会发现它检查了 family
参数,如果它是一个字符串,那么它使用get
“获取”那个名字的函数。如果 family
是一个函数(传入或作为 get
的结果),则它会调用该函数。因此,无论您将名称作为字符串、函数还是函数的评估结果传入,在代码的第一部分之后,您将在 family
中拥有完全相同的内容,因此相同结果(但 call
会有所不同)。
关于r - 二项式,二项式()和 'binomial'之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30128300/