Jak używać funkcji przewidywania z glm w r (z przykładami)
Funkcji glm() w R można użyć do dopasowania uogólnionych modeli liniowych. Ta funkcja jest szczególnie przydatna przy dopasowywaniu modeli regresji logistycznej , modeli regresji Poissona i innych złożonych modeli.
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 dopasować uogólniony model liniowy do R i jak następnie wykorzystać ten model do przewidzenia wartości odpowiedzi nowej obserwacji, której nigdy wcześniej nie widziano.
Przykład: użycie funkcji prognozy z glm w R
W tym przykładzie użyjemy wbudowanego zbioru danych R o nazwie mtcars :
#view first six rows of mtcars data frame
head(mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3,460 20.22 1 0 3 1
Dopasujemy następujący model regresji logistycznej, w którym używamy zmiennych disp i hp do przewidywania zmiennej odpowiedzi am (typ skrzyni biegów samochodu: 0 = automatyczna, 1 = ręczna).
#fit logistic regression model model <- glm(am ~ disp + hp, data=mtcars, family=binomial) #view model summary summary(model) Call: glm(formula = am ~ disp + hp, family = binomial, data = mtcars) Deviance Residuals: Min 1Q Median 3Q Max -1.9665 -0.3090 -0.0017 0.3934 1.3682 Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) 1.40342 1.36757 1.026 0.3048 available -0.09518 0.04800 -1.983 0.0474 * hp 0.12170 0.06777 1.796 0.0725 . --- Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 (Dispersion parameter for binomial family taken to be 1) Null deviance: 43,230 on 31 degrees of freedom Residual deviance: 16,713 on 29 degrees of freedom AIC: 22,713 Number of Fisher Scoring iterations: 8
Możemy następnie użyć tego modelu do przewidzenia prawdopodobieństwa, że nowy samochód będzie wyposażony w automatyczną skrzynię biegów (am=0) lub ręczną skrzynię biegów (am=1), korzystając z następującego kodu:
#define new observation
newdata = data. frame (disp=200, hp=100)
#use model to predict value of am
predict(model, newdata, type=" response ")
1
0.00422564
Model przewiduje, że prawdopodobieństwo, że nowy samochód będzie wyposażony w manualną skrzynię biegów (am=1) wynosi 0,004 . Oznacza to, że jest bardzo prawdopodobne, że nowy samochód będzie wyposażony w automatyczną skrzynię biegów.
Należy pamiętać, że możemy również dokonać wielu przewidywań na raz, jeśli mamy bazę danych zawierającą wiele nowych samochodów.
Na przykład poniższy kod pokazuje, jak wykorzystać dopasowany model do przewidywania prawdopodobieństwa ręcznej skrzyni biegów w trzech nowych samochodach:
#define new data frame of three cars
newdata = data. frame (disp=c(200, 180, 160),
hp=c(100, 90, 108))
#view data frame
newdata
hp disp
1,200 100
2 180 90
3,160,108
#use model to predict value of am for all three cars
predict(model, newdata, type=" response ")
1 2 3
0.004225640 0.008361069 0.335916069
Oto jak zinterpretować wynik:
- Prawdopodobieństwo, że samochód 1 ma ręczną skrzynię biegów, wynosi 0,004 .
- Prawdopodobieństwo, że samochód 2 ma ręczną skrzynię biegów, wynosi 0,008 .
- Prawdopodobieństwo, że samochód 3 ma ręczną skrzynię biegów, wynosi 0,336 .
Uwagi
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:
- wyświetlacz
- HP
Kiedy więc tworzyliśmy nową ramkę danych o nazwie newdata, zadbaliśmy o to, aby nadać także nazwy kolumnom:
- wyświetlacz
- HP
Jeśli nazwy kolumn nie są zgodne, pojawi się następujący komunikat o błędzie:
Błąd w 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