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.

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *