小编Lui*_*uis的帖子

使用扫帚和tidyverse对不同的因变量运行回归

我正在寻找可以解决这个难题的Tidyverse /扫帚解决方案:

假设我有不同的DV和一组特定的IVS,我想进行回归,考虑每个DV和这组特定的IV.我知道我可以使用像我这样的东西或应用家庭,但我真的想用tidyverse来运行它.

以下代码作为示例

ds <- data.frame(income = rnorm(100, mean=1000,sd=200),
                 happiness = rnorm(100, mean = 6, sd=1),
                 health = rnorm(100, mean=20, sd = 3),
                 sex = c(0,1),
                 faculty = c(0,1,2,3))

mod1 <- lm(income ~ sex + faculty, ds)
mod2 <- lm(happiness ~ sex + faculty, ds)
mod3 <- lm(health ~ sex + faculty, ds)
summary(mod1)
summary(mod2)
summary(mod3)
Run Code Online (Sandbox Code Playgroud)

收入,幸福和健康都是DV.性别和教师是IV,他们将用于所有回归.

是我发现的最接近的

让我知道如果我需要澄清我的问题.谢谢.

loops regression r broom tidyverse

9
推荐指数
3
解决办法
566
查看次数

Purrr 和 R 中的几个多元回归

我知道有几种方法可以比较回归模型。创建模型(从线性到多个)并比较 R2、调整后的 R2 等的一种方法:

Mod1: y=b0+b1
Mod2: y=b0+b1+b2
Mod3: y=b0+b1+b2+b3 (etc)
Run Code Online (Sandbox Code Playgroud)

我知道有些包可以执行逐步回归,但我正在尝试使用 purrr进行分析。我可以创建几个简单的线性模型感谢这里的这篇文章),现在我想知道如何创建回归模型,将特定的 IV 添加到方程

可复制代码

data(mtcars)
library(tidyverse)
library(purrr)
library(broom)
iv_vars <- c("cyl", "disp", "hp")
make_model <- function(nm) lm(mtcars[c("mpg", nm)])
fits <- Map(make_model, iv_vars)
glance_tidy <- function(x) c(unlist(glance(x)), unlist(tidy(x)[, -1]))
t(iv_vars %>% Map(f = make_model) %>% sapply(glance_tidy))
Run Code Online (Sandbox Code Playgroud)

输出 线性模型的输出

我想要的是:

Mod1: mpg ~cyl
Mod2: mpg ~cly + disp
Mod3: mpg ~ cly + disp + hp
Run Code Online (Sandbox Code Playgroud)

非常感谢。

r linear-regression broom purrr

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

具有 dplyr、tidyverse 和 broom 的相关矩阵 - P 值矩阵

全部。我想使用dplyr 和/或 broom 包从相关矩阵中获取 p 值 ,并同时测试多个变量。我知道其他方法,但 dplyr 对我来说似乎更简单、更直观。此外,dplyr 需要关联每个变量以获得特定的 p 值,这使得该过程更容易、更快。

我检查了其他链接,但它们对这个问题不起作用(示例 1示例 2示例 3)当我使用此代码时,会报告相关系数​​。然而,P 值却并非如此。

agreg_base_tipo_a %>% 
  dplyr::select(S2.RT, BIS_total, IDATE, BAI, ASRS_total) %>% 
  do(as.data.frame(cor(., method="spearman", use="pairwise.complete.obs")))
Run Code Online (Sandbox Code Playgroud)

请检查这个可复制的代码到word:

set.seed(1164)

library(tidyverse)
ds <- data.frame(id=(1) ,a=rnorm(10,2,1), b=rnorm(10,3,2), c=rnorm(5,1,05))

ds %>% 
  select(a,b,c) %>% 
  do(as.data.frame(cor(., method="spearman", use="pairwise.complete.obs")))
Run Code Online (Sandbox Code Playgroud)

r correlation dplyr broom tidyverse

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

重命名包含特定字符串的所有变量并添加序列号

假设我有一个名称非常奇怪的数据集,我想修改/替换变量名称字符串的一部分,并添加一个逻辑序列。下面的代码工作得很好,因为它用“var”替换了“nameverybig”。

    library(tidyverse)
ds <- data.frame(identification = 1:10,
                 nameverybig_do_you_like_cookies = c(1:10), 
                 nameverybig_have_you_been_in_europe = c(1:10),
                 nameverybig_whats_your_gender = c(1:10))


    ds <- ds %>% 
      rename_all(.,~sub("nameverybig_*", 
                        paste("var"),
                        names(ds)))
