Як створити фіктивні змінні в r (крок за кроком)


Фіктивна змінна — це тип змінної, яку ми створюємо в регресійному аналізі, щоб ми могли представити категоріальну змінну як числову змінну, яка приймає одне з двох значень: нуль або одиницю.

Наприклад, припустімо, що ми маємо такий набір даних і хочемо використовувати вік і сімейний стан для прогнозування доходу :

Щоб використовувати сімейний стан як змінну прогнозу в регресійній моделі, нам потрібно перетворити його на фіктивну змінну.

Оскільки наразі це категоріальна змінна, яка може приймати три різні значення («Одружений», «Одружений» або «Розлучений»), нам потрібно створити 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: Створіть фіктивні змінні

Далі ми можемо використати функцію ifelse() у R, щоб визначити фіктивні змінні, а потім визначити остаточний кадр даних, який ми хотіли б використати для побудови регресійної моделі:

 #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

Підібрана лінія регресії виявляється:

Дохід = 14276,1 + 1471,7*(вік) + 2479,7*(одружений) – 8397,4*(розлучений)

Ми можемо використати це рівняння, щоб визначити приблизний дохід людини на основі її віку та сімейного стану. Наприклад, особа у віці 35 років і одружена матиме орієнтовний дохід у 68 264 долари :

Дохід = 14 276,2 + 1 471,7*(35) + 2 479,7*(1) – 8 397,4*(0) = 68 264 доларів США

Ось як інтерпретувати коефіцієнти регресії в таблиці:

  • Відрізок: відрізок являє собою середній дохід самотньої особи у віці нуль. Очевидно, що ви не можете мати нульові роки, тому немає сенсу інтерпретувати перехоплення саме по собі в цій конкретній моделі регресії.
  • Вік: кожен рік збільшення віку пов’язаний із середнім зростанням доходу на 1471,70 доларів США. Оскільки p-значення (0,004) менше 0,05, вік є статистично значущим предиктором доходу.
  • Одружений: одружений заробляє в середньому на 2479,70 доларів США більше, ніж неодружений. Оскільки р-значення (0,800) не менше 0,05, ця різниця не є статистично значущою.
  • Розлучений: розлучена особа заробляє в середньому на 8397,40 доларів менше, ніж неодружена особа. Оскільки р-значення (0,532) не менше 0,05, ця різниця не є статистично значущою.

Оскільки обидві фіктивні змінні не були статистично значущими, ми могли вилучити сімейний стан як предиктор із моделі, оскільки він, здається, не додає прогнозної цінності доходу.

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *