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