r - 二项式,二项式()和 'binomial'之间的区别

标签 r

使用 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/

相关文章:

r - R中如何拆分英文字母、数字和汉字?

r - 使用 gsub 和 stringr 进行解析

r - group_rows()命令中换行时的缩进 - R markdown 中的 kableExtra 包

r - 而 TRUE + 进入子环境

r - 在 R 中执行时间序列的 fft

html - 将本地 HTML 文件读入 R

R+ Shiny 哪个锤子?直 Shiny 、柔性仪表板还是 Shiny 仪表板?

将数字四舍五入到最接近的数字,所有数字都等于零,但第一个数字

r - 转换数据集(相似性评级)

r - lmPerm P 值因系数阶数而异