Comment créer des variables factices dans R (étape par étape)
Une variable factice est un type de variable que nous créons dans l’analyse de régression afin de pouvoir représenter une variable catégorielle comme une variable numérique qui prend l’une des deux valeurs suivantes : zéro ou un.
Par exemple, supposons que nous disposions de l’ensemble de données suivant et que nous souhaitions utiliser l’âge et l’état civil pour prédire le revenu :
Pour utiliser l’état civil comme variable prédictive dans un modèle de régression, nous devons le convertir en variable muette.
Puisqu’il s’agit actuellement d’une variable catégorielle qui peut prendre trois valeurs différentes (« Célibataire », « Marié » ou « Divorcé »), nous devons créer k -1 = 3-1 = 2 variables muettes.
Pour créer cette variable factice, nous pouvons laisser « Single » comme valeur de base car elle apparaît le plus souvent. Ainsi, voici comment nous convertirions l’état civil en variables fictives :
Ce didacticiel fournit un exemple étape par étape de la façon de créer des variables factices pour cet ensemble de données exact dans R, puis d’effectuer une analyse de régression en utilisant ces variables factices comme prédicteurs.
Étape 1 : Créer les données
Tout d’abord, créons l’ensemble de données dans 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
Étape 2 : Créer les variables factices
Ensuite, nous pouvons utiliser la fonction ifelse() dans R pour définir des variables factices, puis définir le bloc de données final que nous aimerions utiliser pour construire le modèle de régression :
#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
Étape 3 : Effectuer une régression linéaire
Enfin, nous pouvons utiliser la fonction lm() pour ajuster un modèle de régression linéaire multiple :
#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
La droite de régression ajustée s’avère être :
Revenu = 14 276,1 + 1 471,7*(âge) + 2 479,7*(marié) – 8 397,4*(divorcé)
Nous pouvons utiliser cette équation pour trouver le revenu estimé d’un individu en fonction de son âge et de son état civil. Par exemple, une personne âgée de 35 ans et mariée aurait un revenu estimé à 68 264 $ :
Revenu = 14 276,2 + 1 471,7*(35) + 2 479,7*(1) – 8 397,4*(0) = 68 264 $
Voici comment interpréter les coefficients de régression du tableau :
- Interception : L’ordonnée à l’origine représente le revenu moyen d’une personne célibataire âgée de zéro an. Évidemment, vous ne pouvez pas avoir zéro an, cela n’a donc aucun sens d’interpréter l’interception par elle-même dans ce modèle de régression particulier.
- Âge : Chaque année d’augmentation de l’âge est associée à une augmentation moyenne de 1 471,70 $ du revenu. Puisque la valeur p (0,004) est inférieure à 0,05, l’âge est un prédicteur statistiquement significatif du revenu.
- Marié : Une personne mariée gagne en moyenne 2 479,70 $ de plus qu’une personne célibataire. Puisque la valeur p (0,800) n’est pas inférieure à 0,05, cette différence n’est pas statistiquement significative.
- Divorcé : Une personne divorcée gagne en moyenne 8 397,40 $ de moins qu’une personne célibataire. Puisque la valeur p (0,532) n’est pas inférieure à 0,05, cette différence n’est pas statistiquement significative.
Étant donné que les deux variables fictives n’étaient pas statistiquement significatives, nous pourrions supprimer l’état matrimonial comme prédicteur du modèle, car il ne semble pas ajouter de valeur prédictive au revenu.