Come creare variabili fittizie in r (passo dopo passo)
Una variabile fittizia è un tipo di variabile che creiamo nell’analisi di regressione in modo da poter rappresentare una variabile categoriale come variabile numerica che assume uno dei due valori: zero o uno.
Ad esempio, supponiamo di avere il seguente set di dati e di voler utilizzare l’età e lo stato civile per prevedere il reddito :
Per utilizzare lo stato civile come variabile predittiva in un modello di regressione, dobbiamo convertirlo in una variabile fittizia.
Poiché attualmente si tratta di una variabile categoriale che può assumere tre valori diversi (“Single”, “Sposato” o “Divorziato”), dobbiamo creare k -1 = 3-1 = 2 variabili dummy.
Per creare questa variabile fittizia, possiamo lasciare “Single” come valore base poiché appare più spesso. Quindi, ecco come convertiremo lo stato civile in variabili fittizie:
Questo tutorial fornisce un esempio passo passo di come creare variabili fittizie per questo set di dati esatto in R e quindi eseguire l’analisi di regressione utilizzando queste variabili fittizie come predittori.
Passaggio 1: creare i dati
Innanzitutto, creiamo il set di dati in 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
Passaggio 2: crea le variabili fittizie
Successivamente, possiamo utilizzare la funzione ifelse() in R per definire variabili fittizie e quindi definire il frame di dati finale che vorremmo utilizzare per costruire il modello di regressione:
#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
Passaggio 3: eseguire la regressione lineare
Infine, possiamo utilizzare la funzione lm() per adattare un modello di regressione lineare multipla:
#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
La retta di regressione adattata risulta essere:
Reddito = 14.276,1 + 1.471,7*(età) + 2.479,7*(sposato) – 8.397,4*(divorziato)
Possiamo utilizzare questa equazione per trovare il reddito stimato di un individuo in base all’età e allo stato civile. Ad esempio, una persona di 35 anni sposata avrebbe un reddito stimato di $ 68.264 :
Reddito = 14.276,2 + 1.471,7*(35) + 2.479,7*(1) – 8.397,4*(0) = $ 68.264
Ecco come interpretare i coefficienti di regressione nella tabella:
- Intercetta: l’intercetta rappresenta il reddito medio di una singola persona di età pari a zero. Ovviamente non si possono avere zero anni, quindi non ha senso interpretare l’intercetta da sola in questo particolare modello di regressione.
- Età: ogni anno di aumento dell’età è associato a un aumento medio di 1.471,70 dollari di reddito. Poiché il valore p (0,004) è inferiore a 0,05, l’età è un predittore statisticamente significativo del reddito.
- Sposato: una persona sposata guadagna in media $ 2.479,70 in più di una persona single. Poiché il valore p (0,800) non è inferiore a 0,05, questa differenza non è statisticamente significativa.
- Divorziato: una persona divorziata guadagna in media $ 8.397,40 in meno di una persona single. Poiché il valore p (0,532) non è inferiore a 0,05, questa differenza non è statisticamente significativa.
Poiché entrambe le variabili dummy non erano statisticamente significative, potremmo rimuovere lo stato civile come predittore dal modello, poiché non sembra aggiungere valore predittivo al reddito.