mutate across를 사용하여 회귀 모델을 각 열에 적용

사용자 8959427

이것은 내가 여기에 게시 한 질문에 대한 후속 질문입니다.

해결책은 다음 코드를 사용하는 것이 었습니다.

groups <- c("group2", "group3", "group4")
dataGroups <- groups %>%
  purrr::map_dfr(~ data %>%
        filter(grp == "group1" | grp == .x) %>%
        mutate(!!.x := normaliseData(Y)))

이것을 사용하여 이제 다음과 같은 데이터 프레임이 생겼습니다.

   grp    date                id              Y group2 group3 group4
   <chr>  <dttm>              <chr>       <dbl>  <dbl>  <dbl>  <dbl>
 1 group1 2020-09-01 00:00:00 04003      17039. 0.424      NA     NA
 2 group1 2020-09-01 00:00:00 04006      13233. 0.247      NA     NA
 3 group1 2020-09-01 00:00:00 04011_AM    7918. 0          NA     NA
 4 group1 2020-09-01 00:00:00 0401301_AD 22586. 0.682      NA     NA
 5 group1 2020-09-01 00:00:00 0401303    20527. 0.586      NA     NA
 6 group1 2020-09-01 00:00:00 0401305    29422. 1          NA     NA
 7 group2 2020-09-01 00:00:00 22017_AM    7088. 0.0554     NA     NA
 8 group2 2020-09-01 00:00:00 22021_AM    8134. 0.165      NA     NA
 9 group2 2020-09-01 00:00:00 22039_AM   15842. 0.969      NA     NA
10 group2 2020-09-01 00:00:00 22048      16142. 1          NA     NA

이제 열을 변경하고 선형 회귀 모델을 적용하고 싶습니다. 다음을 사용하여 데이터를 생성 할 수 있습니다.

dataGroups2 <- dataGroups %>%
  rowwise %>%
  mutate(
    control = sample(c(0,1), 1),
    treatment = ifelse(grp == "group1", 1, 0),
    did = control * treatment
    )

그러나 열에 회귀 모델을 적용 할 수 없습니다.

dataGroups2 %>% 
  mutate(across(where(.) %in% groups),  ~lm(log(.x) ~ treatment + control + did ))

변경되는 유일한 것은 Y변수입니다. 열을 매핑하고 회귀 모델을 실행하려면 어떻게해야합니까?

데이터:

data <- structure(list(grp = c("group1", "group1", "group1", "group1", 
"group1", "group1", "group2", "group2", "group2", "group2", "group2", 
"group2", "group3", "group3", "group3", "group3", "group3", "group3", 
"group4", "group4", "group4", "group4", "group4", "group4"), 
    date = structure(c(1598918400, 1598918400, 1598918400, 1598918400, 
    1598918400, 1598918400, 1598918400, 1598918400, 1598918400, 
    1598918400, 1598918400, 1598918400, 1598918400, 1598918400, 
    1598918400, 1598918400, 1598918400, 1598918400, 1598918400, 
    1598918400, 1598918400, 1598918400, 1598918400, 1598918400
    ), tzone = "UTC", class = c("POSIXct", "POSIXt")), id = c("04003", 
    "04006", "04011_AM", "0401301_AD", "0401303", "0401305", 
    "22017_AM", "22021_AM", "22039_AM", "22048", "22053_AM", 
    "22054_AM", "28002", "28004", "2800501", "2800502", "2800503", 
    "2800504", "31010_AM", "31015_AM", "31016", "31019_AM", "31023", 
    "31029_AM"), Y = c(17039.329, 13232.982, 7917.693, 22585.676, 
    20527.113, 29422.471, 7087.536, 8134.265, 15842.035, 16142.111, 
    11493.981, 6556.387, 22086.768, 11325.882, 53449.067, 83662.101, 
    78508.089, 66107.125, 5095.169, 5590.531, 17796.439, 6028.701, 
    39271.698, 3642.281)), row.names = c(NA, -24L), groups = structure(list(
    grp = c("group1", "group2", "group3", "group4"), .rows = structure(list(
        1:6, 7:12, 13:18, 19:24), ptype = integer(0), class = c("vctrs_list_of", 
    "vctrs_vctr", "list"))), row.names = c(NA, 4L), class = c("tbl_df", 
"tbl", "data.frame"), .drop = TRUE), class = c("grouped_df", 
"tbl_df", "tbl", "data.frame"))

