我注意到,使用MASS::glm.nb
而不是library(MASS)
然后使用glm.nb
会得到不同的结果。我认为package::function()
是避免名称空间冲突(在同一脚本中使用的不同包中具有相同名称的函数)的好方法,并且结果将等效于library(package)
和{{1} }。
有人可以解释为什么这些选择导致不同的结果吗?这是与MASS有关的特定问题,还是我们可以期望其他软件包具有类似的行为?
function
此外,第一个版本不能用观星者打印,而第二个版本可以。
fm_nb_1 <- MASS::glm.nb(mpg ~ cyl+hp, data = mtcars)
library(MASS)
fm_nb_2 <- glm.nb(mpg ~ cyl+hp, data = mtcars)
identical(fm_nb_1,fm_nb_2)
[1] FALSE
这给出了:stargazer::stargazer(
fm_nb_1
, type = "text"
)
但是,这给出了很好的输出:
% Error: Unrecognized object type.
输出:
stargazer::stargazer(
fm_nb_2
, type = "text"
)
答案 0 :(得分:2)
如果您使用all.equal(fm_nb_1, fm_nb_2)
,则会得到:
[1] "Component “call”: target, current do not match when deparsed"
检查对象时,您会看到调用是不同的:
Call: MASS::glm.nb(formula = mpg ~ cyl + hp, data = mtcars, init.theta = 894228.647,
link = log)
和
Call: glm.nb(formula = mpg ~ cyl + hp, data = mtcars, init.theta = 894228.647,
link = log)
否则,模型是相同的:
anova(fm_nb_1, fm_nb_2)
Likelihood ratio tests of Negative Binomial Models
Response: mpg
Model theta Resid. df 2 x log-lik. Test df LR stat. Pr(Chi)
1 cyl + hp 894228.6 29 -166.5738
2 cyl + hp 894228.6 29 -166.5738 1 vs 2 0 0 1
答案 1 :(得分:1)
唯一的区别是fm_nb_1$call
和fm_nb_2$call
,前者出现后缀MASS::
。 stargazer
似乎有问题,而texreg::screenreg
却没有。尝试texreg::screenreg(fm_nb_1)
。或尝试fm_nb_1$call <- fm_nb_2$call
,然后再尝试stargazer
。