R에서 모형을 정의하기 위해 사용하는 표현을 관계식(formular)이라고 부른다. 예컨대 Y = b0 + b1*x1 + b2*x2 + e 형태의 중다 회귀 분석은 R의 관계식으로 y ~ x1 + x2라고 표기한다.
관계식은 ~ 기호를 기준으로 왼쪽에는 종속변수, 오른쪽에는 독립변수를 쓴다. 회귀계수는 독립변수가 있으면 당연히 있어야 하기 때문에 표시해주지 않는다. 따라서 단순 회귀 분석의 경우 다음 (1)과 같은 관계식을 사용한다.
y ~ x # (1)
중다 회귀 분석처럼 독립 변수가 여러 개인 경우 +로 구분지어 나열하면 된다. 예를 들어 교육 연한(education)과 나이(age)을 독립변수로 하고 수입(income)을 종속변수로 하는 중다 회귀 분석에서 관계식은 아래 (2)와 같이 표현한다.
income ~ education + age # (2)
만약 데이터프레임에서 종속변수 하나를 제외한 모든 열을 독립변수로 넣고 싶다면 .을 사용한다.
y ~ .
a와 b의 상호작용은 a:b라는 꼴로 표현한다. (2)에서 education과 age의 상호작용항을 추가하고 싶다면 아래 (3)과 같이 한다.
income ~ education + age + education:age # (3)
(3)에서처럼 a + b + a:b 같은 꼴의 표현이 많기 때문에 이를 간단히 하기 위해 아래 (4)처럼 표현하기도 한다.
income ~ education * age # (4)
*가 곱하기라는 뜻으로 쓰이기 때문에 (4)가 상호작용항을 나타내는 것처럼 혼동하기 쉽지만 (4)는 (3)과 같은 의미이다. 다시 말해 a * b는 a + b + a:b이다.
데이터프레임에서 종속변수 y와 또 다른 변수 z를 제외한 나머지 모든 변수를 독립변수로 넣으려는 그런 경우가 있다. 이럴 때는 z를 + 대신 -를 해준다.
y ~ . - z
관계식에서 -는 뺄셈의 의미가 아니라 변수를 제외하라는 뜻이다. 상호작용항의 경우에도 쓸모가 있다. 아래에서 두 식의 의미는 동일하다.
y ~ w + x + z + w:x + x:z + z:w # (6-1) y ~ w*x*z - w:x:z #(6-2)
(6-2)에서 w*x*z는 w,x,z 각각을 독립변수로 추가하고 이들의 상호작용항도 모두 독립변수로 추가한다. 따라서 w:x, x:z, z:w, w:x:z 세 가지가 들어가게 된다. 이 중에서 w:x:z만 제외하면 (6-1)과 동일하게 된다.
R의 관계식에는 독립변수나 종속변수에 함수를 적용하는 것이 가능하다.
y ~ x^2 y ~ log(x) log(y) ~ x
관계식에서 절편(intercept)을 명시적으로 표현하고 싶을 때는 독립변수에 1을 추가 한다. 이것은 기본 옵션이기 때문에 아래 두 관계식은 동일하다.
y ~ x #(7-1) y ~ 1 + x #(7-2)
만약 절편이 원점을 지나게 하고 싶다면 독립변수에 0을 추가하거나 절편을 나타내는 1을 제외한다. 아래 세 식의 의미는 동일하다.
y ~ 0 + x y ~ -1 + x y ~ x - 1
절편은 기본으로 포함되기 때문에 굳이 7-2처럼 명시적으로 표시해줄 일이 없지만 종속변수의 기술통계를 간단히 내고 싶을 때 아래처럼 쓰는 방법이 있다.
> summary(lm(x ~ 1))
Call:
lm(formula = x ~ 1)
Residuals:
Min 1Q Median 3Q Max
-1.57043 -0.62564 0.02943 0.38499 2.37848
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.0303 0.1284 0.236 0.814
Residual standard error: 0.9082 on 49 degrees of freedom
x ~ 1이라는 어떤 다른 독립변수도 포함하지 않고 절편만 가지는 모형이므로 결국 x의 기술통계를 내게 된다. 절편의 추정량은 평균과 같고, 표준오차는 평균의 표준오차이다. 중위수는 평균과 잔차의 중위수를 더하면 되고, 표본 크기는 자유도에 1을 더하면 된다.