더북(TheBook)

이제 doBy 패키지에 대해 알아보자. 패키지를 설치하고 사용하기 위한 명령은 다음과 같다.

> install.packages("doBy")  # doBy 패키지를 설치함
> library(doBy)             # doBy 패키지를 불러들여 사용할 준비를 함

doBy 패키지의 summaryBy( )는 이름에서 짐작할 수 있듯이 원하는 컬럼의 값을 특정 조건에 따라 요약하는 목적으로 사용한다. 예를 들어, Sepal.Length와 Sepal.Width를 Species에 따라 살펴보려면 다음과 같이 하면 된다.

> summaryBy(Sepal.Width + Sepal.Length ~ Species, iris)
     Species Sepal.Width.mean Sepal.Length.mean
1     setosa            3.428             5.006
2 versicolor            2.770             5.936
3  virginica            2.974             6.588

위 코드에서 ‘Sepal.Length + Sepal.Length ~ Species’ 부분은 포뮬러(수식)Formula라고 하는데, 처리할 데이터를 일종의 수학 공식처럼 표현하는 방법이다. 이 예에서는 Sepal.Width와 Sepal.Length를 +로 연결해 이 두 가지에 대한 값을 결과에 각 컬럼으로 놓고, 각 행에는 ~ Species를 사용해 Species를 놓았다. 즉, 위 결과는 Sepal.Width와 Sepal.Length를 Species별로 요약한 것이다.

<Note> 포뮬러 해석하기

포뮬러의 일반적인 표현은 다음과 같다.

Y1 + Y2 + ... + Yn ~ X1 + X2 + ... + Xm

포뮬러의 정확한 의미는 사용하는 함수에 따라 다르나 일반적으로 “(Y1, Y2, ..., Yn)의 순서쌍을 (X1, X2, ..., Xm)의 순서쌍으로 모델링한다”고 볼 수 있다. 이때 상수항은 암시적으로 허용된다. 따라서 Y ~ X1은 선형 회귀에서 Y = a * X1 + b를 의미한다.

+는 여러 변수를 연결하기 위한 목적 또는 실제로 합을 의미하는 목적으로 사용한다. 이외에도 -, :, |, \* 등의 연산자를 사용할 수 있으며 이들의 의미는 다음 표에 정리했다.

표 4-18 포뮬러 연산자

연산자

의미

+

Y ~ X1 + X2

Y를 X1, X2로 모델링. 상수항은 암시적으로 허용된다. 따라서 선형 회귀에 이 포뮬러를 사용하면 Y = a * X1 + b * X2 + c를 의미한다.

-

Y ~ X1 - X2

Y를 X1로 모델링하되 X2는 제외한다.

특히 선형 회귀에서 Y ~ X1 + X2 - 1은 Y를 X1과 X2로 모델링하되 상수항은 제외한다는 의미다. 즉, Y = a * X1 + b * X2를 의미한다.

|

Y ~ X1 | X2

X2의 값에 따라 데이터를 그룹으로 묶은 후 각 그룹별로 Y ~ X1을 적용한다.

:

Y ~ X1:X2

Y를 X1과 X2의 상호 작용(interaction)에 따라 모델링한다. 상호 작용은 Y = a * X1 * X2 + b와 같이 X1과 X2가 동시에 Y 값에 영향을 주는 상황을 말한다. 특히 영향을 주는 방식이 Y = a * X1 + b * X2 + c와 같은 합의 형태와는 구분된다.[1]

*

Y ~ X1 * X2

Y ~ X1 + X2 + X1:X2의 축약형 표현이다.

여기서 정리한 내용은 일반적인 해석이며 정확한 사용은 각 패키지와 함수마다 다르다. 정확한 사용 방법은 함수의 도움말을 참고하기 바란다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.