小编Phi*_*hil的帖子

R中的大固定效应二项式回归

我需要在一个相对较大的数据框架上运行逻辑回归,其中包含480个条目和3个固定效果变量.固定效应var A有3233级,var B有2326级,var C有811级.总而言之,我有6370个固定效果.数据是横截面的.如果我不能使用正常glm函数运行此回归,因为回归矩阵对于我的记忆来说似乎太大了(我得到消息" Error: cannot allocate vector of size 22.9 Gb").我正在寻找在我的Macbook Air(OS X 10.9.5 8GB RAM)上运行此回归的替代方法.我也可以访问具有16GB RAM的服务器.

我试过用几种不同的方法解决这个问题,但到目前为止还没有取得令人满意的结果:

LFE/felm:使用的felm回归函数lfe减去运行回归之前固定的效果.这完美地工作,并允许我在几分钟内将上述回归作为正常线性模型运行.但是,lfe不支持逻辑回归和glms.所以felm非常适合了解不同模型的模型拟合,但不适用于最终的逻辑回归模型.

biglm/bigglm:我想过bigglm用来将我的功能分解成更易于管理的块.然而,若干来源(例如link1,link2,link3)提到为了使其起作用,因子级别需要在块之间保持一致,即每个块必须包含每个因子变量的每个因子中的至少一个.因子A和B包含仅出现一次的级别,因此我无法将这些集合拆分为具有一致级别的不同块.如果我删除固定效应A的10个因子和B的8个因子(微小的变化),我将只剩下4个级别的因子,并且将我的数据分成4个块将使其更易于管理.然而,我仍然需要弄清楚如何对我的df进行排序,以确保我的480.000条目被分类为4个块,其中3个因子中的每个因子的每个因子级别出现至少一次.

GlmmGS/glmgs:glmmgs具有相同名称的包中的函数执行固定效果减法,如lfe使用"Gauss-Seidel"算法的逻辑回归包.不幸的是,该包已不再开发.对R来说比较新,没有深入的统计经验,我无法理解输出,也不知道如何以一种能给我正常"效果大小","模型拟合","模型拟合"的方式对其进行转换.显着性区间"glm回归摘要提供的指标.

我给包的作者发了一条消息.他们回应如下:

该包不提供与glm对象相同格式的输出.但是,在给定当前输出的情况下,您可以轻松计算大部分拟合统计量(估计的标准误差,拟合度)(在CRAN版本中,我相信当前输出是系数估计的向量,以及相关的向量标准误差;协方差分量相同,但如果你没有随机效应拟合模型,你不必担心它们).只要注意用于计算标准误差的协方差矩阵是与Gauss-Seidel算法相关的精度矩阵的对角线块的倒数,因此它们倾向于低估联合似然的标准误差.我不再维护包裹,我没有时间详细说明; 包装背后的开创性理论可以在手册中引用论文中找到 ,其他一切都需要用笔和纸来制定:).

如果任何人都可以解释如何"轻松计算大部分拟合统计数据",使得没有任何统计学教育的人能够理解它(可能是不可能的)或者提供R代码,以示例如何实现这一点,我将是非常感谢!

Revolution Analytics:我在一台模拟Mac上的Windows 7的虚拟机上安装了革命分析企业.该程序具有一个被调用的函数RxLogit,该函数针对大型逻辑回归进行了优化.使用RxLogit我得到的功能the error (Failed to allocate 326554568 bytes. Error in rxCall("RxLogit", params) : bad allocation),所以该功能似乎也遇到了内存问题.但是,该软件使我能够在分布式计算集群上运行回归.所以我可以通过在具有大量内存的集群上购买计算时间来"解决问题".但是,我想知道革命分析程序是否提供了我不知道的任何公式或方法,这将允许我做某种类似的lfe固定效果减法操作或类似的bigglm …

r large-data mixed-models logistic-regression microsoft-r

13
推荐指数
1
解决办法
2793
查看次数

相当于R中字符串的cumsum

我正在寻找一种方法来做一个相当于R中的累积和的字符串/字符格式的文本而不是数字.应连接不同的文本字段.

例如,在数据框"df"中:

A列包含输入,B列包含所需结果.

  A        B
1 banana   banana 
2 boats    banana boats
3 are      banana boats are
4 awesome  banana boats are awesome
Run Code Online (Sandbox Code Playgroud)

目前我通过以下循环解决这个问题

df$B <- ""

