library(faraway) data(gala) #baza sa podacima o vrstama kornjaca sa ostrva Galapagos gala #ispis cele baze head(gala) #daje početak baze names(gala) #da vidimo imena kolona: help(gala) #detaljniji opis baze summary(gala) #osnovne statistike #pravljenje modela "pesacki" x <- model.matrix(~Area+Elevation+Nearest+Scruz+Adjacent,gala) #matrica X x y <- gala$Species #vektor Y y #racunamo potrebne vrednosti za ocenu beta xtxi<-solve(t(x)%*%x) # solve(x) daje inverz matrice xtxi %*% t(x) %*% y # beta_kapa=(X^TX)^(-1)X^Ty solve(crossprod(x,x),crossprod(x,y)) #isto kao sve prethodno; crossprod(x,y)=x^Ty #linearni model - gotov algoritam mdl<-lm(Species~Area+Elevation+Nearest+Scruz+Adjacent, data=gala) mdl #prikaz modela summary(mdl) #glavne karakteristike modela #da vidimo sve komponente modela koje mozemo pozvati names(mdl) mdls<-summary(mdl) names(mdls) #osnovno u modelu: mdl$residuals #reziduali mdl$fitted #prilago]ene vrednosti mdl$df.residual #broj stepeni slobodeone hi kvadrat raspodele raziduala (n-p) mdl$coef #koeficijenti modela #ocena za sigma sqrt(deviance(mdl)/df.residual(mdl)) mdls$sigma #isto xtxi <- mdls$cov.unscaled#kovarijaciona matrica #standardne greske sqrt(diag(xtxi))*60.975 mdls$coef[,2] #R^2 1-deviance(mdl)/sum((y-mean(y))^2) mdls$r.squared #model postoji ako postoji (X^TX)^(-1), tj. ako su rand matrice i broj kolona jednaki #"prezasiceni" modeli su modeli gde X ima vise vrsta nego kolona (vise promenljivih nego opservacija) #probem 1 #pravimo jednu zavisnu kolonu kako matrica ne bi imala inverz # razlika izmedju oblasti ostrva i njemu najblizeg ostrva gala$Adiff<-gala$Area-gala$Adjacent #nova promenljiva g<-lm(Species~Area+Elevation+Nearest+Scruz+Adjacent+Adiff,gala) #dodavanje promenljive u model summary(g) #napraviljen je model iako je matrica singularna, model je bez Adiff, a staviljene su NA vrednosti #uklanja prediktore od kraja ka pocetku (kako su navedene u modelu) #problem 2 #veci problem ako je X^TX skoro singularna i nije ocigledno da su kolone zavisne Adiffe <- gala$Adiff+0.001*(runif(30)-0.5) #neki mnogo mali brojevi iz U[-0.005,0.005], blzak nuli #da kolone budu "skoro linearno zavisne" g <- lm(Species ~ Area+Elevation+Nearest+Scruz+Adjacent+Adiffe,gala) summary(g) #napravljen je model sa ogromnim std greskama za Area, Adiffe i Adjacent #standardna greska u ovim sitvacijama nije velika samo za jednu promenljivu,vec istovremeno za vise njih) #PRIMER: baza teengamb, napraviti model za kolonu 'gamble' u odnosu na ostale kolone, # a) Koji procenat varijacije zavisne promenljive je objasnjen nezavisnim promenljivim? # b) koja opservacija ima najveci rezidual? dati broj opservacije # c) odrediti srednju vrednost i medijanu residuala. # d) odrediti korelaciju reziduala i ocena za gamble. # e) odrediti korelaciju reziduala i kolone income. # f) odrediti, kada bi sve ostalo bilo konstantno, koliko bi se kockanje razlikovalo za zenu i muskarca? data(teengamb) help(teengamb) model<-lm(gamble~sex+status+income+verbal,data=teengamb) summary(model) #b) max(residuals(model)) which.max(residuals(model)) #c) mean(residuals(model)) median(residuals(model)) #d) #korelacija treba da je oko nula: cor(residuals(model),fitted(model)) #e) cor(residuals(model),teengamb$income) #f) summary(model) #iz summary, iz koeficijenta uz kolonu 'sex'(koja uzima vrednosti 0 ili 1) vidimo da bi muskarac u proseku trosio 22 funte vise godisnje na kockanje