R에서 반복 측정 값이있는 선형 회귀


12

반복 측정 설계를 위해 R에서 선형 회귀를 수행하는 방법을 알 수 없었습니다. A의 이전 질문 (아직 답) 그것은 사용하지 않는 나에게 제안 된 lm혼합 모델을 사용하지 않고 있지만. 나는 lm다음과 같은 방식으로 사용 했다 :

lm.velocity_vs_Velocity_response <- lm(Velocity_response~Velocity*Subject, data=mydata)

(데이터 세트에 대한 자세한 내용은 위의 링크에서 찾을 수 있습니다)

그러나 인터넷에서 선형 회귀 분석을 수행하는 방법을 보여주는 R 코드가있는 예제를 찾을 수 없었습니다.

내가 원하는 것은 한편으로는 데이터에 맞는 선을 사용하여 데이터의 플롯이고, 다른 한편 으로는 모델의 유의성 테스트를위한 p- 값과 함께 값입니다.R2

제안을 해줄 사람이 있습니까? 모든 R 코드 예제는 큰 도움이 될 수 있습니다.


편집
지금까지받은 제안에 따르면 Velocity_response (질문에서 파생)와 Velocity (성능에서 파생) 두 변수 사이에 선형 관계가 있는지 이해하기 위해 내 데이터를 분석하는 솔루션은 다음과 같아야합니다.

library(nlme)
summary(lme(Velocity_response ~ Velocity*Subject, data=scrd, random= ~1|Subject))

요약 결과는 다음과 같습니다.

    > summary(lme(Velocity_response ~ Velocity*Subject, data=scrd, random= ~1|Subject))
    Linear mixed-effects model fit by REML
     Data: scrd 
           AIC      BIC   logLik
      104.2542 126.1603 -30.1271

    Random effects:
     Formula: ~1 | Subject
            (Intercept) Residual
    StdDev:    2.833804 2.125353

Fixed effects: Velocity_response ~ Velocity * Subject 
                              Value Std.Error DF    t-value p-value
(Intercept)               -26.99558  25.82249 20 -1.0454288  0.3083
Velocity                   24.52675  19.28159 20  1.2720292  0.2180
SubjectSubject10           21.69377  27.18904  0  0.7978865     NaN
SubjectSubject11           11.31468  33.51749  0  0.3375754     NaN
SubjectSubject13           52.45966  53.96342  0  0.9721337     NaN
SubjectSubject2           -14.90571  34.16940  0 -0.4362299     NaN
SubjectSubject3            26.65853  29.41574  0  0.9062674     NaN
SubjectSubject6            37.28252  50.06033  0  0.7447517     NaN
SubjectSubject7            12.66581  26.58159  0  0.4764880     NaN
SubjectSubject8            14.28029  31.88142  0  0.4479188     NaN
SubjectSubject9             5.65504  34.54357  0  0.1637076     NaN
Velocity:SubjectSubject10 -11.89464  21.07070 20 -0.5645111  0.5787
Velocity:SubjectSubject11  -5.22544  27.68192 20 -0.1887672  0.8522
Velocity:SubjectSubject13 -41.06777  44.43318 20 -0.9242591  0.3664
Velocity:SubjectSubject2   11.53397  25.41780 20  0.4537754  0.6549
Velocity:SubjectSubject3  -19.47392  23.26966 20 -0.8368804  0.4125
Velocity:SubjectSubject6  -29.60138  41.47500 20 -0.7137162  0.4836
Velocity:SubjectSubject7   -6.85539  19.92271 20 -0.3440992  0.7344
Velocity:SubjectSubject8  -12.51390  22.54724 20 -0.5550080  0.5850
Velocity:SubjectSubject9   -2.22888  27.49938 20 -0.0810519  0.9362
 Correlation: 
                          (Intr) Velcty SbjS10 SbjS11 SbjS13 SbjcS2 SbjcS3 SbjcS6 SbjcS7 SbjcS8 SbjcS9 V:SS10 V:SS11 V:SS13 Vl:SS2 Vl:SS3
Velocity                  -0.993                                                                                                         
SubjectSubject10          -0.950  0.943                                                                                                  
SubjectSubject11          -0.770  0.765  0.732                                                                                           
SubjectSubject13          -0.479  0.475  0.454  0.369                                                                                    
SubjectSubject2           -0.756  0.751  0.718  0.582  0.362                                                                             
SubjectSubject3           -0.878  0.872  0.834  0.676  0.420  0.663                                                                      
SubjectSubject6           -0.516  0.512  0.490  0.397  0.247  0.390  0.453                                                               
SubjectSubject7           -0.971  0.965  0.923  0.748  0.465  0.734  0.853  0.501                                                        
SubjectSubject8           -0.810  0.804  0.769  0.624  0.388  0.612  0.711  0.418  0.787                                                 
SubjectSubject9           -0.748  0.742  0.710  0.576  0.358  0.565  0.656  0.386  0.726  0.605                                          
Velocity:SubjectSubject10  0.909 -0.915 -0.981 -0.700 -0.435 -0.687 -0.798 -0.469 -0.883 -0.736 -0.679                                   
Velocity:SubjectSubject11  0.692 -0.697 -0.657 -0.986 -0.331 -0.523 -0.607 -0.357 -0.672 -0.560 -0.517  0.637                            
Velocity:SubjectSubject13  0.431 -0.434 -0.409 -0.332 -0.996 -0.326 -0.378 -0.222 -0.419 -0.349 -0.322  0.397  0.302                     
Velocity:SubjectSubject2   0.753 -0.759 -0.715 -0.580 -0.360 -0.992 -0.661 -0.389 -0.732 -0.610 -0.563  0.694  0.528  0.329              
Velocity:SubjectSubject3   0.823 -0.829 -0.782 -0.634 -0.394 -0.622 -0.984 -0.424 -0.799 -0.667 -0.615  0.758  0.577  0.360  0.629       
Velocity:SubjectSubject6   0.462 -0.465 -0.438 -0.356 -0.221 -0.349 -0.405 -0.995 -0.449 -0.374 -0.345  0.425  0.324  0.202  0.353  0.385
Velocity:SubjectSubject7   0.961 -0.968 -0.913 -0.740 -0.460 -0.726 -0.844 -0.496 -0.986 -0.778 -0.718  0.886  0.674  0.420  0.734  0.802
Velocity:SubjectSubject8   0.849 -0.855 -0.807 -0.654 -0.406 -0.642 -0.746 -0.438 -0.825 -0.988 -0.635  0.783  0.596  0.371  0.649  0.709
Velocity:SubjectSubject9   0.696 -0.701 -0.661 -0.536 -0.333 -0.526 -0.611 -0.359 -0.676 -0.564 -0.990  0.642  0.488  0.304  0.532  0.581
                          Vl:SS6 Vl:SS7 Vl:SS8
Velocity                                      
SubjectSubject10                              
SubjectSubject11                              
SubjectSubject13                              
SubjectSubject2                               
SubjectSubject3                               
SubjectSubject6                               
SubjectSubject7                               
SubjectSubject8                               
SubjectSubject9                               
Velocity:SubjectSubject10                     
Velocity:SubjectSubject11                     
Velocity:SubjectSubject13                     
Velocity:SubjectSubject2                      
Velocity:SubjectSubject3                      
Velocity:SubjectSubject6                      
Velocity:SubjectSubject7   0.450              
Velocity:SubjectSubject8   0.398  0.828       
Velocity:SubjectSubject9   0.326  0.679  0.600

Standardized Within-Group Residuals:
        Min          Q1         Med          Q3         Max 
-1.47194581 -0.46509026 -0.05537193  0.39069634  1.89436646 

Number of Observations: 40
Number of Groups: 10 
Warning message:
In pt(q, df, lower.tail, log.p) : NaNs produced
> 

이제 두 변수 사이에 선형 관계가 있는지 여부를 나타내는 R ^ 2 및 해당 p- 값을 어디에서 얻을 수 있는지 이해하지 못합니다. 회귀.

누구든지 나를 밝게 해 줄 수 있습니까? 당신의 도움이 정말 필요합니다 ...


Zuur 등의 "R을 이용한 생태학에서의 혼합 효과 모델 및 확장" 는 선형 혼합 효과 모델에 대한 좋은 소개로 이론에 덜 집중하고 방법론의 적용에 더 중점을 둡니다.
롤랜드

친애하는 롤랜드, 나는 그 책이 유용하다고 생각하지만, 오히려 온라인에서 무언가를 찾고 있습니다 ... 제안 할 웹 페이지가 있습니까?
L_T September

1
이전 게시물에서 말했듯이 lm ()에는 이와 관련된 플롯이 있습니다. 따라서 모델이 M1 인 경우 plot (M1)을 사용할 수 있습니다.
Peter Flom-Monica Monica 복원

친애하는 @PeterFlom 예, 반복 측정 디자인에 lm을 사용하지 말라고 말했습니다. 따라서 내 질문은 내 데이터 또는 다른 함수를 분석하기 위해 lm을 사용 해야하는지입니다. 어떠한 제안?
L_T September

1
내가 말했듯이 다단계 모델을 살펴보십시오. R에서는 nlme패키지를 볼 수 있습니다 . 또한이 사이트에서 주제를 검색하면 여기에 관한 많은 글이 있습니다.
Peter Flom-Monica Monica 복원

답변:


17

실제로하는 것은 분석 목표에 달려 있습니다. 나는 당신의 분석의 목표가 정확히 무엇인지 확실하지 않지만, 몇 가지 예를 살펴볼 것이며, 그 중 하나가 당신의 상황에 적용되기를 바랍니다.

사례 1 : 두 가지 측정 된 하나의 정량 변수

참가자들에게 통계 테스트를 두 번 받도록하고, 두 번째 측정의 평균 점수가 첫 번째 측정과 다른지 (학습이 발생했는지 여부를 결정)하는 인간 대상 연구를 수행했다고 가정 해 봅시다. 점수 test1 및 test2가 데이터 프레임 d에 저장된 경우 다음과 같이 lm () 함수를 사용하여 전체적으로 수행 할 수 있습니다.

mod <- lm(test2 - test1 ~ 1, data = d)
summary(mod)

절편의 검정은 test1과 test2의 차이 검정입니다. test1과 test2의 차이에 대한 delta-R ^ 2는 없습니다. 대신 효과 크기의 측정 값은 cohen의 d와 같아야합니다.

사례 2a : 두 번 측정 된 양적 변수 하나,이 분성 변수 하나, 피험자간에 완전히 측정 됨

우리는 동일한 연구 설계를 가지고 있지만 남녀에 대해 다른 학습률이 발생했는지 알고 싶습니다. 따라서 두 번 측정되는 양적 변수 (테스트 성능)와 한 번 측정 된 이분법 변수가 있습니다. test1, test2 및 성별이 모두 데이터 프레임 d에 포함되어 있다고 가정하면 다음과 같이 lm () 만 사용하여이 모델을 테스트 할 수도 있습니다.

mod <- lm(test2 - test1 ~ gender, data = d)
summary(mod)
lm.sumSquares(mod) # lm.sumSquares() is located in the lmSupport package, and gives the change in R^2 due to the between-subjects part of the model

성별이 중심에 있다고 가정하면 (예 : 남성 = -.5 및 여성 = +.5)이 모델의 절편은 테스트 1과 테스트 2의 차이에 대한 테스트이며 남성과 여성의 평균입니다. 성별에 대한 계수는 시간과 성별 사이의 상호 작용입니다. 시간의 경과에 따라 평균적으로 성별의 효과를 얻으려면 다음을 수행해야합니다.

mod <- lm(rowMeans(cbind(test2, test1)) ~ gender, data = d)
summary(mod)

사례 2b : 1 회 정량적 변수, 2 회 정량적 변수, 1 회만 측정

다시 한 번 정량적 변수가 두 번 측정되고 한 번의 정량 변수가 있다고 가정합니다. 예를 들어 통계에 대한 기준 관심이 어느 정도 있다고 가정하고 기준 관심 수준이 높은 사람들이 1 ~ 2 번에 더 많이 배웠는지 여부를 결정하려고한다고 가정 해 보겠습니다. :

d$interestc <- d$interest - mean(d$interest)

test1, test2 및 interestc가 모두 데이터 프레임 d에 있다고 가정하면이 질문은 사례 1a와 매우 유사하게 테스트 될 수 있습니다.

mod <- lm(test2 - test1 ~ interestc, data = d)
summary(mod)
lm.sumSquares(mod)

다시 한번,이 모형의 절편은이자에 대한 평균, 시험 점수가 시간 1에서 시간 2로 변경되었는지 테스트합니다. 그러나이 해석은 관심이 중심에있을 때만 유지됩니다. 관심 계수는 시간의 영향이 기준 관심에 의존하는지 여부입니다. 위와 같이 test1과 test 2의 평균을 구하고이 복합 변수에 대한 관심 효과를 테스트함으로써 시간에 따른 평균적인 관심 효과를 얻을 수 있습니다.

