我目前正在计算glm大型数据集的模型.两者glm甚至speedglm需要数天来计算.
我目前有大约3M观测值和总共400个变量,其中只有一些用于回归.在我的回归我使用4个整数独立变量(iv1,iv2,iv3,iv4),1个二进制独立变量作为因子(iv5),相互作用项(x * y其中x是整数并且y是一个二进制伪变量作为因子).最后,我有多年的固定效应ff1和公司ID ff2.我有15年和3000个公司.我通过添加它们作为因素来介绍固定效果.我观察到,尤其是3000公司固定效应使计算速度很慢stats glm,也speedglm.
因此,我决定尝试使用Microsoft R rxGlm(RevoScaleR),因为它可以解决更多线程和处理器内核问题.实际上,分析的速度要快得多.此外,我将子样本的结果与标准样本进行了比较,glm并将它们匹配.
我使用了以下功能:
mod1 <- rxGlm(formula = dv ~
iv1 + iv2 + iv3+
iv4 + iv5 +
x * y +
ff1 + ff2,
family = binomial(link = "probit"), data = dat,
dropFirst = TRUE, dropMain = FALSE, covCoef = …Run Code Online (Sandbox Code Playgroud) 我目前正在用 stargazer 准备一个回归结果表。在此,我还想展示 t 统计量。为此,我使用以下简化规范,如http://jakeruss.com/cheatsheets/stargazer.html#report-t-statistics-or-p-values-instead-of-standard-errors 中所示
stargazer(output, output2, type = "html",
report = "vc*t")
Run Code Online (Sandbox Code Playgroud)
结果表报告 t 统计量如下:
0.088
t = 5.822***
Run Code Online (Sandbox Code Playgroud)
现在我的问题是:每个模型和每个系数都重复“t =”。这在某种程度上是多余的,并降低了表格的可读性。
有没有办法只报告没有“t =”标签的 t-statistic 的值?只在括号中显示值会很棒。
谢谢!
我面临的问题是我无法指定线符号的形状(没有这个规范,代码工作正常):
在可重现格式的数据下方(它是放入数据框中的效果数据):
structure(list(varL = c(0, 1e+07, 2e+07, 3e+07, 4e+07,
0, 1e+07, 2e+07, 3e+07, 4e+07, 0, 1e+07, 2e+07, 3e+07, 4e+07,
0, 1e+07, 2e+07, 3e+07, 4e+07, 0, 1e+07, 2e+07, 3e+07, 4e+07,
0, 1e+07, 2e+07, 3e+07, 4e+07, 0, 1e+07, 2e+07, 3e+07, 4e+07,
0, 1e+07, 2e+07, 3e+07, 4e+07), varP = structure(c(1L,
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L,
4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 7L, 7L, 7L,
7L, …Run Code Online (Sandbox Code Playgroud) 我正在使用以下代码和数据来汇总值:
bvsubcount.subset %>%
group_by(bv.parentbvid) %>%
summarise_each(funs(sum), c(`2003`:`2005`)) -> bvsubcount.subset
Run Code Online (Sandbox Code Playgroud)
日期示例:
bvsubcount.subset <- setNames(data.frame(c("AT", "DE", "IT"), c("ID1", "ID1", "ID2"),1:3,5:7,3:5),
c("bv.sub.country.iso", "bv.parentbvid", 2003:2005))
Run Code Online (Sandbox Code Playgroud)
到目前为止,这工作正常,但最近我收到以下警告:
`summarise_each()` is deprecated.
Use `summarise_all()`, `summarise_at()` or `summarise_if()` instead.
To map `funs` over a selection of variables, use `summarise_at()`
Run Code Online (Sandbox Code Playgroud)
summarise_at但是,如果我使用以下代码,则会收到错误错误:
bvsubcount.subset %>%
group_by(bv.parentbvid) %>%
summarise_at(funs(sum), c(`2003`:`2005`)) -> bvsubcount.subset
.vars` must be a character/numeric vector or a `vars()` object, not list
Run Code Online (Sandbox Code Playgroud)
如何使用新的汇总函数来避免警告并仍然使用类似的代码结构?
我面临以下问题.我有一份并购交易清单,每笔交易都包括(1)收单方,(2)供应商,(3)目标的数据.数据的结构关系可以是n:n:n,看起来类似于以下内容:
dealid acquirer target vendor
1 FirmA FirmB FirmC
1 FirmD FirmE
2 .....................
Run Code Online (Sandbox Code Playgroud)
所以问题在于交易中的行本身没有意义,因此,例如,FirmD也是FirmB的共同收购者.
我现在需要在每个dealid中创建所有可能的acquirer -target-vendor组合.我已经设法使用该expand.grid功能或简单地通过扩展网格merge.但是,我不知道如何扩展组内所有可能组合的网格.
我正在使用我的笔记本电脑和云设施处理数据集。我只想在云上工作时计算一些“计算量大”的代码块。
到目前为止,我选择了一种不太优雅的方式来做到这一点。我已经##OPT##为我只想在云中执行的段添加了前缀。然后我只需删除这些前缀并在云中运行脚本。
现在我的问题是:有没有一种方法可以在脚本的开头选择一次是否执行这些段,然后在参数设置为“false”时跳过这些段?我已经尝试过 if 条件,但这非常麻烦。