问题标签 [broom]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
694 浏览

r - R:如何应用为多列输出数据帧的函数(使用 dplyr)?

我想在数据框中的一个特定列和所有其他列之间找到相关性、p 值和 95% CI。'broom' 包提供了一个示例,如何使用带有 dplyr 和管道的 cor.test 在两列之间执行此操作。对于 mtcars 和 mpg 列,我们可以运行与另一列的关联:

输出是单行数据帧。我想为每一列运行 cor.test for mpg 并将输出发送到单独的行。当 mpg 列与其他所有列配对时,所需的输出将如下所示:

请注意第一列中添加的行名。它们显示了哪一列与 mpg 配对用于 cor.test。理想情况下,我想用 dplyr 和管道来做到这一点。

0 投票
0 回答
109 浏览

r - R dplyr 从对象传递和返回数据帧

我是 R 初学者,正在使用 dplyr 并尝试将自定义函数合并到我的 R 脚本中。

我有一个名为 ss 的数据框,我想对其应用过滤器,但我想将过滤器分离到一个单独的函数中,以便可以与其他脚本共享。

代码示例:

我希望能够将 ss2 的当前状态发送到 apply_filters 函数并取回结果数据,以便我对其进行总结。

这不起作用,因为我收到错误:

错误:参数的“类型”(字符)无效

我错过了什么吗?

0 投票
1 回答
498 浏览

r - 将模型与 dplyr 和 broom::glance 进行比较:如果产生错误,如何继续?

