Jak przeprowadzić regresję liniową ze zmiennymi kategorycznymi w r


Regresja liniowa to metoda, którą możemy zastosować do ilościowego określenia związku między jedną lub większą liczbą zmiennych predykcyjnych azmienną odpowiedzi .

Często konieczne może być dopasowanie modelu regresji przy użyciu jednej lub większej liczby zmiennych kategorycznych jako zmiennych predykcyjnych.

W tym samouczku przedstawiono krok po kroku przykład przeprowadzania regresji liniowej ze zmiennymi jakościowymi w języku R.

Przykład: regresja liniowa ze zmiennymi jakościowymi w R

Załóżmy, że mamy następującą ramkę danych w R, która zawiera informacje o trzech zmiennych dla 12 różnych koszykarzy:

  • zdobyte punkty
  • godziny spędzone na ćwiczeniach
  • zastosowany program szkoleniowy
 #create data frame
df <- data. frame (points=c(7, 7, 9, 10, 13, 14, 12, 10, 16, 19, 22, 18),
                 hours=c(1, 2, 2, 3, 2, 6, 4, 3, 4, 5, 8, 6),
                 program=c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3))

#view data frame
df

   points hours program
1 7 1 1
2 7 2 1
3 9 2 1
4 10 3 1
5 13 2 2
6 14 6 2
7 12 4 2
8 10 3 2
9 16 4 3
10 19 5 3
11 22 8 3
12 18 6 3

Załóżmy, że chcemy dopasować następujący model regresji liniowej:

punkty = β 0 + β 1 godziny + β 2 program

W tym przykładzie godziny są zmienną ciągłą, ale program jest zmienną kategorialną , która może przyjmować trzy możliwe kategorie: program 1, program 2 lub program 3.

Aby dopasować ten model regresji i powiedzieć R, że zmienna „programu” jest zmienną kategoryczną, musimy użyć funkcji as.factor() w celu przekształcenia jej na współczynnik, a następnie dopasować model:

 #convert 'program' to factor
df$program <- as. factor (df$program)

#fit linear regression model
fit <- lm(points ~ hours + program, data = df)

#view model summary
summary(fit)

Call:
lm(formula = points ~ hours + program, data = df)

Residuals:
    Min 1Q Median 3Q Max 
-1.5192 -1.0064 -0.3590 0.8269 2.4551 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 6.3013 0.9462 6.660 0.000159 ***
hours 0.9744 0.3176 3.068 0.015401 *  
program2 2.2949 1.1369 2.019 0.078234 .  
program3 6.8462 1.5499 4.417 0.002235 ** 
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.403 on 8 degrees of freedom
Multiple R-squared: 0.9392, Adjusted R-squared: 0.9164 
F-statistic: 41.21 on 3 and 8 DF, p-value: 3.276e-05

Z wartości w kolumnie Oszacowanie możemy napisać dopasowany model regresji:

punkty = 6,3013 + 0,9744 (godziny) + 2,2949 (program 2) + 6,8462 (program 3)

Oto jak interpretować wartości współczynników w wyniku:

  • Godziny : za każdą dodatkową godzinę spędzoną na ćwiczeniach zdobyte punkty zwiększają się średnio o 0,9744, przy założeniu, że program pozostaje stały.
    • Wartość p wynosi 0,015, co wskazuje, że godziny spędzone na ćwiczeniach są statystycznie istotnym predyktorem punktów zdobytych na poziomie α = 0,05.
  • harmonogram 2 : Gracze, którzy korzystali z harmonogramu 2, zdobyli średnio 2,2949 więcej punktów niż gracze, którzy korzystali z harmonogramu 1, zakładając, że godziny gry pozostają stałe.
    • Wartość p wynosi 0,078, co oznacza, że nie ma istotnej statystycznie różnicy w liczbie punktów zdobytych przez zawodników korzystających z programu 2 w porównaniu z zawodnikami korzystającymi z programu 1, na poziomie α = 0,05.
  • harmonogram 3 : Gracze, którzy korzystali z harmonogramu 3, zdobyli średnio 2,2949 punktów więcej niż gracze, którzy korzystali z harmonogramu 1, zakładając, że godziny gry pozostają stałe.
    • Wartość p wynosi 0,002, co wskazuje, że istnieje statystycznie istotna różnica w liczbie punktów zdobytych przez graczy, którzy korzystali ze schematu 3 w porównaniu z graczami, którzy korzystali ze schematu 1, na poziomie α = 0,05.

Korzystając z dopasowanego modelu regresji, możemy przewidzieć liczbę punktów zdobytych przez zawodnika na podstawie całkowitej liczby godzin spędzonych na treningach oraz programu, z którego korzystał.

Na przykład możemy użyć poniższego kodu, aby przewidzieć punkty zdobyte przez zawodnika, który trenował przez 5 godzin i korzystał z harmonogramu treningowego 3:

 #define new player
new <- data. frame (hours=c(5), program=as. factor (c(3)))

#use the fitted model to predict the points for the new player
predict(fit, newdata=new)

       1 
18.01923 

Model przewiduje, że nowy gracz zdobędzie 18,01923 punktów.

Możemy potwierdzić, że jest to poprawne, wstawiając wartości nowego gracza do dopasowanego równania regresji:

  • punkty = 6,3013 + 0,9744 (godziny) + 2,2949 (program 2) + 6,8462 (program 3)
  • punktów = 6,3013 + 0,9744(5) + 2,2949(0) + 6,8462(1)
  • punkty = 18 019

Odpowiada to wartości obliczonej za pomocą funkcji przewidywania() w języku R.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w języku R:

Jak wykonać prostą regresję liniową w R
Jak wykonać wielokrotną regresję liniową w R
Jak utworzyć wykres rezydualny w R

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *