dane = read.csv2("wzrost_dziecka.csv")
#nieparametryczne metody regresji - dane wzrost_dziecka.csv
attach(dane)
#regresja lokalnie wielomianowa
reg8 = loess(Dziecko~Matka)
summary(reg8)
plot(Matka, Dziecko)
ndane = data.frame(Matka = seq(min(Matka), max(Matka), length = 300))
lines(ndane$Matka, predict(reg8, ndane), lwd = 2, col = "green")
lines(ndane$Matka, predict(loess(Dziecko~Matka, span = 0.6, degree = 1), ndane), lwd = 2, col = "blue")
lines(ndane$Matka, predict(loess(Dziecko~Matka, span = 0.4, degree = 2), ndane), lwd = 2, col = "red")
#gładkie funkcje sklejane
#zależnośc Dziecko~Matka
#domyślne parametry
reg9 = smooth.spline(Matka, Dziecko)
print(reg9)
#wykres
plot(Matka, Dziecko)
lines(predict(reg9, x = seq(min(Matka), max(Matka), length = 400)), lwd = 2, col = "red")
lines(ndane$Matka, predict(reg8, ndane), lwd = 2, col = "green")
#odp. R^2
1-sum((Dziecko-predict(reg9, x = Matka)$y)^2)/sum((Dziecko-mean(Dziecko))^2)
#to jeszcze dwie linie (parametr spar)
#spar = 0 => lambda (prawie) równa 0
reg10 = smooth.spline(Matka, Dziecko, spar = 0)
lines(predict(reg10, x = seq(min(Matka), max(Matka), length = 400)), lwd = 2, col = "blue")
print(reg10)
#spar 1 => lamda duża
reg11 = smooth.spline(Matka, Dziecko, spar = 1)
lines(predict(reg11, x = seq(min(Matka), max(Matka), length = 400)), lwd = 2, col = "brown")
#praktycznie to samo, co regresja liniowa
print(reg11)
detach(dane)