Run Code Online (Sandbox Code Playgroud)

但是我在重命名字符串和添加逻辑序列的过程中苦苦挣扎。

ds %>% names
dados <- ds %>% 
  rename_all(.,~sub("nameverybig_*", 
                    paste("var", 1:3),
                    names(ds)))
Run Code Online (Sandbox Code Playgroud)

我想留在 tidyverse 框架内。我试过rename_all+contains和匹配,和rename_at,但没有成功。我将此代码基于其他帖子,例如this onethis one This post具有可重现的代码。如果我需要提高问题的质量,请告诉我。谢谢你。

r dplyr

4
推荐指数
2
解决办法
1638
查看次数

同一图中的多个分布-使用ggplot2中的geom_density函数

我认为我非常接近完成此代码,但是我在这里遗漏了一些东西。我想像这样将两个图“组合”为一个图:

正态分布 第一个情节具有以下代码:

  ggplot(test, aes(y=key,x=value)) + 
  geom_path()+
  coord_flip()
Run Code Online (Sandbox Code Playgroud)

第二个是下面这个:

  ggplot(test, aes(x=value, fill=key)) +
  geom_density() +
  coord_flip()
Run Code Online (Sandbox Code Playgroud)

当我们了解正态分布时,这种多重分布图通常会在统计手册中看到。到目前为止,我最有用的链接就是这里的链接

请使用此代码重现我的问题:

library(tidyverse)
test <- data.frame(key = c("communication","gross_motor","fine_motor"),
                   value = rnorm(n=30,mean=0, sd=1))
ggplot(test, aes(x=value, fill=key)) +
  geom_density() +
  coord_flip()

ggplot(test, aes(y=key,x=value)) + 
  geom_path(size=2)+
  coord_flip()
Run Code Online (Sandbox Code Playgroud)

非常感谢

r ggplot2 tidyverse

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

dplyr过滤器"单元格内容""单元格值"是

这是一个基本问题,但我花了2个小时寻找答案,我没有找到解决方法.我有一个李克特量表(0,5,10),但不幸的是,我的数据集有一些不同的值(例如,800).我写了一个可复制的代码.

我想使用dplyr只保留我只有0,5,10的行(或者删除整个行,我有一个奇怪的结果)

示例代码:

dat <- data.frame(v1=c(10,5,0,10), 
                  v2=c(10,0,0,800), 
                  v3=c(10,0,0,5), 
                  v4=c(800,10,5,10),
                  v5=c(0,800,5,10))
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用这样的东西:

dat2 <- dat %>% filter(rowSums(.) < 50)
Run Code Online (Sandbox Code Playgroud)

但是我想"循环"所有数据集以丢弃我所拥有的不同数字的行.

谢谢

packages r dplyr

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

使用 ggplot 的多 x 轴来呈现 z 分数、智商分数和原始数据

只是结合上下文,我从事心理测量/心理测试。我有一个由“点”、“百分位数”、“z_real”、“z_normal”、“iq”组成的数据集。我想要一个 ggplot,其中可以呈现 Z_score(来自我的原始数据)、z_score(具有基础正态分布),然后有两个带有“原始分数”和“智商分数”的补充 x 轴。这在统计中很常见,您可以在下面查看

普通的

这是目前的剧情

当前的

这是我得到的最好的解决方案

最佳剧情

这就是想要的剧情

想要的情节

我正在与 tidyverse 合作,我想留在其中。以前的一些帖子对我有帮助,例如这个[一] [5]和这个[一] [6]。

谢谢。(部分)数据和代码在这里:

ask_ds <- structure(list(points = c(17, 17, 2, 16, 11, 17, 20, 16, 19, 
                                    15, 9, 14, 14, 16, 13, 13, 22, 21, 25, 17, 17, 17, 20, 6, 11, 
                                    5, 10, 23, 21, 19, 11, 15, 13, 17, 17, 17, 9, 18, 12, 22, 21, 
                                    23, 8, 12, 6, 7, 22, 12, 21, 16, 12, 5, 19, 19, 21, 13, 12, 18, 
                                    22, 13, 21, 24, …
Run Code Online (Sandbox Code Playgroud)

r data-visualization ggplot2 tidyverse

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