선형 방정식에서 요인 및 대화식 항에 대한 계수 항을 적용하는 방법은 무엇입니까?


9

R을 사용하여 연속 예측 변수와 불연속 예측 변수를 혼합하여 단일 반응 변수에 대한 선형 모형을 피팅했습니다. 이것은 기본적이지만 불연속 계수에 대한 계수가 어떻게 작동하는지 파악하는 데 어려움을 겪고 있습니다.

개념 : 연속 변수 'x'의 계수는 형식으로 적용 y = coefx(varx) + intercept되지만 계수가 숫자가 아닌 경우 계수 z에 대해 어떻게 작동합니까?y = coefx(varx) + coefz(factorz???) + intercept

특정 : 나는 R의 모델을 lm(log(c) ~ log(d) + h + a + f + h:a)어디에 h있고 f숫자가 아닌 이산적인 요소 로 피팅했습니다 . 계수는 다음과 같습니다.

Coefficients:
              Estimate 
(Intercept)  -0.679695 
log(d)        1.791294 
h1            0.870735  
h2           -0.447570  
h3            0.542033   
a             0.037362  
f1           -0.588362  
f2            0.816825 
f3            0.534440
h1:a         -0.085658
h2:a         -0.034970 
h3:a         -0.040637

이것을 사용하여 예측 방정식을 만드는 방법은 무엇입니까?

log(c) =  1.791294(log(d)) + 0.037362(a) + h??? + f???? + h:a???? + -0.679695

아니면 내가 잘못하고 있습니까?

나는 그 개념이 주제가 범주에 속 h1하고 f2방정식이 다음 과 같다고 생각합니다 .

log(c) =  1.791294(log(d)) + 0.037362(a) +  0.870735  + 0.816825  + h:a???? + -0.679695

그러나 h:a대화 형 용어가 어떻게 구문 분석 되는지는 확실하지 않습니다 . 쉬워 줘서 고마워

답변:


14

이는 R 에만 해당되는 문제가 아닙니다. R은 일반적인 계수 표시를 사용합니다.

이러한 회귀 출력을 읽을 때 (종이, 교과서 또는 통계 소프트웨어에서) 어떤 변수가 "연속적"이고 어떤 변수가 "범주 적"인지 알아야합니다.

  • "연속적인"값은 명시 적으로 숫자이며 숫자 값은 회귀 피팅에서 그대로 사용되었습니다.

  • "범주 형"변수 는 숫자 인 변수를 포함하여 모든 유형이 될 수 있습니다 ! 그것들을 범주 적으로 만드는 것은 소프트웨어가 그것들을 "인자"로 취급한다는 것입니다. 즉, 발견 된 각각의 고유 한 값은 구별되는 무언가 의 지표 로 간주됩니다 .

    대부분의 소프트웨어는 숫자가 아닌 값 (예 : 문자열)을 요인으로 취급합니다. 대부분의 소프트웨어는 수치를 인자로 취급하도록 설득 될 수 있습니다. 예를 들어 우편 서비스 코드 (미국의 ZIP 코드) 숫자처럼 보이지만 실제로는 사서함 집합의 코드 일뿐입니다. 우편 번호를 다른 숫자로 더하거나 빼고 곱하는 것은 의미가 없습니다! (이러한 유연성은 일반적인 실수의 원천입니다.주의하지 않거나 무의식적으로 소프트웨어는 사용자 가 범주 형으로 간주 하는 변수 연속 형 또는 그 반대로 간주 할 수 있습니다. 조심하십시오!)

    그럼에도 불구하고, 범주 형 변수는 피팅 알고리즘을 적용하기 위해 어떤 방식 으로든 숫자로 표현되어야합니다. 인코딩 하는 방법에는 여러 가지가 있습니다. 코드는 "더미 변수"를 사용하여 생성됩니다. 이 사이트에서 검색하여 더미 변수 인코딩에 대해 자세히 알아보십시오. 세부 사항은 여기서 중요하지 않습니다.

