더북(TheBook)

Hmisc의 summary.formula는 포뮬러를 인자로 지정할 수 있으며, 지정한 포뮬러에 따라 데이터를 분할하여 분석할 수 있고, 분석 함수를 자유로이 지정할 수 있는 편리한 함수다. summary.formula( )의 요약 방식은 method 값에 따라 달라진다.

method=“response”인 경우 ~의 우측에 나열한 변수(이하 rhs) 각각이 ~의 좌측에 나열한 변수(이하 lhs)를 요약한다. mtcars 데이터에서 mpg(1갤런당 주행 마일)를 cyl(실린더의 수), hp(마력)에 따라 요약해보자.

> summary(mpg ~ cyl + hp, data=mtcars)  # method의 기본값은 response다.
mpg    N=32

+-------+---------+--+--------+
|       |         |N |mpg     |
+-------+---------+--+--------+
|cyl    |4        |11|26.66364|
|       |6        | 7|19.74286|
|       |8        |14|15.10000|
+-------+---------+--+--------+
|hp     |[ 52, 97)| 8|27.50000|
|       |[ 97,150)| 9|21.31111|
|       |[150,205)| 8|17.15000|
|       |[205,335]| 7|13.41429|
+-------+---------+--+--------+
|Overall|         |32|20.09062|
+-------+---------+--+--------+

코드 실행 결과 cyl의 값(4, 6, 8)에 따른 mpg, hp의 범위에 따른 mpg가 요약된 것을 볼 수 있다. 이때 요약에 사용되는 함수는 mean이다. fun에 함수를 지정하여 다른 요약 값을 얻을 수 있다. 다음은 평균 대신 분산을 구한 예다.

> summary(mpg ~ cyl + hp, data=mtcars, fun=var)
mpg    N=32

+-------+---------+--+---------+
|       |         |N |mpg mpg  |
+-------+---------+--+---------+
|cyl    |4        |11|20.338545|
|       |6        | 7| 2.112857|
|       |8        |14| 6.553846|
+-------+---------+--+---------+
|hp     |[ 52, 97)| 8|18.494286|
|       |[ 97,150)| 9|13.743611|
|       |[150,205)| 8| 3.431429|
|       |[205,335]| 7| 4.804762|
+-------+---------+--+---------+
|Overall|         |32|36.324103|
+-------+---------+--+---------+

method=“reverse”인 경우 lhs에는 범주형 변수를 적고 rhs에 변수들을 적으면 lhs의 분류에 따라 rhs가 요약된다. 다음은 cyl에 따라 mpg, hp를 요약한 예다.

> summary(cyl ~ mpg + hp, data=mtcars, method="reverse")
Descriptive Statistics by cyl

+---+--------------------+--------------------+--------------------+
|   |4                   |6                   |8                   |
|   |(N=11)              |(N=7)               |(N=14)              |
+---+--------------------+--------------------+--------------------+
|mpg| 22.80/26.00/30.40  | 18.65/19.70/21.00  | 14.40/15.20/16.25  |
+---+--------------------+--------------------+--------------------+
|hp | 65.50/ 91.00/ 96.00|110.00/110.00/123.00|176.25/192.50/241.25|
+---+--------------------+--------------------+--------------------+

method=“cross”는 rhs에 나열한 변수의 조합으로 lhs를 요약할 때 사용한다. mpg를 cyl과 hp의 조합에 따라 요약한 결과, 표의 각 셀에는 N(개수)과 평균 mpg가 나타난다.

> summary(mpg ~ cyl + hp, data=mtcars, method="cross")

mean by cyl, hp

+---+
|N  |
|mpg|
+---+
+---+---------+---------+---------+---------+--------+
|cyl|[ 52, 97)|[ 97,150)|[150,205)|[205,335]| ALL    |
+---+---------+---------+---------+---------+--------+
|4  | 8       | 3       | 0       | 0       |11      |
| | 27.50000| 24.43333| | |26.66364|
+---+---------+---------+---------+---------+--------+
|6  | 0       | 6       | 1       | 0       | 7      |
|   |         | 19.75000| 19.70000|         |19.74286|
+---+---------+---------+---------+---------+--------+
|8  | 0       | 0       | 7       | 7       |14      |
|   |         |         | 16.78571| 13.41429|15.10000|
+---+---------+---------+---------+---------+--------+
|ALL| 8       | 9       | 8       | 7       |32      |
|   | 27.50000| 21.31111| 17.15000| 13.41429|20.09062|
+---+---------+---------+---------+---------+--------+

summary.formula에는 test=TRUE를 지정하면 다양한 가설 검정을 수행하는 등의 기능도 포함되어 있다. example(summary.formula)로 어떤 기능이 지원되는지 살펴보기 바란다.

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