사례 2c : 두 번 측정 된 정량 변수 하나, 범주 형 변수 한 개, 한 번만 측정

개체 간 변수가 한 번만 측정 된 범주라고 가정합니다. 예를 들어 인종이 다른 사람들 (백인 대 아시아 대 흑인 대 히스패닉)이 학습 시간이 다른지에 대해 관심이 있다고 가정 해 봅시다. test1, test2 및 인종이 데이터 프레임 d에 있다고 가정합니다. 먼저 코드 레이스를 대조해야합니다. 테스트하려는 특정 가설 / 질문에 따라 계획된 직교 대비, 더미 코드 또는 효과 코드를 사용하여 수행 할 수 있습니다 (이 작업을 수행하는 도우미 함수를 찾고 있다면 lm.setContrasts () 참조) . 인종 변수가 이미 대비 코딩되어 있다고 가정하면 lm ()을 위의 두 경우와 매우 유사하게 사용합니다.

mod <- lm(test2 - test1 ~ race, data = d)
summary(mod)
lm.sumSquares(mod)

레이스 콘트라스트가 중심이라고 가정하면,이 모델의 절편은 다시 한번 "주요 효과"입니다. 레이스 대비의 계수는 이러한 대비와 시간 간의 상호 작용입니다. 레이스의 옴니버스 효과를 얻으려면 다음 코드를 사용하십시오.

Anova(mod, type = 3)

사례 3 : 3 회 측정 된 하나의 정량적 변수

사례 1에서 설계에 세 번째 측정 지점을 추가했다고 가정 해 봅시다. 따라서 참가자는 통계 테스트를 두 번이 아닌 세 번으로 치렀습니다. 여기에서는 시점 (때로는 그렇지 않은)의 차이에 대한 옴니버스 테스트를 원하는지 여부에 따라 몇 가지 선택 사항이 있습니다.

예를 들어, 주요 가설은 테스트 점수가 시간 1에서 시간 3까지 선형 적으로 증가한다는 것입니다. test1, test2 및 test3이 데이터 프레임 d에 있다고 가정하면이 가설은 먼저 다음 합성을 작성하여 테스트 할 수 있습니다.

d$lin <- d[, paste("test", sep = "", 1:3)] %*% c(-1, 0, 1)

그런 다음 lin을 종속 변수로 사용하는 절편 만 모델이 다음과 같이 절편이 0과 다른지 여부를 테스트합니다.

mod <- lm(lin ~ 1, data = d)
summary(mod)

통계 점수가 시간이 지남에 따라 증가하고 있는지 테스트합니다. 물론 특정 가설에 따라 다른 유형의 사용자 지정 차이 점수를 만들 수도 있습니다.

옴니버스의 유의성 테스트에 관심이있는 경우 자동차 패키지의 Anova () 함수를 사용해야합니다. 구체적인 구현은 약간 복잡합니다. 기본적으로 lm ()을 사용하여 개체 내 변수와 개체 간 변수를 지정합니다. 그런 다음 모델의 개체 내 부분을 생성하고 (즉, test1, test2 및 test3 중 첫 번째, 두 번째 및 세 번째로 측정 된 것을 지정) idata라는 데이터 프레임을 만들어 해당 모델을 Anova ()로 전달합니다. 내 가상의 예를 사용하면 :

mod <- lm(cbind(test1, test2, test3) ~ 1, data = d) # No between-subjects portion of the model
idata <- data.frame(time = c("time1", "time2", "time3")) # Specify the within-subjects portion of the model
mod.A <- Anova(mod, idata = idata, idesign = ~time, type = 3) # Gives multivariate tests.  For univariate tests, add multivariate = FALSE
summary(mod.A)

idesign 문은 모델에 시간 변수 (test1, test2 및 test3으로 구성)를 포함하도록 Anova에 지시합니다. 이 코드는 시험 점수에 대한 시간의 영향에 대한 옴니버스 시험을 제공합니다.

사례 4 : 3 회 측정 된 1 개의 정량 변수, 대상 간 정량 변수

이 경우는 사례 3의 간단한 확장입니다. 위와 같이 1 자유도 테스트에 관심이있는 경우 개체 내 변수를 사용하여 사용자 지정 차이 점수를 간단히 만들 수 있습니다. 따라서 test1, test2, test3 및 interest가 모두 데이터 프레임 d에 있다고 가정하고 테스트 점수에 대한 시간의 선형 효과에 관심이 있다고 가정하고 (이러한 시간의 영향이 기준 관심사에 따라 어떻게 다른지) 가정합니다. 다음과 같은:

