如何从整洁的数据中获取相关残差
How can I get the residuals of correlation from tidy data
我有一个整洁的数据。
|ID | variable | value.x | value.y |
| --- | -------- | ------- | ------- |
|1 | Temp | -0.71 | -0.74 |
|2 | Temp | -0.53 | -0.50 |
|3 | Temp | -0.48 | -0.51 |
|4 | Temp | -0.65 | -0.66 |
|5 | Temp | -0.49 | -0.56 |
|6 | Prep | -0.72 | -0.75 |
|7 | Prep | -0.64 | -0.65 |
|8 | Prep | -0.56 | -0.54 |
|9 | Prep | -0.46 | -0.47 |
|10 | Prep | -0.44 | -0.44 |
我想得到每个变量的相关残差。
提前致谢,
如果您只想将模型中的残差添加到数据中 table,modelr::add_residuals()
是一个非常方便的函数,可用于此目的。您可以使用 dplyr::group_split()
和 purrr::map()
在原始数据的多个子集上同时 运行。我假定了一个简单的线性模型,但您可以替换其他标准模型对象。
library(tidyverse)
library(modelr)
d <- structure(list(ID = c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10"), variable = c("Temp", "Temp", "Temp", "Temp", "Temp", "Prep", "Prep", "Prep", "Prep", "Prep"), x = c(-0.71, -0.53, -0.48, -0.65, -0.49, -0.72, -0.64, -0.56, -0.46, -0.44), y = c(-0.74, -0.5, -0.51, -0.66, -0.56, -0.75, -0.65, -0.54, -0.47, -0.44)), row.names = c(NA, -10L), class = "data.frame")
d %>%
group_split(variable) %>%
map(~add_residuals(data = .x, lm(y~x, data = .x))) %>%
bind_rows()
#> # A tibble: 10 x 5
#> ID variable x y resid
#> <chr> <chr> <dbl> <dbl> <dbl>
#> 1 6 Prep -0.72 -0.75 -0.0116
#> 2 7 Prep -0.64 -0.65 0.00205
#> 3 8 Prep -0.56 -0.54 0.0257
#> 4 9 Prep -0.46 -0.47 -0.0123
#> 5 10 Prep -0.44 -0.44 -0.00386
#> 6 1 Temp -0.71 -0.74 -0.0156
#> 7 2 Temp -0.53 -0.5 0.0543
#> 8 3 Temp -0.48 -0.51 -0.00293
#> 9 4 Temp -0.65 -0.66 0.00770
#> 10 5 Temp -0.49 -0.56 -0.0435
由 reprex package (v2.0.1)
于 2022-04-07 创建
我有一个整洁的数据。
|ID | variable | value.x | value.y |
| --- | -------- | ------- | ------- |
|1 | Temp | -0.71 | -0.74 |
|2 | Temp | -0.53 | -0.50 |
|3 | Temp | -0.48 | -0.51 |
|4 | Temp | -0.65 | -0.66 |
|5 | Temp | -0.49 | -0.56 |
|6 | Prep | -0.72 | -0.75 |
|7 | Prep | -0.64 | -0.65 |
|8 | Prep | -0.56 | -0.54 |
|9 | Prep | -0.46 | -0.47 |
|10 | Prep | -0.44 | -0.44 |
我想得到每个变量的相关残差。
提前致谢,
如果您只想将模型中的残差添加到数据中 table,modelr::add_residuals()
是一个非常方便的函数,可用于此目的。您可以使用 dplyr::group_split()
和 purrr::map()
在原始数据的多个子集上同时 运行。我假定了一个简单的线性模型,但您可以替换其他标准模型对象。
library(tidyverse)
library(modelr)
d <- structure(list(ID = c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10"), variable = c("Temp", "Temp", "Temp", "Temp", "Temp", "Prep", "Prep", "Prep", "Prep", "Prep"), x = c(-0.71, -0.53, -0.48, -0.65, -0.49, -0.72, -0.64, -0.56, -0.46, -0.44), y = c(-0.74, -0.5, -0.51, -0.66, -0.56, -0.75, -0.65, -0.54, -0.47, -0.44)), row.names = c(NA, -10L), class = "data.frame")
d %>%
group_split(variable) %>%
map(~add_residuals(data = .x, lm(y~x, data = .x))) %>%
bind_rows()
#> # A tibble: 10 x 5
#> ID variable x y resid
#> <chr> <chr> <dbl> <dbl> <dbl>
#> 1 6 Prep -0.72 -0.75 -0.0116
#> 2 7 Prep -0.64 -0.65 0.00205
#> 3 8 Prep -0.56 -0.54 0.0257
#> 4 9 Prep -0.46 -0.47 -0.0123
#> 5 10 Prep -0.44 -0.44 -0.00386
#> 6 1 Temp -0.71 -0.74 -0.0156
#> 7 2 Temp -0.53 -0.5 0.0543
#> 8 3 Temp -0.48 -0.51 -0.00293
#> 9 4 Temp -0.65 -0.66 0.00770
#> 10 5 Temp -0.49 -0.56 -0.0435
由 reprex package (v2.0.1)
于 2022-04-07 创建