我想使用 R 中的 lme4 包将数据集中的每个变量作为单变量 glmer 模型运行。我想用 dplyr/tidyr 包准备数据,并用 broom 包组织每个模型的结果(即(一目了然(glmer ...)。我将非常感谢停留在该框架内的帮助。我在 R 中不是那么好,但能够生成一个引发错误并且与我的数据具有相同结构的数据集米使用:

最后一个变量产生错误,因此没有输出。如果发生这种情况,我想要的是在输出中生成 NA 值,或者只是跳过该变量。我尝试使用“尝试”来克服麻烦制造者变量:

它确实如此,但仍然没有产生输出,因为它不能将“尝试错误”强制到 data.frame。不幸的是,没有 tryharder 功能。我尝试了一些对我有意义但对计算机有意义的 if 语句。我确定我做的不对,但是如果我使用:

我得到下标越界错误。非常感谢您提供的任何意见!

0 投票
1 回答
62 浏览

r - 在扫帚结果中为 glm 系数类别添加一列

有没有办法在 broom 包tidy函数的结果中添加一列,该函数可以将术语列与参数中使用的原始名称formula及其在参数中的列相关联data

例如,如果我运行以下命令,我会得到:

我正在寻找的是这样的:

如果这个新列的第一行是空的,Intercept或者1. 只需要可以将术语列与传递给公式的原始变量名称相匹配的东西吗?

编辑

如果它不依赖于as.factor在公式中使用会很好,例如:

0 投票
1 回答
259 浏览

r - 使用 newdata 进行的扩充适用于一种模型,但适用于另一种模型

我在这里遗漏了一些如此基本的东西——为什么增强适用于一种模型而不适用于另一种?

0 投票
1 回答
280 浏览

r - 测试模型参数的整洁方法

我想比较使用相同预测变量但模型参数不同的一堆模型的模型性能。这似乎是broom用来创建整洁输出的地方,但我想不通。这是一些无效的代码,有助于建议我在想什么:

有关更多上下文,这是我们正在尝试 tidyverse-ify 的 ISLR 实验室之一的一部分。你可以在这里看到整个实验室:https ://github.com/AmeliaMN/tidy-islr/blob/master/lab3/lab3.Rmd

[更新:可重现的示例] 由于需要在模型拟合之前进行数据整理,因此很难在这里制作一个最小的示例,但这应该是可重现的:

等等

0 投票
1 回答
233 浏览

r - R - dplyr 引导问题

我在理解如何dplyr bootstrap正确使用该功能时遇到问题。

我想要的是从两个随机分配的组中生成引导分布并计算均值的差异,例如:

问题是我需要重复此操作100,1000或更多次。

使用replicate,我可以做到

并得到分布

在此处输入图像描述

我真的不知道如何在bootstrap这里使用。我应该如何开始?

它并没有真正起作用。我应该把bootstrap点子放在哪里?

谢谢。

0 投票
1 回答
390 浏览

r - 带引导程序的分层排列

我在尝试对排列进行分层时遇到问题。

我的数据如下所示:

我只是想做的是分层随机排列party

这给了我一个正确的随机排列

我想要的是多次重复这个操作。遵循此处提出的解决方案(非分层排列)

但是,我没有引入一个group_by论点。

任何想法 ?

此外,bootstrap功能实际上很慢。知道为什么吗?以及使其更快的任何解决方案?我们可以以某种方式并行化它吗?

0 投票
1 回答
658 浏览

r - 如何使用 broom 和 dplyr 将分组数据应用于分组模型?

我想做相当于将 gpm(每英里加仑 = 1/mpg)模型拟合到 mtcars 数据集中的 wt。这似乎很容易:

正如预期的那样,这让我得到了一个有 6 行的行数据框。

该图确认有六组:

我可以使用 augment() 来获得拟合输出:

正如预期的那样,这给了我 32 行,mtcars2 中的每一行。

现在的挑战:我想使用 newdata 获得拟合输出,其中我将 wt 增加了 cyl/4:

我希望这将产生一个与 lm1 %>% augment(fit) 大小相同的数据框:newdata 中的每一行对应一行,因为 broom 将通过分组变量 cyl 和 am 匹配模型和 newdata。

很遗憾,

给了我一个包含 192 行(= 6 x 32)的数据框,显然每个模型都适合每一行 newdata。

从其他地方阅读,我收集到 group_by 和 rowwise 数据帧不兼容,因此 lm1 未分组,并且 augment 无法关联模型和 newdata。是否有另一种设计模式可以让我这样做?如果它像上述尝试一样简单透明,那就太好了,但更重要的是它可以工作。

这是我的 sessionInfo():

编辑:

@aosmith:我一直在探索你的第二个选择,我喜欢它。但是,当我在我的真实数据上尝试它时,我在 mutate 命令中遇到了一个问题:它返回“错误:扩充不知道如何处理类列表的数据”。

我的真实代码更像是:

我说它看起来像你的,我的意思是我有以下列(为了保持一致而在此重命名):ID (chr)、attr1 (dbl)、cyl (dbl)、am (chr)、fit (list) 和 data (列表)。你有 cyl、am (dbl)、fit 和 data。我将我的 am 更改为 dbl,但这并没有帮助。

我认为不同之处在于我在此样本中有 3 个(ID ...类似于 mtcars 中的行名)x 2(cyl)x 2(am)个单位(每个样本有 12 个测量值),而 mtcars 示例有 3 个(cyl) x 2 (am) 单元格 x 每个单元格的汽车类型随机数。在我的分析中,我需要查看 ID 值,但 newdata 同样适用于所有单位。如果有帮助,可以把它想象成测试中每辆车的逆风速度。这是否暗示了增强的抱怨它无法处理类列表数据的原因?

编辑:将 ID 与 newdata 合并(使用 full=TRUE)解决了最后一个问题。我目前正在使用您提出的第一个解决方案。

0 投票
2 回答
2779 浏览

r - 在ggplot中绘制连续协变量的预测生存曲线

如何绘制 cox 比例风险模型中连续协变量的代表值的生存曲线?具体来说,我想在 ggplot 中使用“survfit.cox”“survfit”对象来执行此操作。

这似乎是一个已经回答的问题,但我已经用“survfit”和“newdata”(以及许多其他搜索词)这两个词搜索了 SO 中的所有内容。这是迄今为止最接近回答我的问题的线程:Plot Kaplan-Meier for Cox regression

与该帖子的答案之一中提供的可重复示例保持一致:

问题是,一旦我有了这个名为 的数据框survcurv,我就无法判断哪个“估计”变量属于哪个模式,因为没有保留任何原始变量。例如,哪个“估计”变量代表 30 岁的拟合曲线,race = 'other',prio = '4',fin = 'no'?

在我见过的所有其他示例中,通常将 survfit 对象放入通用plot()函数中并且不添加图例。我想使用 ggplot 并为每条预测曲线添加一个图例。

在我自己的数据集中,模型要复杂得多,曲线也比我在这里展示的要多得多,所以你可以想象看到 40 个不同的 'estimate.1'..'estimate.40' 变量很难理解什么是什么。