#regresja logistyczna - dane Raty.csv
raty = read.csv2("Raty.csv")
attach(raty)
#dla wygody (wykresy) przekształćmy zmienną Raty na wartości 0 i 1.
(raty01 = c(Raty) - 1)
#regresja logistyczna - od wydatku
regl1 = glm(raty01 ~ Wydatek, family = "binomial")
summary(regl1)
plot(Wydatek, raty01)
#wykres linii regresji
x = seq(min(Wydatek), max(Wydatek), length = 300)
ndane = data.frame(Wydatek = x)
lines(x, 1/(1+exp(-predict(regl1, ndane))), lwd = 2, col = "red")
#alternatywnie
y = 1/(1 + exp(-regl1$coef[1] - regl1$coef[2] * x))
lines(x, y, col = "black")
#można zaobserwować zależność: im większy wydatek tym (trochę) częstsza
#decyzja o zakupie na raty.
#regresja logistyczna od dwóch zmiennych
regl2 = glm(raty01 ~ Wydatek+Dochody, family = "binomial")
summary(regl2)
#wykres powierzchni regresji - pseudo 3d
#wydatek od 200 do 2700, dochody od 1000 do 4100
wydv = seq(200, 2700, by = 100)
docv = seq(1000, 4100, by = 100)
#funkcja regresji
f_l = function(x, y) 1/(1+exp(-regl2$coef[1] - x * regl2$coef[2] - y * regl2$coef[3]))
ratv = outer(wydv, docv, f_l)
wykres = persp(x=wydv, y = docv, z = ratv, xlab = "Wydatek", ylab = "Dochody",
zlab = "Raty", ticktype = "detailed", theta = 145, phi = 25,
cex.axis = 0.7, col = "yellow", shade = 0.6)
#dane empiryczne:
points(trans3d(Wydatek, Dochody, raty01, wykres), col="brown", lwd = 2, pch = 20)
#to jeszcze kreski łączące wartości empiryczne i teoretyczne, żeby
#rozpoznać gdzie faktycznie leżą te punkty
segments(trans3d(Wydatek, Dochody, raty01, wykres)$x,
trans3d(Wydatek, Dochody, raty01, wykres)$y,
trans3d(Wydatek, Dochody, f_l(Wydatek, Dochody), wykres)$x,
trans3d(Wydatek, Dochody, f_l(Wydatek, Dochody), wykres)$y)
#a może lepiej rzut na wykres dwuwymiarowy?
logit = predict(regl2)
plot(logit, raty01)
x = seq(min(logit), max(logit), length = 300)
y = 1/(1+exp(-x))
lines(x, y, lwd = 2, col = "blue2")
#widać, że model jest niezły
detach(raty)