R에서 더미 변수 생성 및 해석
이 기사에서는 R에서 fastDummies
패키지의 dummy_cols()
함수를 사용하여 더미 변수를 생성하는 방법을 설명합니다. 단어 더미 변수와 더미 열은 같은 의미로 사용됩니다.
R에 fastDummies
패키지 설치
fastDummies
패키지를 설치하고 로드해야 합니다.
예제 코드:
# Install the fastDummies package.
install.packages("fastDummies")
# Load the fastDummies package.
library(fastDummies)
이제 범주형 변수가 있는 작은 데이터 프레임을 만듭니다.
예제 코드:
# Vectors.
cv = c("Bd", "Ba", "F", NA, "F", "F", "Ba")
nv = seq(1:7)
# Data Frame
orig_datf = data.frame(Num_V = nv,Cat_V=as.factor(cv))
# View the data frame.
orig_datf
str(orig_datf)
출력:
> str(orig_datf)
'data.frame': 7 obs. of 2 variables:
$ Num_V: int 1 2 3 4 5 6 7
$ Cat_V: Factor w/ 3 levels "Ba","Bd","F": 2 1 3 NA 3 3 1
표시된 대로 데이터 프레임에는 3요인 수준의 범주형 변수가 있습니다.
R은 알파벳 순서에 따라 요인 수준을 할당합니다. 이 세부 사항은 더미 변수를 만들 때 중요합니다.
dummy_cols()
함수를 사용하여 R에서 더미 열 생성
더미 변수를 생성할 열을 지정하지 않으면 함수는 모든 요소 또는 문자 유형 열에서 더미 열을 생성합니다.
예제 코드:
new_datf_default_all = dummy_cols(orig_datf)
new_datf_default_all
names(new_datf_default_all)
출력:
> names(new_datf_default_all)
[1] "Num_V" "Cat_V" "Cat_V_Ba" "Cat_V_Bd" "Cat_V_F" "Cat_V_NA"
열 목록에서 다음을 관찰하십시오.
- 범주형 변수에 3개의 범주가 있으므로 3개의 새 열이 표시됩니다.
- 범주형 열에 누락된 값(NA)이 있었기 때문에 값이 1인 NA를 나타내는 열도 하나 있습니다. 다른 모든 더미 열에는 NA가 있지만 원래 열에는 NA가 있습니다.
R에서 선택한 열에서 더미 변수 만들기
선택한 열에서만 더미 변수를 만들려면 select_columns
인수를 사용할 수 있습니다. 단일 열 이름을 문자열로, 여러 열을 벡터로 전달할 수 있습니다.
예제 코드:
# Pass a single column.
new_datf_select_cols = dummy_cols(orig_datf, select_columns = "Cat_V")
# Pass multiple columns using a vector.
new_datf_select_cols = dummy_cols(orig_datf, select_columns = c("Cat_V"))
R에서 다중공선성을 피하기 위해 하나의 열 제거
요인 열의 모든 수준을 사용하여 더미 변수를 만들 때 새 열은 선형 종속적입니다. 즉, 각 행에 대해 다른 모든 열의 값이 주어지면 마지막 열의 값을 예측할 수 있습니다.
이는 통계 분석(예: 선형 회귀) 결과에 영향을 미칩니다. 따라서 더미 변수를 생성하는 각 원래 열에 대해 더미 열 중 하나를 제거해야 합니다.
dummy_cols()
함수는 두 가지 옵션을 제공합니다. remove_first_dummy = TRUE
또는 remove_most_frequent_dummy = TRUE
로 설정할 수 있습니다.
다음 코드는 두 옵션을 모두 검사합니다.
예제 코드:
# Remove first.
new_datf_remove_first = dummy_cols(orig_datf, remove_first_dummy = TRUE)
# After removing first.
names(new_datf_remove_first)
# Remove most frequent.
new_datf_remove_most_frequent = dummy_cols(orig_datf, remove_most_frequent_dummy = TRUE)
# After removing most frequent
names(new_datf_remove_most_frequent)
출력:
> # After removing first.
> names(new_datf_remove_first)
[1] "Num_V" "Cat_V" "Cat_V_Bd" "Cat_V_F" "Cat_V_NA"
> # After removing most frequent
> names(new_datf_remove_most_frequent)
[1] "Num_V" "Cat_V" "Cat_V_Ba" "Cat_V_Bd"
두 명령의 출력에서 다음을 확인하십시오.
-
remove_first_dummy = TRUE
인수는 요인의 첫 번째 수준에 해당하는 열을 제거했습니다. -
remove_most_frequent_dummy = TRUE
인수는 원래 열에서 가장 자주 나타난 수준에 해당하는 열을 삭제했습니다.그러나 NA가 있는 위치를 나타내는 열을 삭제하는 효과도 있었습니다.
ignore_na = FALSE
를 설정해도 출력에 영향을 미치지 않았습니다.
NA 열을 유지하고 가장 빈번한 요소를 삭제하려는 경우 다음 해결 방법을 사용할 수 있습니다.
- 먼저
relevel()
함수를 사용하여 요인 열을relevel
합니다. 가장 빈번한 값을 첫 번째 수준으로 만듭니다. - 그런 다음
remove_first_dummy = TRUE
를 사용합니다.
예제 코드:
releveled_datf = orig_datf
# Relevel the desired column manually.
releveled_datf$Cat_V = relevel(releveled_datf$Cat_V, ref = "F")
# View the new levels.
levels(releveled_datf$Cat_V)
# NOW, remove first.
releveled_datf_remove_first = dummy_cols(releveled_datf, remove_first_dummy = TRUE)
# After removing first.
names(releveled_datf_remove_first)
출력:
> levels(releveled_datf$Cat_V)
[1] "F" "Ba" "Bd"
> # After removing first.
> names(releveled_datf_remove_first)
[1] "Num_V" "Cat_V" "Cat_V_Ba" "Cat_V_Bd" "Cat_V_NA"
더미 변수 해석
선형 회귀 설정에서 절편 계수는 원래 열의 기본 수준(또는 제거된 수준)의 영향을 포함한다고 합니다. 더미 열을 만들 때 하나의 열을 제거했음을 기억하십시오.
제거된 요소는 동일한 원본 열에서 생성된 모든 더미 열에 대해 값이 0인 것으로 해석됩니다. 따라서 그 효과는 요격에 포함됩니다.
각 더미 열에 대한 계수는 기본 수준과 비교하여 해당 요인 수준으로 인한 차이에 해당합니다. 이는 이 계수의 값에 따라 기준선과 비교하여 긍정적이거나 부정적인 영향이 될 수 있습니다.
이러한 해석 때문에 가장 빈번한 요인에 해당하는 열을 삭제하는 것이 유용합니다.