二项式,二项式()和'二项式'之间有什么区别?当使用glm时。它们不完全相同,可以通过以下代码看出:
> 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
有什么不同吗?
答案 0 :(得分:5)
请记住,identical
函数非常挑剔,mod
个对象的一部分是用于创建对象的调用。 call
根据括号和引号会有所不同,因此identical
会说它们不同。尝试在你关心的mod对象上调用identical
,看看它们是否相同。
如果你查看glm
代码的前几行,你会看到它检查family
参数,如果它是一个字符串,那么它使用get
来“获得”该名称的功能。如果family
是一个函数(传入或作为get
的结果),则它调用该函数。因此,无论您将名称作为字符串,函数还是评估函数的结果传递,在代码的第1部分之后,您将在family
中具有完全相同的结果,因此结果相同(但是call
会有所不同。