for(i in 1:nrow(df)) {
    if (length(df[i-1,"A"]) > 0) {
        df$B[i] <- paste(df$B[i-1],df$A[i])
    } else {
        df$B[i] <- df$A[i]
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否存在更优雅/更快的解决方案.

r

8
推荐指数
1
解决办法
746
查看次数

将分组的数据帧传递给dplyr中的自己的函数

我正试图从plyr转移到dplyr.但是,我仍然无法弄清楚如何在链式dplyr函数中调用自己的函数.

我有一个带有分解ID变量和一个订单变量的数据框.我想按ID拆分帧,按顺序变量排序,并在新列中添加序列.

我的plyr函数看起来像这样:

f <- function(x) cbind(x[order(x$order_variable), ], Experience = 0:(nrow(x)-1))
data <- ddply(data, .(ID_variable), f)
Run Code Online (Sandbox Code Playgroud)

在dplyr我虽然看起来应该是这样的

f <- function(x) cbind(x[order(x$order_variable), ], Experience = 0:(nrow(x)-1))
data <- data %>% group_by(ID_variable) %>% f
Run Code Online (Sandbox Code Playgroud)

谁能告诉我如何修改我的dplyr调用以成功传递我自己的函数并获得我的plyr函数提供的相同功能?

编辑:如果我使用这里描述的dplyr公式,它会将对象传递给f.然而,虽然plyr似乎传递了许多不同的表(由ID变量分割),但是dplyr不会为每个组传递一个表,而是传递ENTIRE表(作为某种类型的dplyr对象,其中组被注释),因此当我cbind时体验变量它将计数器从0附加到整个表的长度而不是单个组.

我找到了一种方法来使用这种方法在dplyr中获得相同的功能:

data <- data %>%
    group_by(ID_variable) %>%
    arrange(ID_variable,order_variable) %>% 
    mutate(Experience = 0:(n()-1))
Run Code Online (Sandbox Code Playgroud)

但是,我仍然希望学习如何将分组变量分成不同的表传递给dplyr中的函数.

r plyr dplyr

6
推荐指数
1
解决办法
1285
查看次数

在dplyr中确定分组数据帧中最频繁因子的最快方法

我在dplyr中总结一个数据框时,试图在一个组中找到几个因子变量中最常见的值.我需要一个执行以下操作的公式:

  1. 在组中的一个变量的所有因子中找出最常用的因子水平(因此对于因子水平的计数基本上是"max()").
  2. 如果几个最常用因子级别之间存在联系,请选择其中任何一个因子级别.
  3. 返回因子级别名称(不是计数).

有几个公式可行.但是,我能想到的那些都很慢.快速的那些不方便一次应用于数据帧中的几个变量.我想知道是否有人知道一种与dplyr很好地集成的快速方法.

我尝试了以下方法:

生成样本数据(50000组,100个随机字母)

z <- data.frame(a = rep(1:50000,100), b = sample(LETTERS, 5000000, replace = TRUE))

str(z)
'data.frame':   5000000 obs. of  2 variables:
$ a: int  1 2 3 4 5 6 7 8 9 10 ...
$ b: Factor w/ 26 levels "A","B","C","D",..: 6 4 14 12 3 19 17 19 15 20 ...
Run Code Online (Sandbox Code Playgroud)

"清洁" - 但缓慢的方法1

 y <- z %>% 
    group_by(a) %>% 
    summarise(c = names(table(b))[which.max(table(b))])

user    system  elapsed 
26.772  2.011   29.568 
Run Code Online (Sandbox Code Playgroud)

"清洁" - …

performance r dplyr

6
推荐指数
3
解决办法
6578
查看次数

R 中生存包的 clogit 回归的稳健标准误差

我正在尝试从 R 中的生存包中获取 clogit 回归的可靠标准错误。在此过程中,我尝试使用该选项复制 Stata 命令报告的标准clogit错误vce(robust)

我的 R 公式是

conditional_logit <- clogit(dependent_variable ~ independent_variable + some_controls + strata(year), method= "exact", data = data_frame)
Run Code Online (Sandbox Code Playgroud)

将参数添加robust = TRUE到函数失败并出现错误:

Error in residuals.coxph(fit2, type = "dfbeta", weighted = TRUE) : 
score residuals are not available for the exact method
Run Code Online (Sandbox Code Playgroud)

任何通过三明治或 plm 包提取稳健标准错误(如此处、此处、此处和此处建议)的尝试都会失败出现相同错误。类似地,clogit 函数包含一个在使用该方法时停止尝试计算稳健标准误差的条件exact(第 44 行)。但是,conditional_logit$residuals 和conditional_logit$score 存在于clogit 回归对象中。

如果有人能帮助回答以下问题,我将不胜感激:

  • 计算“精确”条件逻辑回归的稳健标准误差通常是不可能或“错误”的吗?如果是这样,为什么 Stata 允许这样做?
  • 如果不是:我如何计算 R 中 …

r robust standard-error stata logistic-regression

6
推荐指数
1
解决办法
1878
查看次数

用于访问活动幻灯片的 ActiveWindow VBA 命令在虚拟机上运行的 PowerPoint 2013 上不起作用

我几天前刚开始使用VBA。我注意到有些命令似乎在我的计算机上不起作用,我想知道这是否是由于我的计算机设置所致。

我在 Windows 7 上的 PowerPoint 2013 中使用 VBA,通过 MacOSX 上的 VMware Fusion(虚拟机)运行。我需要创建对活动幻灯片的动态引用,但这样做的几种方法破坏了我的代码:

Set oSl = Application.ActiveWindow.View.Slide
Run Code Online (Sandbox Code Playgroud)

(如此处建议

Set oSl = ActivePresentation.Slides(ActiveWindow.View.Slide.SlideNumber)
Run Code Online (Sandbox Code Playgroud)

(如此处建议

Set oSl = ActiveWindow.Selection.SlideRange.SlideIndex
Run Code Online (Sandbox Code Playgroud)

(如此处建议

这些都不适合我。由于我刚刚开始使用 VBA,我只是在代码的不同部分之后插入消息框,并查看何时不再触发这些框 - 在这种情况下总是在我用上面描述的各种其他方法替换的“oSl =”行之后。此外,

Set oSl = ActiveWindow.Selection.SlideRange(1)
Run Code Online (Sandbox Code Playgroud)

也破坏了我的代码(如此处讨论

到目前为止所做的工作是

Set oSl = ActivePresentation.SlideS(1)
Run Code Online (Sandbox Code Playgroud)

上面的所有方法都不起作用(但应该)包含“ActiveWindow”。如果您能建议我选择活动幻灯片的方法是否存在错误,或者问题是否可能是由于我的 PowerPoint 在虚拟机上运行而导致 VBA 无法正确访问“ActiveWindow”,那就太好了。如果是这种情况,是否有另一种方法可以在不使用 ActiveWindow 的情况下选择当前活动的幻灯片?

编辑:我正在尝试将其应用于 PowerPoint 中的以下代码。基本上我想要做的是将“oSl = ActivePresentation.SlideS(1)”行替换为一行代码,该代码行并不总是针对幻灯片 1,而是当前处于活动状态的幻灯片。我的问题不在于如何做到这一点——网上有很多关于如何做到这一点的说明。我的问题是为什么这些方法对我不起作用。

Sub SelectionMacro()

Dim oSl As Slide
Dim oSh As Shape
Dim aArrayOfShapes() As Variant
Dim ShapeX …
Run Code Online (Sandbox Code Playgroud)

powerpoint vba virtual-machine vmware-fusion

4
推荐指数
1
解决办法
9447
查看次数

在R的knitr文档中插入HTML表

我有许多不同的HTML文件,这些文件包含要在R的knitr报表中合并的格式化表格。不幸的是,在将HTML文件加载到R并将knitr报表中的表格包括在内时,我遇到了一些问题。

HTML文件是使用MS Excel和stargazer库中的“另存为htm”功能创建的。它们可以在任何浏览器中完美显示。我的代码是:

```{r, echo=FALSE, return='asis'}
library(XML)
overview.html <- htmlParse("overview.htm")
print(overview.html)
```
Run Code Online (Sandbox Code Playgroud)

在控制台中打印“概述html”时,我得到了正确的html代码。但是,在编织报表时,输出文档不包含我的代码,并且出现以下错误:

Warning message:
XML content does not seem to be XML: 'overview.htm' 
Run Code Online (Sandbox Code Playgroud)

我已经尝试了上述几种变体(使用htmlTreeParse,使用打印类型=“ html”选项等)无济于事。如果有人可以提出一种可行的方法,那将是很棒的。

xml r knitr

1
推荐指数
1
解决办法
1161
查看次数