d$lin <- d[, paste("test", sep = "", 1:3)] %*% c(-1, 0, 1)

그런 다음 (중심 중심 관심사로) 다음을 수행하십시오.

mod <- lm(lin ~ interestc, data = d)
summary(mod)
lm.sumSquares(mod)

옴니버스 테스트를 원하는 경우 다음을 수행하십시오.

mod <- lm(cbind(test1, test2, test3) ~ interest, data = d) # We now have a between-subjects portion of the model
idata <- data.frame(time = c("time1", "time2", "time3"))
mod.A <- Anova(mod, idata = idata, idesign = ~time * interest, type = 3) # The idesign statement assumes that we're interested in the interaction between time and interest
summary(mod.A)

다른 경우 : 간결하게하기 위해 이것들을 생략 할 것이지만, 그들은 이미 설명한 것에 대한 간단한 확장입니다.

시간이 2 개 이상의 레벨을 갖는 (단 변량) 옴니버스 시간 테스트는 모두 구 형성을 가정합니다. 레벨의 수를 늘리면이 가정은 불가능합니다. 디자인에 몇 가지 측정 지점이있는 경우 (예 : 4+) 다중 레벨 모델링과 같은 것을 사용 하고이 기술에 특화된 패키지 (예 : nlme 또는 lme4)옮기는 것이 좋습니다 .

도움이 되었기를 바랍니다!


Patrick @ user1188407님께, 답변을 제공해 주셔서 대단히 감사합니다. 불행히도 내 경우는 아마도 마지막 문장에서 쓴 것에 적합 할 것입니다 ... 그래서 내 데이터를 처리하는 방법을 이해하려면 R 코드 예제가 필요합니다. 실제로 이전 게시물 stackoverflow.com/questions/12182373 / ...에 설명 된 실험 설계를 살펴보면 4 시간 동안 측정 된 변수 (예 : 4 가지 조건에서 측정 된 속도)가 있음을 알 수 있습니다.
L_T

그리고 네 가지 조건에서 인식 된 속도를 나타내는 변수 (velocity_response)와 선형 관계가 있는지 알고 싶습니다. 그래서 각 참가자는 4 가지 조건을 겪고 그 조건에 대한 인식을 평가했습니다. 퍼포먼스가 지각과 관련이 있는지 알고 싶습니다 ...
L_T

다단계 모델링 솔루션을 사용하려면 다양한 온라인 리소스를 활용할 수 있습니다. 시작하려면 살펴해야 NLME 패키지이 네트를 . 비 네트는 약간 구식 (2002)인데, 다단계 모델링에 대해 배울 때 유용했습니다. 마지막으로 nlme 패키지 제작자가 출판 한 책을 확인할 수 있습니다 .
패트릭 S. Forscher

Patrick 님, @ user1188407님께 감사합니다. 다단계 모델을 연구 한 결과 데이터를 분석하기 위해이 공식에 도달했습니다. lme (Velocity_response ~ Velocity * Subject, data = scrd, random = ~ 1 | Subject)이 공식이 분석에 올바른지 확인할 수 있습니까? 내 데이터를 수행하고 싶습니까? 그러나 R ^ 2 및 p- 값을 얻는 방법이나 회귀에 맞는 점과 선으로 그래픽을 그리는 방법을 이해하지 못합니다. 저를 좀 도와 주실 수 있나요? 나는 정적 인 사람이 아니다 ...
L_T

연구에 대한 나의 이해를 바탕으로 (그리고 당신이 개인 기간 형식으로 데이터를 포맷했다고 가정하면) 수식은 나에게 맞는 것 같습니다. 분석 결과를 객체에 저장하고 (예에서와 같이) 해당 객체의 요약을 가져 와서 p- 값을 얻을 수 있습니다. 그러나 다단계 모델과 전통적인 회귀의 차이로 인해 (예 : 효과 크기 메트릭에서 다단계 모델에는 표준 메트릭이 없음)이 기술을 사용하기 전에이 기술에 대해 자세히 읽어 보는 것이 좋습니다. 다른 사용자가 몇 가지 좋은 옵션을 추천 한 것 같습니다.
Patrick S. Forscher
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.