R에서 더미 변수를 만드는 방법(단계별)
더미 변수는 범주형 변수를 0 또는 1의 두 값 중 하나를 취하는 숫자 변수로 나타낼 수 있도록 회귀 분석에서 생성하는 변수 유형입니다.
예를 들어, 다음과 같은 데이터 세트가 있고 나이 와 결혼 상태를 사용하여 소득을 예측한다고 가정해 보겠습니다.
회귀 모델에서 결혼 상태를 예측 변수로 사용하려면 이를 더미 변수로 변환해야 합니다.
이는 현재 세 가지 다른 값(“미혼”, “기혼” 또는 “이혼”)을 취할 수 있는 범주형 변수이므로 k -1 = 3-1 = 2개의 더미 변수를 만들어야 합니다.
이 더미 변수를 생성하려면 가장 자주 나타나는 “Single”을 기본 값으로 남겨 둘 수 있습니다. 따라서 결혼 상태를 더미 변수로 변환하는 방법은 다음과 같습니다.
이 튜토리얼에서는 R에서 이 정확한 데이터 세트에 대한 더미 변수를 생성한 다음 이러한 더미 변수를 예측 변수로 사용하여 회귀 분석을 수행하는 방법에 대한 단계별 예를 제공합니다.
1단계: 데이터 생성
먼저 R에서 데이터 세트를 생성해 보겠습니다.
#create data frame df <- data. frame (income=c(45000, 48000, 54000, 57000, 65000, 69000, 78000, 83000, 98000, 104000, 107000), age=c(23, 25, 24, 29, 38, 36, 40, 59, 56, 64, 53), status=c('Single', 'Single', 'Single', 'Single', 'Married', 'Single', 'Married', 'Divorced', 'Divorced', 'Married', 'Married')) #view data frame df income age status 1 45000 23 Single 2 48000 25 Single 3 54000 24 Single 4 57000 29 Single 5 65000 38 Married 6 69000 36 Single 7 78000 40 Married 8 83000 59 Divorced 9 98000 56 Divorced 10 104000 64 Married 11 107000 53 Married
2단계: 더미 변수 생성
다음으로, R의 ifelse() 함수를 사용하여 더미 변수를 정의한 다음 회귀 모델을 구축하는 데 사용할 최종 데이터 프레임을 정의할 수 있습니다.
#create dummy variables married <- ifelse (df$status == ' Married ', 1, 0) divorced <- ifelse (df$status == ' Divorced ', 1, 0) #create data frame to use for regression df_reg <- data. frame (income = df$income, age = df$age, married = married, divorced = divorced) #view data frame df_reg income age married divorced 1 45000 23 0 0 2 48000 25 0 0 3 54000 24 0 0 4 57000 29 0 0 5 65000 38 1 0 6 69000 36 0 0 7 78000 40 1 0 8 83000 59 0 1 9 98000 56 0 1 10 104000 64 1 0 11 107000 53 1 0
3단계: 선형 회귀 수행
마지막으로 lm() 함수를 사용하여 다중 선형 회귀 모델을 맞출 수 있습니다.
#create regression model model <- lm (income ~ age + married + divorced, data=df_reg) #view regression model output summary(model) Call: lm(formula = income ~ age + married + divorced, data = df_reg) Residuals: Min 1Q Median 3Q Max -9707.5 -5033.8 45.3 3390.4 12245.4 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 14276.1 10411.5 1.371 0.21266 age 1471.7 354.4 4.152 0.00428 ** married 2479.7 9431.3 0.263 0.80018 divorced -8397.4 12771.4 -0.658 0.53187 --- Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 8391 on 7 degrees of freedom Multiple R-squared: 0.9008, Adjusted R-squared: 0.8584 F-statistic: 21.2 on 3 and 7 DF, p-value: 0.0006865
적합 회귀선은 다음과 같습니다.
소득 = 14,276.1 + 1,471.7*(나이) + 2,479.7*(기혼) – 8,397.4*(이혼)
이 방정식을 사용하여 개인의 연령과 결혼 상태를 기준으로 개인의 추정 소득을 찾을 수 있습니다. 예를 들어, 35세이고 결혼한 사람의 추정 소득은 $68,264 입니다.
소득 = 14,276.2 + 1,471.7*(35) + 2,479.7*(1) – 8,397.4*(0) = $68,264
표의 회귀 계수를 해석하는 방법은 다음과 같습니다.
- 절편: 절편은 0세 한 사람의 평균 소득을 나타냅니다. 분명히 0년을 가질 수 없으므로 이 특정 회귀 모델에서 절편 자체를 해석하는 것은 의미가 없습니다.
- 연령: 매년 연령이 증가하면 소득이 평균 $1,471.70 증가합니다. p-값(0.004)이 0.05보다 작으므로 연령은 통계적으로 유의미한 소득 예측 변수입니다.
- 기혼: 기혼자는 독신자보다 평균 $2,479.70 더 많은 소득을 얻습니다. p-값(0.800)이 0.05 이상이므로 이 차이는 통계적으로 유의하지 않습니다.
- 이혼한 사람: 이혼한 사람은 독신자보다 평균 $8,397.40 더 적은 소득을 얻습니다. p-값(0.532)이 0.05 이상이므로 이 차이는 통계적으로 유의하지 않습니다.
두 더미 변수 모두 통계적으로 유의하지 않았기 때문에 소득에 예측 가치를 추가하는 것으로 보이지 않으므로 모델에서 예측 변수인 결혼 상태를 제거할 수 있었습니다.