• Daum
  • |
  • 카페
  • |
  • 메일
  • |
 
카페정보
Biostatistics
 
 
 
 

친구 카페

 
 
카페 게시글
책: R을 이용한 누구나 하는 통계분석 회귀모형에서 예측변수가 ordinal factor인 경우 어떻게 해석해야 하나요?
cardiomoon 추천 0 조회 203 22.03.30 13:55 댓글 8
게시글 본문내용
 
다음검색
댓글
  • 22.03.30 22:57

    첫댓글 헉... 이런 건 처음 봅니다.
    L: linear, Q: quadratic, C: cubicle 각각 1승, 2승, 3승을 뜻합니다. 나머지도 둘도 ^4, ^5 이죠.
    summary(with(mtcars,lm(mpg ~ I(carb)+I(carb^2)+I(carb^3)+I(carb^4)+I(carb^5)))) 같이 polynomial regression을 한 것으로 추정됩니다.
    그런데 t-value가 아래로 갈수록 점점 주는 경향이 있는 걸 보면 orthogonal polynomial regression같은 변형을 사용한 것으로 보입니다.

    Linear일때 p-value가 가장 작으니 linear 관계가 유력하다는 걸까요?

  • 22.04.01 13:32

    저도 궁금해져서 구글링을 해봤는데 아래와 같은 답변을 찾았습니다. 결론적으로는 안재형 박사님이 말씀하신게 맞는 것 같네요! ordered factor를 linear model에 사용한다는 것은 level이 하나 증가할 때 마다의 효과가 linear함을 가정한다는 것인데, 그 부분을 알 수 없기에 spline등을 사용한다는 것 같습니다. 원문은 아래와 같습니다.

    A modern way of handling it could be via an additive model, representing the ordinal independent variable via a spline. In R, if you make the ordinal predictor an "ordered factor" (with for instance the code ord <- factor(sample(1:5,20,replace=TRUE),ordered=TRUE) ) then in a linear model it will be represented via orthogonal polynomials.

  • 22.04.01 13:32

    https://stats.stackexchange.com/questions/195246/how-to-handle-ordinal-categorical-variable-as-independent-variable

  • 22.04.02 01:55

    @JHK21 수수께끼를 푸셨네요. polynomial contrasts... 1,2,3,4,5,6 대신 다음을 회귀계수로 이용했겠네요.
    L, Q, C ^4, ^5가 나오는걸 보니 맞나봅니다^^
    맞나 확인해 보려면 1,2,3,4,5,6 자리에 아랫걸 합쳐봐야겠는데요.

    > contr.poly(6)
    .L .Q .C ^4 ^5
    [1,] -0.5976143 0.5455447 -0.3726780 0.1889822 -0.06299408
    [2,] -0.3585686 -0.1091089 0.5217492 -0.5669467 0.31497039
    [3,] -0.1195229 -0.4364358 0.2981424 0.3779645 -0.62994079
    [4,] 0.1195229 -0.4364358 -0.2981424 0.3779645 0.62994079
    [5,] 0.3585686 -0.1091089 -0.5217492 -0.5669467 -0.31497039
    [6,] 0.5976143 0.5455447 0.3726780 0.1889822 0.06299408

  • 22.04.02 02:43

    이런... carb에 1~6외에 8도 있네요.

    pp=data.frame(id=c(1:6,8), contr.poly(7)) # polynomial contrasts를 만들어서
    mc=sqldf("select mtcars.*, pp.* from mtcars left join pp on mtcars.carb=pp.id") # mtcars에 merge해서
    summary(lm(mpg~.L+.Q+.C+X.4+X.5,data=mc)) # 했는데...

    비슷한데 좀 다르게 나옵니다.
    이런 식으로 했을텐데 8을 어떻게 처리한 건지 모르겠네요^^

  • 22.04.02 02:48

    contr.poly(7) 대신 아래와 같이 score에 8을 넣어도 여전히 같지는 않은데요.
    contr.poly(n=7,scores=c(1:6,8))
    contr.poly(n=8) 이것도 다르고요.

  • 22.04.03 02:16

    @안재형 Level 5는 없는 것 같은데 c(1:4, 6,8)로 해보면 동일하지 않을까요? 컴퓨터를 킬 수 없는 환경이라 따로 돌려보지 못했네요

  • 작성자 22.04.02 10:12

    저도 이렇게 저렇게 해보는데 잘 모르겠네요... 비밀을 풀면 다시 글 올리겠습니다.

최신목록