Jak utworzyć zmienne fikcyjne w r (krok po kroku)
Zmienna fikcyjna to typ zmiennej, który tworzymy w analizie regresji, abyśmy mogli przedstawić zmienną kategorialną jako zmienną numeryczną, która przyjmuje jedną z dwóch wartości: zero lub jeden.
Załóżmy na przykład, że mamy następujący zestaw danych i chcemy wykorzystać wiek i stan cywilny do przewidywania dochodów :
Aby wykorzystać stan cywilny jako zmienną predykcyjną w modelu regresji, musimy przekształcić go w zmienną fikcyjną.
Ponieważ jest to obecnie zmienna kategoryczna, która może przyjmować trzy różne wartości („Singiel”, „Żonaty” lub „Rozwiedziony”), musimy utworzyć k -1 = 3-1 = 2 zmienne fikcyjne.
Aby utworzyć tę fikcyjną zmienną, możemy pozostawić „Single” jako wartość bazową, ponieważ pojawia się ona najczęściej. Oto jak przekształcilibyśmy stan cywilny w zmienne fikcyjne:
W tym samouczku przedstawiono krok po kroku sposób tworzenia zmiennych fikcyjnych dla tego dokładnego zestawu danych w języku R, a następnie przeprowadzania analizy regresji przy użyciu tych zmiennych fikcyjnych jako predyktorów.
Krok 1: Utwórz dane
Najpierw utwórzmy zbiór danych w 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
Krok 2: Utwórz zmienne fikcyjne
Następnie możemy użyć funkcji ifelse() w R do zdefiniowania zmiennych fikcyjnych, a następnie zdefiniować ostateczną ramkę danych, którą chcielibyśmy wykorzystać do zbudowania modelu regresji:
#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
Krok 3: Wykonaj regresję liniową
Na koniec możemy użyć funkcji lm() , aby dopasować model regresji liniowej wielokrotnej:
#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
Dopasowana linia regresji okazuje się mieć postać:
Dochody = 14276,1 + 1471,7*(wiek) + 2479,7*(żonaty) – 8397,4*(rozwiedziony)
Możemy użyć tego równania, aby znaleźć szacunkowy dochód danej osoby na podstawie jej wieku i stanu cywilnego. Na przykład osoba w wieku 35 lat i będąca w związku małżeńskim miałaby szacunkowy dochód w wysokości 68 264 dolarów :
Dochód = 14 276,2 + 1 471,7*(35) + 2 479,7*(1) – 8 397,4*(0) = 68 264 USD
Oto jak interpretować współczynniki regresji w tabeli:
- Przecięcie: Przecięcie oznacza średni dochód samotnej osoby w wieku zero. Oczywiście nie można mieć lat zerowych, więc nie ma sensu interpretować samego wyrazu wolnego w tym konkretnym modelu regresji.
- Wiek: każdy rok podwyższenia wieku wiąże się ze średnim wzrostem dochodu o 1471,70 dolarów. Ponieważ wartość p (0,004) jest mniejsza niż 0,05, wiek jest statystycznie istotnym predyktorem dochodów.
- Żonaty: osoba zamężna zarabia średnio o 2479,70 dolarów więcej niż osoba samotna. Ponieważ wartość p (0,800) jest nie mniejsza niż 0,05, różnica ta nie jest istotna statystycznie.
- Rozwiedziony: osoba rozwiedziona zarabia średnio 8 397,40 dolarów mniej niż osoba samotna. Ponieważ wartość p (0,532) jest nie mniejsza niż 0,05, różnica ta nie jest istotna statystycznie.
Ponieważ obie zmienne fikcyjne nie były istotne statystycznie, mogliśmy usunąć z modelu stan cywilny jako czynnik predykcyjny, ponieważ nie wydaje się, aby zwiększał on wartość predykcyjną dochodu.