질문에 우리는 말된다 hf범주 ( '이산') 값입니다. 기본적으로, log(d)그리고 a연속이다. 그게 우리가 알아야 할 전부입니다. 모델은

y=0.679695+1.791294 log(d)+0.870735 if h=h10.447570 if h=h2+0.542033 if h=h3+0.037362 a0.588362 if f=f1+0.816825 if f=f2+0.534440 if f=f30.085658 a if h=h10.034970 a if h=h20.040637 a if h=h3

여기에 적용되는 규칙은 다음과 같습니다.

  • "절편"이라는 용어는 추가 상수 (첫 번째 줄)입니다.

  • 연속 변수는, 자신의 계수를 곱 도 "상호 작용"의h1:a, h2:ah3:a용어. (원래 질문에 대답합니다.)

  • 범주 형 변수 (또는 요인)는 해당 요인의 값이 나타나는 경우 에만 포함 됩니다.

예를 들어, 그 가정log(d)=2, h=h3, a=1, f=f2. 이 모델에 적합한 값은

y^=0.6797+1.7913×(2)+0.5420+0.0374×(1)+0.81680.0406×(1).

세 가지 값 중 정확히 하나를 h취할 수 있기 때문에 대부분의 모델 계수가 계산에 나타나지 않는 방법에 주목 하십시오.h1, h2, h3따라서 단지 세 개의 계수의 일(0.870735,0.447570,0.542033)적용 h단지 세 개의 계수의 일(0.085658,0.034970,0.040637)상호 작용 이 증가 a합니다 h:a. 마찬가지로 f어떤 특정한 경우 에도 하나의 계수 만 적용됩니다 .


8

이것은 설명 일 뿐이지 만 우리가 사용할 수있는 제한된 편집 상자에는 적합하지 않습니다.

@ whuber가 답장에서했던 것처럼 회귀 방정식이 일반 텍스트로 명확하게 쓰여진 것을 보는 것이 좋습니다. 다음은 Hmisc 패키지를 사용하여 R에서 빠른 방법 입니다. (저도 rms를 사용 하지만 실제로는 중요하지 않습니다.) 기본적으로는 aLATEX 기계에서 조판 시스템을 사용할 수 있습니다.

먼저 몇 가지 데이터를 시뮬레이션하겠습니다.

n <- 200
x1 <- runif(n)
x2 <- runif(n)
x3 <- runif(n)
g1 <- gl(2, 100, n, labels=letters[1:2])
g2 <- cut2(runif(n), g=4)
y <- x1 + x2 + rnorm(200)

그런 다음 회귀 모형을 적합시킵니다.

f <- ols(y ~ x1 + x2 + x3 + g1 + g2 + x1:g1)

결과는 다음과 같습니다.

Linear Regression Model

ols(formula = y ~ x1 + x2 + x3 + g1 + g2 + x1:g1)

                Model Likelihood     Discrimination    
                   Ratio Test           Indexes        
Obs      200    LR chi2     35.22    R2       0.161    
sigma 0.9887    d.f.            8    R2 adj   0.126    
d.f.     191    Pr(> chi2) 0.0000    g        0.487    

Residuals

    Min      1Q  Median      3Q     Max 
-3.1642 -0.7109  0.1015  0.7363  2.7342 

                   Coef    S.E.   t     Pr(>|t|)
Intercept           0.0540 0.2932  0.18 0.8541  
x1                  1.1414 0.3642  3.13 0.0020  
x2                  0.8546 0.2331  3.67 0.0003  
x3                 -0.0048 0.2472 -0.02 0.9844  
g1=b                0.2099 0.2895  0.73 0.4692  
g2=[0.23278,0.553)  0.0609 0.1988  0.31 0.7598  
g2=[0.55315,0.777) -0.2615 0.1987 -1.32 0.1896  
g2=[0.77742,0.985] -0.2107 0.1986 -1.06 0.2901  
x1 * g1=b          -0.2354 0.5020 -0.47 0.6396  

그런 다음 해당 회귀 방정식을 인쇄하려면 다음 latex과 같이 일반 함수를 사용하십시오 .

latex(f)

dvi를 png로 변환하면 다음과 같은 것을 얻을 수 있습니다

여기에 이미지 설명을 입력하십시오

IMO는 수치 및 범주 형 예측 변수에 대한 실제 또는 선택된 값에 따라 예측 된 값을 계산하는 방법을 보여주는 장점이 있습니다. 후자의 경우 요인 수준은 해당 계수 근처의 괄호 안에 표시됩니다.


1
+1 좋은 기능입니다. 다음과 같은 용어의 구문+0.2099013{b}그러나이 표현과 범주 형 변수 사이에는 명백한 관계가 없으며 g1, 또한 완전히 명백하지도 않습니다.{b}정말 지표를 나타냅니다 를 냅니다g1=b 의 수치보다는 b! (여기,b "b"(문자)는 의미는 충분하지만 경고는 충분하지만 범주가 다음과 같이 숫자로 코딩 된 경우 01, 조심해 ...)
whuber

1
@whuber 위의 이미지는 잘려나 갔지만 제목이 그룹 c에 있으면 "{c} = 1이고 그렇지 않으면 0입니다."라는 각주 c가 있습니다. g1 레벨을 나타내지 만 일반적으로 매우 직관적입니다. 순수한 텍스이므로 나중에 소스 파일을 편집 할 수 있습니다). 첨부 된 또 다른 요약 g1은 이제 4 단계 요소가되도록 변경 한 것입니다. 그러나 0/1 레이블이 더 혼동 될 수 있습니다 .
chl

5

"대비"가 기본값인지 확인하고 다음 options()을 찾을 수 있습니다.

$contrasts
        unordered           ordered 
"contr.treatment"      "contr.poly" 

정렬되지 않은 대비가 (설정을 contr.treatment변경하지 않는 한 그대로)로 설정된 경우 각 요인의 첫 번째 수준이 기준으로 설정됩니다. 다른 수준의 요인에 대해 작성된 더미 변수 앞의 계수에 대한 추정치 만 제공됩니다 . 실제로 이러한 계수는 "모델의 다른 모든 항목에 대해 제어 된 요인의 기준 수준과 비교하여이 요인 수준에서 반응 변수가 평균적으로 얼마나 다른가"입니다.

나는 당신의 출력에서 ​​a h0f0h와 f에 대한 기준 레벨이 있다고 추측하고 있습니다 (명암에 대한 기본 옵션이 아닌 경우 몇 가지 가능성이 있습니다. ?contr.treatment도움이 필요합니다).

상호 작용과 비슷합니다. 이전 단락이 정확하다면,에 대한 추정치 a는 실제로 awhen 의 기울기가 될 것 h=h0입니다. 교호 작용에 적용되는 요약에 제공된 추정치는 여러 수준의 기울기가 얼마나 많이 변하는 지입니다 h.

따라서 h = h1 및 f = f2 인 예제에서 다음을 시도하십시오.

log(c) =  1.791294(log(d)) + (0.037362 - 0.085658) (a) +  0.870735  + 0.816825  -0.679695

아, 그리고 당신은 predict()실제로 많은 것을 할 때 사용할 수 있습니다 ... 실제로 보고서를 작성하는 대신 무언가를 예측하고 싶다면. 님이 만든 개체에 ?predict.lm어떤 영향 predict()이 있는지 확인하십시오 lm.


+1 (실제로, 나는 한 달 전에 이것을 상향 조정했고 지금 다시 다시 읽게됩니다),에 의해 대비 유형을 확인하는 것이 좋습니다 options(). 필요한 것을 찾으려면 많은 정크를 스크롤해야합니다. 시도해 볼 수 options()$contrasts있으며 원하는 결과 만 출력합니다.
gung-복직 모니카

좋은 제안, 내 뇌는 잠들었을 것이다.
피터 엘리스

당신은 ... 나는 종종 내가 잠자리에 들기 직전에 CV 질문에 대답, 알
궁을 - 분석 재개 모니카
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.