为什么在使用library(MASS)与MASS ::时会得到不同的结果?

时间:2019-10-21 09:33:32

标签: r function-call

我注意到,使用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"
)

2 个答案:

答案 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$callfm_nb_2$call,前者出现后缀MASS::stargazer似乎有问题,而texreg::screenreg却没有。尝试texreg::screenreg(fm_nb_1)。或尝试fm_nb_1$call <- fm_nb_2$call,然后再尝试stargazer