Regresja logistyczna w R.
1 Regresja logistyczna
Regresja logistyczna modeluje zależność prawdopodobieństwa p zajścia pewnego zdażenia zależnego
od zmiennej (zmiennych) objaśniajacej X. Aby można bylo wykorzystać metody regresji liniowej do
prawdopodobieństwa przyklada sie funkcje logit:
p
logit(p) = ln .
1 - p
Model regresji logistycznej ma postać:
logit(p) H" aX + b.
Warto wiedzieć, że prawdziwe sa zależności:
exp(logit(p)) 1
p = = .
1 + exp(logit(p)) 1 + exp(-logit(p))
2 Przyklady w R
2.1 Podstawowe obliczenia
Przyklady użycia regresji logistycznej podane sa na przykladzie danych zawartych w pliku Raty.csv
opisujacych decyzje o zakupach na raty podczas zakupów w sklepie RTV/AGD w zależności od wydanej
kwoty oraz pewnych danych klienta (wiek, dochody). Na poczatek wczytujemy te dane:
> dane = read.table("Raty.csv", header = T, sep = ";", dec = ",")
> attach(dane)
Dla wygody (póżniejsze wykresy) przeksztalćmy zmienna Raty na wartości 0 i 1.
> raty01 = c(Raty) - 1
Zbadajmy zależność miedzy decyzja o zakupach na raty a kwota zakupów. Regresje logistyczna
wykonuje sie z użyciem funkcji glm. Ważne jest (funkcja ta ma wiele zastosowań), aby zmodyfikować
parametr family.
> regr1 = glm(raty01 ~ Wydatek, family = "binomial")
Informacje o regresji można uzyskać wpisujac nazwe zmiennej do której zapisaliśmy wyniki. Wie-
cej informacji można uzyskać z użyciem funkjci summary. Wykresy diagnostyczne (dla reszt) można
narysować przez funkcje plot:
> regr1
Call: glm(formula = raty01 ~ Wydatek, family = "binomial")
Coefficients:
(Intercept) Wydatek
-0.8695306 0.0007953
Degrees of Freedom: 126 Total (i.e. Null); 125 Residual
Null Deviance: 176.1
Residual Deviance: 171.8 AIC: 175.8
> summary(regr1)
Call:
glm(formula = raty01 ~ Wydatek, family = "binomial")
Deviance Residuals:
Min 1Q Median 3Q Max
-1.7187 -1.1341 -0.8966 1.1339 1.4818
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.8695306 0.4597026 -1.892 0.0586 .
Wydatek 0.0007953 0.0003944 2.016 0.0437 *
---
Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 176.05 on 126 degrees of freedom
Residual deviance: 171.79 on 125 degrees of freedom
AIC: 175.79
Number of Fisher Scoring iterations: 4
> plot(regr1)
Wspólczynniki regresji sa zapisane w polu coef zmiennej opisujacej regresje.
> regr1$coef
(Intercept) Wydatek
-0.8695305963 0.0007953214
2.2 Wykres linii regresji
Na poczatek narysujmy wykres zawierajacy surowe dane:
> plot(Wydatek, raty01)
2
500 1000 1500 2000 2500
Wydatek
Aby naszkicować linie regresji przygotujemy sobie wektory wspólrzednych x-owych i y-kowych
(warto zaobserwować wartości pośrednie):
> x = 0:100
> x = x * (max(Wydatek) - min(Wydatek))/100 + min(Wydatek)
> y = 1/(1 + exp(-regr1$coef[1] - regr1$coef[2] * x))
> lines(x, y, col = "red")
Można zaobserwować zależność im wiekszy wydatek tym czestszy zakup na raty.
3
raty01
0.0
0.2
0.4
0.6
0.8
1.0
500 1000 1500 2000 2500
Wydatek
2.3 Kolejne przyklady
Dezycja o zakupach na raty od dochodów:
> (regr2 = glm(raty01 ~ Dochody, family = "binomial"))
Call: glm(formula = raty01 ~ Dochody, family = "binomial")
Coefficients:
(Intercept) Dochody
3.067978 -0.001371
Degrees of Freedom: 126 Total (i.e. Null); 125 Residual
Null Deviance: 176.1
Residual Deviance: 157.4 AIC: 161.4
> plot(Dochody, raty01)
> x = 0:100 * (max(Dochody) - min(Dochody))/100 + min(Dochody)
> y = 1/(1 + exp(-regr2$coef[1] - regr2$coef[2] * x))
> lines(x, y, col = "green")
Można zaobserwować silniejsza zależność im mniejsze dochody tym czestszy zakup na raty.
4
raty01
0.0
0.2
0.4
0.6
0.8
1.0
1000 1500 2000 2500 3000 3500 4000
Dochody
Na koniec zależność równocześnie od dochodów i wydatku:
> (regr3 = glm(raty01 ~ Dochody + Wydatek, family = "binomial"))
Call: glm(formula = raty01 ~ Dochody + Wydatek, family = "binomial")
Coefficients:
(Intercept) Dochody Wydatek
3.936746 -0.003733 0.004108
Degrees of Freedom: 126 Total (i.e. Null); 124 Residual
Null Deviance: 176.1
Residual Deviance: 117.3 AIC: 123.3
Na potrzeby rysowania wykresu na plaszczyznie utworzymy sztuczna zmienna logit opisujaca zależność
miedzy dochodami a wydatkami.
> logit = regr3$coef[1] + regr3$coef[2] * Dochody + regr3$coef[3] *
+ Wydatek
> plot(logit, raty01)
> x = 0:100 * (max(logit) - min(logit))/100 + min(logit)
> y = 1/(1 + exp(-x))
> lines(x, y, col = "blue")
Ten model regresji wyjaśnia zdecydowanie najwiecej.
5
raty01
0.0
0.2
0.4
0.6
0.8
1.0
-4 -2 0 2 4 6
logit
Literatura
[1] P. Biecek, Przewodnik po pakiecie R, Oficyna Wydawnicza GiS, Wroclaw, 2008.
[2] Zalaczona dokumentacja pakietu R, 2010.
6
raty01
0.0
0.2
0.4
0.6
0.8
1.0
Wyszukiwarka
Podobne podstrony:
Regresja logistycznaRegresja logistyczna 8L5 regresja logistycznaL5 regresja logistyczna kluczregresja empirycznarynek pracy logistykaLogistyka (13 stron)Baum Wajszczuk Wawrzynowicz Modelowe rozwiazanie logistycznelogistyka opakowania i znakowanie towarow (5 stron)logistyka produkcji w 2 mrp iNiedziolka Logistyka w dzialaniachProjekt?ntrum logistycznego zalozenia projwięcej podobnych podstron