편집하다:

회귀를 개별적으로 실행할 수 있습니다.

dataGroups2 %>% 
  lm(group2 ~ control + did + treatment + did, data = .) %>% 
  summary()

dataGroups2 %>% 
  lm(group3 ~ control + did + treatment + did, data = .) %>% 
  summary()

dataGroups2 %>% 
  lm(group4 ~ control + did + treatment + did, data = .) %>% 
  summary()

변화하는 유일한 것은 Y변수입니다.

편집하다:

깔끔한 솔루션 :

linearRegFunction <- function(x){
  lm(get(x) ~ control + did + treatment, data = dataGroups)
}

groups %>% 
  map(., ~linearRegFunction(.x))
user12728748

하나는 확실히 가지고 올 수 있지만 tidyverse솔루션을 사용 broom하거나 purrr, 때로는 간단한 해결책도 그 아름다움이있다. 예 :

lapply(groups, function(x) summary(lm(get(x) ~ control + did + treatment, data=dataGroups2)))

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

열을 반복하고 회귀 모델링에서 각 열을 반응 변수로 사용

분류에서Dev

정 성적 데이터를 사용하여 다중 회귀 모델에 대한 행렬 작성

분류에서Dev

R을 사용하여 각 회귀 계수 (1104 선형 회귀)에 대한 p- 값 목록 추출

분류에서Dev

dplyr :: mutate (across ())를 사용하여 사용자 지정 함수에 여러 열 적용

분류에서Dev

mapply를 사용하여 다른 회귀 모델을 맞출 수 있습니까?

분류에서Dev

Prolog에서 증분기를 사용하여 각 재귀 호출을 추적

분류에서Dev

Pandas에서 데이터 프레임의 마지막 열을 사용하여 각 열을 개별적으로 회귀

분류에서Dev

Dplyr across + mutate + 조건을 사용하여 열 선택

분류에서Dev

Nest 및 mutate를 사용하여 학습 세트에서 모델을 만든 다음 R (tidymodels)의 테스트 데이터에 적용하는 방법

분류에서Dev

tidymodel을 사용하여 여러 회귀 모델 실행

분류에서Dev

dplyr :: mutate 내에서 purrr :: map을 사용하여 모델에 다른 시작 매개 변수를 적용합니다.

분류에서Dev

foreach In PHP를 사용하여 out을 사용하여 연관 배열의 각 값에 방정식 적용

분류에서Dev

r에서 동일한 연산자를 사용하여 서로 비교할 때 FALSE를 출력하는 동일한 적합치가있는 회귀 모델

분류에서Dev

glm을 사용하여 로지스틱 회귀 모델을 구축 할 때 둘 이상의 열 제외

분류에서Dev

일부 모델에 대해 일부 그룹이 비어있는 경우 purrr의 맵을 사용하여 그룹 별 선형 회귀를 추정합니다.

분류에서Dev

각 행에 시계열 모델 적용

분류에서Dev

dplyr :: group_by ()를 사용하여 각 그룹에 대한 황토 회귀 후 특정 x- 값 예측

분류에서Dev

R을 사용하여 30 개의 특정 set.seed에 대한 회귀 모델을 자동으로 실행

분류에서Dev

mutate를 사용하여 각 tibble 행에 대해 비 결정적 결과를 생성합니다.

분류에서Dev

변수간에 가능한 모든 쌍별 상호 작용을 사용하여 단계적 회귀를 계산합니다.

분류에서Dev

각 배열에 대한 개체의 키를 사용하여 중첩 된 배열을 중첩 된 개체로 재귀 적으로 변환

분류에서Dev

R 데이터 프레임은 across / all_of / mutate_if를 사용하여 기존 열에서 여러 개의 새 열을 만듭니다.

분류에서Dev

dplyr mutate를 사용하여 ifelse에서 다른 열을 참조하는 방법

분류에서Dev

파이썬에서 mord 모듈을 사용하여 서수 회귀를 어떻게 할 수 있습니까?

분류에서Dev

회귀 모델에 대한 여러 목록 및 함수에 적용

분류에서Dev

계산 된 로지스틱 회귀 모델을 사용하여 R의 적절한 컷오프 값을 기반으로 분류기를 만듭니다.

분류에서Dev

mutate를 사용하여 열 합산

분류에서Dev

적합 회귀 모형을 사용하여 E (YIX = 4) 추정

분류에서Dev

MVVM 모델을 사용하여 조각에 토스트 메시지를 표시하는 방법

Related 관련 기사

  1. 1

    열을 반복하고 회귀 모델링에서 각 열을 반응 변수로 사용

  2. 2

    정 성적 데이터를 사용하여 다중 회귀 모델에 대한 행렬 작성

  3. 3

    R을 사용하여 각 회귀 계수 (1104 선형 회귀)에 대한 p- 값 목록 추출

  4. 4

    dplyr :: mutate (across ())를 사용하여 사용자 지정 함수에 여러 열 적용

  5. 5

    mapply를 사용하여 다른 회귀 모델을 맞출 수 있습니까?

  6. 6

    Prolog에서 증분기를 사용하여 각 재귀 호출을 추적

  7. 7

    Pandas에서 데이터 프레임의 마지막 열을 사용하여 각 열을 개별적으로 회귀

  8. 8

    Dplyr across + mutate + 조건을 사용하여 열 선택

  9. 9

    Nest 및 mutate를 사용하여 학습 세트에서 모델을 만든 다음 R (tidymodels)의 테스트 데이터에 적용하는 방법

  10. 10

    tidymodel을 사용하여 여러 회귀 모델 실행

  11. 11

    dplyr :: mutate 내에서 purrr :: map을 사용하여 모델에 다른 시작 매개 변수를 적용합니다.

  12. 12

    foreach In PHP를 사용하여 out을 사용하여 연관 배열의 각 값에 방정식 적용

  13. 13

    r에서 동일한 연산자를 사용하여 서로 비교할 때 FALSE를 출력하는 동일한 적합치가있는 회귀 모델

  14. 14

    glm을 사용하여 로지스틱 회귀 모델을 구축 할 때 둘 이상의 열 제외

  15. 15

    일부 모델에 대해 일부 그룹이 비어있는 경우 purrr의 맵을 사용하여 그룹 별 선형 회귀를 추정합니다.

  16. 16

    각 행에 시계열 모델 적용

  17. 17

    dplyr :: group_by ()를 사용하여 각 그룹에 대한 황토 회귀 후 특정 x- 값 예측

  18. 18

    R을 사용하여 30 개의 특정 set.seed에 대한 회귀 모델을 자동으로 실행

  19. 19

    mutate를 사용하여 각 tibble 행에 대해 비 결정적 결과를 생성합니다.

  20. 20

    변수간에 가능한 모든 쌍별 상호 작용을 사용하여 단계적 회귀를 계산합니다.

  21. 21

    각 배열에 대한 개체의 키를 사용하여 중첩 된 배열을 중첩 된 개체로 재귀 적으로 변환

  22. 22

    R 데이터 프레임은 across / all_of / mutate_if를 사용하여 기존 열에서 여러 개의 새 열을 만듭니다.

  23. 23

    dplyr mutate를 사용하여 ifelse에서 다른 열을 참조하는 방법

  24. 24

    파이썬에서 mord 모듈을 사용하여 서수 회귀를 어떻게 할 수 있습니까?

  25. 25

    회귀 모델에 대한 여러 목록 및 함수에 적용

  26. 26

    계산 된 로지스틱 회귀 모델을 사용하여 R의 적절한 컷오프 값을 기반으로 분류기를 만듭니다.

  27. 27

    mutate를 사용하여 열 합산

  28. 28

    적합 회귀 모형을 사용하여 E (YIX = 4) 추정

  29. 29

    MVVM 모델을 사용하여 조각에 토스트 메시지를 표시하는 방법

뜨겁다태그

보관