R에서 순차적으로 조정 된 회귀를위한 For 루프

R의 전통적인 루프와 관련된 대부분의 질문은 더 적은 코드로 일반적으로 더 유연하게 기능을 사용하여 설명됩니다.

그러나 나를 수정하십시오. 반복 순서가 중요 할 때 for 루프가 여전히 지배적이라고 생각합니다.

제 경우에는 순차적이고 누적 적으로 조정 된 로지스틱 회귀 모델 을 구축하고 조정 대상을 보여주는 열과 함께 OR / CI를 저장하고 싶습니다 . 이것은 내 예상 출력입니다.

 Model        OR     CI

 Biomarker
 +Age
 +Sex
 +Smoking 

내가 한 일은 다음과 같습니다.

df1 <- subset(df, select = c(age_cat, is_female, smoking_category,
                                 bmi_calc, has_diabetes, sbp_mean, 
                                 alcohol_category, highest_education,
                                 occupation, household_income))
model <- data.frame(NULL)

for (i in seq_along(df1)) {

  model <- exp((cbind(OR = coef(glm(as.formula(paste("istroke ~ log2(hscrp_mgl)", i, sep = "+")), 
                         family=binomial, data=df)),
           confint(glm(as.formula(paste("istroke ~ log2(hscrp_mgl)", i, sep = "+")), 
                       family=binomial, data=df)))))


}

내 결과 변수는 뇌졸중 (istroke, 0 또는 1)입니다. 내 관심 노출은 바이오 마커 (hscrp_mgl)입니다. 나는 내가 어딘가에서 근본적인 실수를하고 있다는 것을 안다. 다른 SO 게시물에서 찾았지만 대부분은 순차적이고 누적 적으로 조정 된 회귀 모델을 원하지 않습니다.

그럼에도 불구하고 이것이 중복인지, 그리고 불분명 한 것이 있으면 알려주세요.

편집하다

내 원래 데이터 세트 df에는 df1의 모든 변수, 결과 변수 및 일부가 포함됩니다. 다음은 재현 가능한 샘플입니다.

age_cat is_female   smoking_category    bmi_calc    has_diabetes        sbp_mean    istroke
(59,69]        0           4            19.6           0                103.5          0
(59,69]        1           1            19.1           0                 138           0
(29,59]        0           4            26.8           0               155.5           0
(29,59]        0           1            23.1           0                 130           1
(29,59]        1           1            22.7           0                 126           1
(59,69]        0           4             25            0               182.5           0
(29,59]        1           1             20            0                  96           1
(29,59]        1           2             23.9          0               134.5           0
(59,69]        0           4             24.4          0               160.5           1

편집 더 재현 가능한 예 :

df <- data.frame(age = c(50, 60, 50, 40, 70, 90, 30),
             gender = c(0, 1, 1, 0, 1, 1, 1),
             smoke = c(4, 3, 2, 1, 4, 3, 4),
             BMI = c(19, 20, 21, 22, 23, 24, 25),
             SBP = c(100, 120, 140, 110, 120, 130, 120),
             diab = c(0, 1, 1, 1, 0, 1, 1),
             stroke = c(0, 1, 0, 0, 1, 1, 1))
dput(df)
structure(list(age = c(50, 60, 50, 40, 70, 90, 30), gender = c(0, 
1, 1, 0, 1, 1, 1), smoke = c(4, 3, 2, 1, 4, 3, 4), BMI = c(19, 
20, 21, 22, 23, 24, 25), SBP = c(100, 120, 140, 110, 120, 130, 
120), diab = c(0, 1, 1, 1, 0, 1, 1), stroke = c(0, 1, 0, 0, 1, 
1, 1)), .Names = c("age", "gender", "smoke", "BMI", "SBP", "diab", 
"stroke"), row.names = c(NA, -7L), class = "data.frame")
완전한

실제로 모델을 반복적 으로 확장하는 대신 최종 행 바인딩을 위해 data.frame 컬렉션을 반환 할 수 있으므로 lapply귀하의 경우에 더 나은 접근 방식이 될 수 있습니다 .for

아래 예제 는 게시 된 데이터가 아니기 때문에 hscrp_mgl무작위 화 합니다. 따라서 결과를 무시하고 프로세스를 고려하십시오. 또한 신뢰 구간은 서로 다른 열에서 낮음과 높음으로 나뉩니다.

