首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么使用库(MASS)与使用MASS::时会得到不同的结果?

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

Stack Overflow用户
提问于 2019-10-21 17:33:32
回答 2查看 151关注 0票数 1

我注意到,与library(MASS)glm.nb相比,使用MASS::glm.nb会得到不同的结果。我认为package::function()将是避免名称空间冲突(在同一脚本中使用的不同包中具有相同名称的函数)的好方法,并且其结果将等同于library(package)function

谁能给我解释一下为什么这些选项会导致不同的结果?这是一个与MASS有关的特殊问题,还是我们可以期望在其他包中出现类似的行为?

代码语言:javascript
运行
复制
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打印,而第二个版本可以。

代码语言:javascript
运行
复制
stargazer::stargazer(
  fm_nb_1
  , type = "text"
)

这给出了:% Error: Unrecognized object type.

然而,这给出了一个很好的输出:

代码语言:javascript
运行
复制
stargazer::stargazer(
  fm_nb_2
  , type = "text"
)

输出:

代码语言:javascript
运行
复制
==============================================
                      Dependent variable:     
                  ----------------------------
                              mpg             
----------------------------------------------
cyl                         -0.102**          
                            (0.043)           

hp                           -0.001           
                            (0.001)           

Constant                    3.790***          
                            (0.146)           

----------------------------------------------
Observations                   32             
Log Likelihood              -84.287           
theta             894,228.600 (23,863,364.000)
Akaike Inf. Crit.           174.574           
==============================================
Note:              *p<0.1; **p<0.05; ***p<0.01
EN

回答 2

Stack Overflow用户

发布于 2019-10-21 17:42:42

如果你使用all.equal(fm_nb_1, fm_nb_2),你会得到:

代码语言:javascript
运行
复制
[1] "Component “call”: target, current do not match when deparsed"

当您检查对象时,您可以看到调用是不同的:

代码语言:javascript
运行
复制
Call:  MASS::glm.nb(formula = mpg ~ cyl + hp, data = mtcars, init.theta = 894228.647, 
    link = log)

代码语言:javascript
运行
复制
Call:  glm.nb(formula = mpg ~ cyl + hp, data = mtcars, init.theta = 894228.647, 
    link = log)

否则,模型是相同的:

代码语言:javascript
运行
复制
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
票数 3
EN

Stack Overflow用户

发布于 2019-10-21 17:51:50

唯一的区别是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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58483517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档