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