set.seed(456)
df <- data.frame(hscrp_mgl = abs(rnorm(250)),
                 age = sample(100, 1000, replace=TRUE),
                 gender = sample(0:1, 1000, replace=TRUE),
                 smoke = sample(1:4, 1000, replace=TRUE),
                 BMI = sample(19:25, 1000, replace=TRUE),
                 SBP = sample(c(100, 120, 140, 110, 120, 130, 120),
                              1000, replace=TRUE),
                 diab = sample(0:1, 1000, replace=TRUE),
                 stroke = sample(0:1, 1000, replace=TRUE))  

# ITERATE THROUGH COLUMN NUMBERS (SUBSETTING OUT FIRST AND LAST)
modeldfs <- lapply(seq_along(df)[3:ncol(df)-1], function(i) {
  strf <- paste("stroke ~ log2(hscrp_mgl)", 
                paste(names(df)[2:i], collapse = "+"), sep = "+")
  print(strf)

  # FIT DYNAMIC CUMULATIVE FORMULA USING names() TO PASS IN COLUMN NAME
  fit <- glm(as.formula(strf), family=binomial, data=df)

  # BIND MODEL STATS
  data.frame(OR = exp(coef(fit)[i+1]), 
             CI_2.5 = exp(confint(fit)[i+1,1]), 
             CI_97.5 = exp(confint(fit)[i+1,2]))
})

model <- do.call(rbind, modeldfs)
model

산출

[1] "stroke ~ log2(hscrp_mgl)+age"
# Waiting for profiling to be done...
# Waiting for profiling to be done...
[1] "stroke ~ log2(hscrp_mgl)+age+gender"
# Waiting for profiling to be done...
# Waiting for profiling to be done...
[1] "stroke ~ log2(hscrp_mgl)+age+gender+smoke"
# Waiting for profiling to be done...
# Waiting for profiling to be done...
[1] "stroke ~ log2(hscrp_mgl)+age+gender+smoke+BMI"
# Waiting for profiling to be done...
# Waiting for profiling to be done...
[1] "stroke ~ log2(hscrp_mgl)+age+gender+smoke+BMI+SBP"
# Waiting for profiling to be done...
# Waiting for profiling to be done...
[1] "stroke ~ log2(hscrp_mgl)+age+gender+smoke+BMI+SBP+diab"
# Waiting for profiling to be done...
# Waiting for profiling to be done...
# > model <- do.call(rbind, modeldfs)
# > model
             OR    CI_2.5  CI_97.5
age    1.003285 0.9989043 1.007701
gender 1.067117 0.8318796 1.369055
smoke  1.005926 0.9005196 1.123717
BMI    1.011281 0.9505659 1.075928
SBP    1.003252 0.9929368 1.013692
diab   1.139586 0.8880643 1.462925

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

R의 for 루프에 조건을 순차적으로 추가하는 방법

분류에서Dev

Python에서 로지스틱 회귀를위한 다항식 기능 조정

분류에서Dev

루프에서 계수를 추출하는 R 로지스틱 회귀 : 루프 설정 오류

분류에서Dev

순환 평균 for 루프를 R에서 적용으로 대체

분류에서Dev

정렬 된 결과 집합에서 순차적으로 그룹 번호를 지정할 수 있습니까?

분류에서Dev

정렬 된 결과 집합에서 순차적으로 그룹 번호를 지정할 수 있습니까?

분류에서Dev

R-for 루프에서 순차적으로 열 삭제

분류에서Dev

R에서 미리 정의 된 구조의 기존 변수 집합에 대해 for 루프 내에서 함수를 적용하는 방법은 무엇입니까?

분류에서Dev

for 루프에서 생성 된 matplotlib 라인 차트의 크기를 어떻게 조정합니까?

분류에서Dev

R에서 루프 인 루프를 사용한 다중 회귀

분류에서Dev

MongoDB 하위 문서에 순차적으로 번호 지정

분류에서Dev

선형 회귀를위한 for 루프의 출력 이름 지정

분류에서Dev

루프에서 정의 된 차원으로 배열에 값 삽입

분류에서Dev

루프에 의해 생성 된 과거 결과를 보는 조건부로 루프를 끊는가? 벡터의 이전 값에 조건부 설정

분류에서Dev

pyspark에서 순차적으로가 아니라 동시에 for 루프를 실행하십시오.

분류에서Dev

R의 for 루프에서 동적으로 이름이 지정된 변수를 만들고 모든 새 변수에 0 값 할당

분류에서Dev

순서가 지정된 목록에서 재귀 적으로 작곡 생성

분류에서Dev

동적으로 구축 된 jQuery Promise 체인으로 특정 요소를 순차적으로 활성화

분류에서Dev

이 루프는 왜 무한히 실행됩니까? for 루프에서 쉼표로 구분 된 조건

분류에서Dev

r felm (lfe) 회귀로 표준 오차를 샌드위치 : 동적으로 공식 정의

분류에서Dev

R의 for 루프에서 동적으로 명명 된 객체를 만들고 동적 값을 할당합니다.

분류에서Dev

순서가 지정된 연결 목록에 재귀 적으로 추가

분류에서Dev

R에서 문자 목록 / 벡터로 지정된 매크로 변수를 포함하는 루프

분류에서Dev

NotifyAll이 제대로 작동하지 않음 : 스레드 실행 순서를 제어하는 프로그램-정수를 순차적으로 인쇄

분류에서Dev

Java : 반복자를 사용하여 중첩 된 (2 차) 루프로 모든 고유 한 순서가 지정되지 않은 쌍 인쇄

분류에서Dev

R은 열 조회가 다른 데이터에서 가져온 경우 중첩 된 for 루프를 dplyr로 바꿉니다.

분류에서Dev

backgound 프로세스를 순차적으로 시작하는 분리 된 루프를 실행하는 Bash 스크립트

분류에서Dev

bash에서 중첩 된 while 루프를 사용하여 오름차순으로 숫자를 인쇄하려고합니다.

분류에서Dev

MATLAB에서 단일 루프 또는 조밀 한 루프가 계산적으로 더 효율적입니까?

Related 관련 기사

  1. 1

    R의 for 루프에 조건을 순차적으로 추가하는 방법

  2. 2

    Python에서 로지스틱 회귀를위한 다항식 기능 조정

  3. 3

    루프에서 계수를 추출하는 R 로지스틱 회귀 : 루프 설정 오류

  4. 4

    순환 평균 for 루프를 R에서 적용으로 대체

  5. 5

    정렬 된 결과 집합에서 순차적으로 그룹 번호를 지정할 수 있습니까?

  6. 6

    정렬 된 결과 집합에서 순차적으로 그룹 번호를 지정할 수 있습니까?

  7. 7

    R-for 루프에서 순차적으로 열 삭제

  8. 8

    R에서 미리 정의 된 구조의 기존 변수 집합에 대해 for 루프 내에서 함수를 적용하는 방법은 무엇입니까?

  9. 9

    for 루프에서 생성 된 matplotlib 라인 차트의 크기를 어떻게 조정합니까?

  10. 10

    R에서 루프 인 루프를 사용한 다중 회귀

  11. 11

    MongoDB 하위 문서에 순차적으로 번호 지정

  12. 12

    선형 회귀를위한 for 루프의 출력 이름 지정

  13. 13

    루프에서 정의 된 차원으로 배열에 값 삽입

  14. 14

    루프에 의해 생성 된 과거 결과를 보는 조건부로 루프를 끊는가? 벡터의 이전 값에 조건부 설정

  15. 15

    pyspark에서 순차적으로가 아니라 동시에 for 루프를 실행하십시오.

  16. 16

    R의 for 루프에서 동적으로 이름이 지정된 변수를 만들고 모든 새 변수에 0 값 할당

  17. 17

    순서가 지정된 목록에서 재귀 적으로 작곡 생성

  18. 18

    동적으로 구축 된 jQuery Promise 체인으로 특정 요소를 순차적으로 활성화

  19. 19

    이 루프는 왜 무한히 실행됩니까? for 루프에서 쉼표로 구분 된 조건

  20. 20

    r felm (lfe) 회귀로 표준 오차를 샌드위치 : 동적으로 공식 정의

  21. 21

    R의 for 루프에서 동적으로 명명 된 객체를 만들고 동적 값을 할당합니다.

  22. 22

    순서가 지정된 연결 목록에 재귀 적으로 추가

  23. 23

    R에서 문자 목록 / 벡터로 지정된 매크로 변수를 포함하는 루프

  24. 24

    NotifyAll이 제대로 작동하지 않음 : 스레드 실행 순서를 제어하는 프로그램-정수를 순차적으로 인쇄

  25. 25

    Java : 반복자를 사용하여 중첩 된 (2 차) 루프로 모든 고유 한 순서가 지정되지 않은 쌍 인쇄

  26. 26

    R은 열 조회가 다른 데이터에서 가져온 경우 중첩 된 for 루프를 dplyr로 바꿉니다.

  27. 27

    backgound 프로세스를 순차적으로 시작하는 분리 된 루프를 실행하는 Bash 스크립트

  28. 28

    bash에서 중첩 된 while 루프를 사용하여 오름차순으로 숫자를 인쇄하려고합니다.

  29. 29

    MATLAB에서 단일 루프 또는 조밀 한 루프가 계산적으로 더 효율적입니까?

뜨겁다태그

보관