2

我试图从我用 Zelig 运行的有序概率模型中提取一阶差异的平均值。如果我只是调用 sim() 函数创建的对象的名称,我会打印出 DV 采用的每个值的平均值。我试图在 Rmarkdown 中引用这些值,所以我想以编程方式调用它们,而不仅仅是从打印输出中复制。

因此,在下面的示例中,我希望能够将每个值的“fd”的平均值称为 1:4。

感谢您提供的任何帮助!

编辑:添加可重现的示例。

    library(zeligverse)
    library(dplyr)
    data(sanction)

    simulation_out <- zelig(factor(cost) ~ mil+coop, model="oprobit",data=sanction) %>% setx(z.out, coop = 1) %>%  setx1(z.out, coop = 4) %>% sim() 
    summary(simulation_out)
4

1 回答 1

2

好的。看起来您可以使用

colMeans(simulation_out$sim.out$x1$fd[[1]])

我通过追踪是什么发现了这sumamry()一点。我跑了

class(simulation_out)

看到我们有一个 S4 对象,然后尝试使用

selectMethod("summary", "Zelig-oprobit")

这表明它会调用$summzarize自己。看着那个功能

 simulation_out$summarize

我们看到它show()从它的环境中调用了一个函数。我们可以用

get("show", environment(simulation_out$summarize))

fd信息似乎来自pstat(.self$sim.out$x1, "sim x1")运行的线路print(stat(.self$sim.out$x1$fd, .self$num))。该stat()函数调用一个statmat()计算平均值和分位数的函数。在这里,我们只是用来colMean为我们做的工作。

于 2017-12-14T19:18:37.400 回答