fat <- 'TO-DO' # nacteni dat, prohlednuti jejich struktury 'TO-DO' # Vykreslime data do bodoveho grafu, kde na ose x bude tloustka kozni rasy # a na ose y telesna hmotnost. plot('TO-DO', xlab = "Tloustka kozni rasy (mm)", ylab = "Telesna hmotnost (kg)") # Nyni sestrojime linearni model prikazem lm(). Dulezite je zadat # spravne formuli, kde vlevo od "~" je zavisla promenna a vpravo od "~" je nezavisla # promenna. Nezapomente pridat i z jakeho datoveho souboru nase promenne pochazeji. m.weight <- lm(body.W ~ hip.F, data = fat) # Vykresleni diagnostickych grafu # Nastavime, aby se grafy vykreslovaly ve formatu 2x2 par(mfrow = c(2,2)) plot(m.weight) 'TO-DO' # test normality rezidui # Pomoci t-testu overime, zda reziua nemaji systematickou chybu, tj. zda jejich # stredni hodnota je rovna nule. t.test(m.weight$residuals) # Overime nezavislost rezidui. # Pro Durbin – Watsonuv test potrebujeme nacist knihovnu car. library(car) durbinWatsonTest(m.weight) # Odhady parametru, index determinace, celkovy F-test i jednotlive t-testy - to vse # najdeme ve vystupni tabulce ze summary. summary(m.weight) # Index determinace udava, jakou cast variability zavisle promenne lze vysvetlit zvolenou regresni funkci. # Odhady parametru # Beta0 - stredni hodnota predikce pri nulovych hodnotach vsech ostatnich regresoru # tj. telesna hmotnost pri nulove tloustce kozni rasy # Beta1 - rozdil v predikci, kdyz se tloustka kozni rasy zvedne o 1 mm # Celkovy F-test: testuje, ze nas model je lepsi nez nahoda, tj. testuje # nulovou hypotezu o tom ze vsechny koeficienty naseho modelu jsou nulove. # intervaly spolehlivosti pro koeficienty naseho modelu confint('TO-DO') # vypocet MAPE - stredni absolutni procentualni chyba predikce 100 * mean(abs(m.weight$residuals / fat$body.W)) # odhad telesne hmotnosti jedince pri tloustce kozni rasy 20 mm vypocitame pomoci fce predict predict(m.weight, newdata = data.frame(hip.F = 20)) # Zobrazeni grafu # Aby zobrazeni nasi regresni primky, IS a predikcnich intervalu bylo # dostatecne hladke, vytvorime v R dostatecne hustou sekvenci bodu na ose x. # Tato sekvence bude zacinat v minimalni hodnote kozni rasy uvedene v nasich datech # a koncit bude v maximalni hodnote. xx <- seq('TO-DO','TO-DO', length = 'TO-DO') # Pripravime si intervaly spolehlivosti - pomoci funkce predict. Ta se vzdy aplikuje na nas model # a do argumentu newdata uvedeme hodnoty, ve kterych chceme dopocitat nasi predikci. # V nasem pripade chceme predikovat v hodnotach xx. Typ intervalu nastavime na "confidence". interval.spol <- predict(m.weight, newdata = data.frame(hip.F = xx), interval = 'confidence') # Predikci interval vypocteme analogicky s tim rozdilem, ze interval nastavime na "predict". pred.interval <- 'TO-DO' # Nastavime vykreslovani naseho grafu pouze na jeden obrazek, tj. 1x1 par(mfrow = c(1,1)) plot('TO-DO', 'TO-DO', xlab = "Tloustka kozni rasy (mm)", ylab = "Telesna hmotnost (kg)") # Prikazem lines doplnime do obrazku primky. Nejprve doplnime samotnou regresni primku. # Hodnoty y teto primky najdeme v prvnim sloupecku promenne "interval.spol". lines(xx, interval.spol[,1],col = "red") # Analogickym zpusobem doplnime IS. Dolni hranici IS a hornici IS najdeme ve druhem, resp. # tretim sloupci promenne "interval.spol". lines(xx,interval.spol[,2], col = "red", lty = 2) 'TO-DO' # doplnte horni hranici # Predikcni intervaly najdeme ve druhem a tretim sloupci promenne pred.interval # vykreslete je modrou barvou 'TO-DO' legend("topleft",c("model","IS","pred. int."), lty = c(1,2,2), col = c("red", "red", "blue")) # doplneni legendy ## vytvoreni modelu paraboly m.weight.2 <- lm(body.W ~ hip.F + I(hip.F^2), data = fat) # udelame diagnosticke grafy a testy predpokladu modelu analogicky jako u linearni regrese 'TO-DO' # vypracujte samostatne analogicky resenemu prikladu