Jak używać funkcji predict() z lm() w r


Funkcji lm() w R można użyć do dopasowania modeli regresji liniowej.

Po dopasowaniu modelu możemy użyć funkcji przewidywania() , aby przewidzieć wartość odpowiedzi nowej obserwacji .

Ta funkcja wykorzystuje następującą składnię:

przewidywanie (obiekt, nowe dane, typ = „odpowiedź”)

Złoto:

  • obiekt: nazwa dopasowania modelu za pomocą funkcji glm().
  • newdata: nazwa nowej ramki danych, dla której mają zostać wykonane prognozy
  • type: typ przewidywania, które ma zostać wykonane.

Poniższy przykład pokazuje, jak użyć funkcji lm() do dopasowania modelu regresji liniowej w R, a następnie jak użyć funkcji przewidywania() do przewidzenia wartości odpowiedzi nowej obserwacji, której model nigdy wcześniej nie widział.

Przykład: użycie funkcji Predict() z lm() w R

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

 #create data frame
df <- data. frame (minutes=c(5, 10, 13, 14, 20, 22, 26, 34, 38, 40),
                 fouls=c(5, 5, 3, 4, 2, 1, 3, 2, 1, 1),
                 points=c(6, 8, 8, 7, 14, 10, 22, 24, 28, 30))

#view data frame
df

   minutes fouls points
1 5 5 6
2 10 5 8
3 13 3 8
4 14 4 7
5 20 2 14
6 22 1 10
7 26 3 22
8 34 2 24
9 38 1 28
10 40 1 30

Załóżmy, że chcemy zastosować następujący model regresji liniowej, wykorzystując minuty rozegrane i łączną liczbę fauli, aby przewidzieć liczbę punktów zdobytych przez każdego zawodnika:

punkty = β 0 + β 1 (minuty) + β 2 (faule)

Możemy użyć funkcji lm(), aby dostosować ten model:

 #fit multiple linear regression model
fit <- lm(points ~ minutes + fouls, data=df)

#view summary of model
summary(fit)

Call:
lm(formula = points ~ minutes + fouls, data = df)

Residuals:
    Min 1Q Median 3Q Max 
-3.5241 -1.4782 0.5918 1.6073 2.0889 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -11.8949 4.5375 -2.621 0.0343 *  
minutes 0.9774 0.1086 9.000 4.26e-05 ***
fouls 2.1838 0.8398 2.600 0.0354 *  
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.148 on 7 degrees of freedom
Multiple R-squared: 0.959, Adjusted R-squared: 0.9473 
F-statistic: 81.93 on 2 and 7 DF, p-value: 1.392e-05

Wykorzystując współczynniki z wyników modelu, możemy napisać dopasowane równanie regresji:

punkty = -11,8949 + 0,9774 (minuty) + 2,1838 (faule)

Następnie możemy użyć funkcji przewidywania() , aby przewidzieć, ile punktów zdobędzie zawodnik, który gra przez 15 minut i popełnia w sumie 3 faule:

 #define new observation
newdata = data. frame (minutes=15, fouls=3)

#use model to predict points value
predict(fit, newdata)

       1 
9.317731

Model przewiduje, że gracz ten zdobędzie 9,317731 punktów.

Należy pamiętać, że możemy również dokonać wielu przewidywań na raz, jeśli mamy ramkę danych zawierającą wiele nowych obserwacji.

Przykładowo poniższy kod pokazuje jak wykorzystać dopasowany model regresji do przewidywania wartości punktowych trzech graczy:

 #define new data frame of three cars
newdata = data. frame (minutes=c(15, 20, 25),
                     fouls=c(3, 2, 1))

#view data frame
newdata

  minutes fouls
1 15 3
2 20 2
3 25 1

#use model to predict points for all three players
predict(model, newdata)

        1 2 3 
 9.317731 12.021032 14.724334 

Oto jak zinterpretować wynik:

  • Oczekiwana liczba punktów dla zawodnika za 15 minut i 3 faule to 9,32 .
  • Oczekiwana liczba punktów dla zawodnika z 20 minutami gry i 2 faulami to 12,02 .
  • Oczekiwane punkty dla zawodnika z 25 minutami gry i jednym faulem to 14,72 .

Uwagi dotyczące używania funkcji przewidywania()

Nazwy kolumn w nowej ramce danych muszą dokładnie odpowiadać nazwom kolumn w ramce danych, które zostały użyte do utworzenia modelu.

Należy zauważyć, że w naszym poprzednim przykładzie ramka danych użyta do utworzenia modelu zawierała następujące nazwy kolumn dla naszych zmiennych predykcyjnych:

  • minuty
  • błędy

Kiedy więc tworzyliśmy nową ramkę danych o nazwie newdata, zadbaliśmy o to, aby nadać także nazwy kolumnom:

  • minuty
  • błędy

Jeśli nazwy kolumn nie są zgodne, pojawi się następujący komunikat o błędzie :

 Error in eval(predvars, data, env)

Należy o tym pamiętać podczas korzystania z funkcji przewidywania() .

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 wykonać regresję wielomianową w R
Jak utworzyć przedział przewidywania w R

Dodaj komentarz

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