x <- rnorm(30) y <- x^2 + x + rnorm(30) reg1 <- lm(y ~ x) plot(x,y) abline(reg1$coef) #diagnosztikai ábrák: plot(x,reg1$resid) plot(reg1$fitted,reg1$resid) # parabolának néz ki... gyanús! # hiányzik még tag a regresszióból. # próba: y = a + bx + c x^2 + hiba reg2 <- lm(y ~ x + I(x^2)) # I(): identitás függvény # lm() hasában a műveleti jelek mást # jelentenek; I() megőrzi az eredeti jelentést # kb. + jel kivételével minden műveletre ! reg2 # hogyan rajzoljuk ki a regressziós görbét? # y = a +bx + c x^2 parabola plot(x,reg2$fitted) plot(x,reg2$fitted,type="l") # ha nem növekvő az x, keszekusza... # order(x): index vektor, x[order(x)] növekvő plot(x[order(x)],reg2$fitted[order(x)]) plot(x[order(x)],reg2$fitted[order(x)],type="l") # tetszőleges alappontokban a fitted függvényt? z <- seq(-2.5,2.5,0.1) # f <- reg2$coef[1] + reg2$coef[2] * x # + reg2$coef[3] * x^2 # predict() függvény: új x adatokra a becsült függvény # alapján kiszámolja hozzá az y becslést # új x-ek: data.frame formájában f <- predict(reg2,newdata=data.frame(x=z)) plot(x,y) lines(z,f) plot(x,reg2$resid) # most már rendszertelen, minden tagot figyelembe vettünk summary(reg2) # t-teszt alapján: konstans tag 0 akar lenni # jelenleg: generálásból is tudjuk, nem kell + konstans # új modell, konstans nélkül reg3 <- lm(y ~ 0+x+I(x^2) ) reg3 plot(x,y) points(x,reg3$fitted,col="red") plot(x,reg3$resid) summary(reg3) # 2 regressziós modell összehasonl0óítása: # anova : analysis of variance # olyan modellekre van értelme, ahol az egyik részmodellje # a másiknak: néhány változó/tag elhagyásával kapunk # részmodellt # példánkban: reg2-nek részmodellje reg1, és reg3 is # de reg1, reg3 között nincs ilyan kapcsolat anova(reg1,reg2) # RSS: residual sum of squares: # hibák négyzetösszege, kisebb jobb # de: számottevő-e a különbség, megéri-e a plusz változót? # F-próba: F: F-statisztika, Pr(..): p-value # H0: kb. ekvivalens a két modell, H1: lényeges különbség # nagy p-value esetén H0 # most: kis p-value, lényeges különbség, megéri a komplexebb # modellt használni # statisztikailag "bizonyítottuk": reg2 modell jobb, mint # a reg1 modell anova(reg2,reg3) # itt: nagy p-value, kb. ekvivalens, # ezért megérte egyszerűsíteni a modellt a <- rnorm(30) b <- rnorm(30) c <- 2 *a -b + rnorm(30) reg4 <- lm(c ~ a + b) reg4