Как создать фиктивные переменные в R (шаг за шагом)

Как создать фиктивные переменные в 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 
---
Signif. 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 лет. Очевидно, что вам не может быть ноль лет, поэтому нет смысла интерпретировать перехват сам по себе в этой конкретной регрессионной модели.
  • Возраст: каждый год увеличения возраста связан со средним увеличением дохода на 1471,70 доллара. Поскольку p-значение (0,004) меньше 0,05, возраст является статистически значимым предиктором дохода.
  • Женат: Женатый человек в среднем зарабатывает на 2479,70 долларов больше, чем одинокий человек. Поскольку p-значение (0,800) не менее 0,05, эта разница не является статистически значимой.
  • Разведен: разведенный человек в среднем зарабатывает на 8 397,40 долларов меньше, чем одинокий человек. Поскольку p-значение (0,532) не менее 0,05, эта разница не является статистически значимой.

Поскольку обе фиктивные переменные не были статистически значимыми, мы могли исключить из модели семейное положение в качестве предиктора, поскольку оно, по-видимому, не добавляет никакой прогностической ценности для дохода.

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.