# KOMMANDOER TIL FORELESNINGENE FOR UKE 7 # =============== # EKSEMPEL: FOEDSLSVEKTER (multippel lineær regresjoen) # Les inn dataene: fvekt=read.table("http://www.uio.no/studier/emner/matnat/math/STK2120/v13/fvekt.txt",header=T) # Plott som viser hvordan fødselsvekt henger sammen # med varighet, kjønn og paritet: plot(fvekt$varighet,fvekt$vekt,xlab="Varighet (uker)", ylab="Vekt (gram)") boxplot(vekt~kjonn,data=fvekt, names=c("Gutt","Jente")) boxplot(vekt~paritet,data=fvekt,names=c("Første","Andre", "Tredje")) # Lineaer regresjon med forklaringsvariablene slik de er # gitt paa datafilen: fit1.vekt=lm(vekt~varighet+kjonn+paritet,data=fvekt) summary(fit1.vekt) # Lineaer regresjon med sentrert varighet: fvekt$cvarighet=fvekt$varighet-40 fit2.vekt=lm(vekt~cvarighet+kjonn+paritet,data=fvekt) summary(fit2.vekt) # Lineaer regresjon med paritet som faktor fvekt$paritet=factor(fvekt$paritet) fit3.vekt=lm(vekt~cvarighet+kjonn+paritet,data=fvekt) summary(fit3.vekt) # Lineaer regresjon med kjoenn og paritet som faktor fvekt$kjonn=factor(fvekt$kjonn) fit4.vekt=lm(vekt~cvarighet+kjonn+paritet,data=fvekt) summary(fit4.vekt) # Test av nullhypotesen om ingen effekt av paritet # (se notatet "Hypotesetesting ved lineaer regresjon"): fit5.vekt=lm(vekt~cvarighet+kjonn,data=fvekt) anova(fit5.vekt,fit4.vekt) # Tilpasser modell med lik effekt av paritet 2 og 3: fvekt$nyparitet=factor(as.numeric(fvekt$paritet!=1)) fit6.vekt=lm(vekt~cvarighet+kjonn+nyparitet,data=fvekt) summary(fit6.vekt) # Tester nullhypotesen om lik effekt av paritet 2 og 3: anova(fit6.vekt,fit4.vekt) # Tilpasser modeller med intraksjon: fit7.vekt=lm(vekt~cvarighet+kjonn+nyparitet+cvarighet:kjonn, data=fvekt) summary(fit7.vekt) fit8.vekt=lm(vekt~cvarighet+kjonn+nyparitet+kjonn:nyparitet, data=fvekt) summary(fit8.vekt) fit9.vekt=lm(vekt~cvarighet+kjonn+nyparitet+cvarighet:nyparitet, data=fvekt) summary(fit9.vekt) # Vi bregner konfidensintervall for forventet vekt for # en nyfødt jente med svangerskapslengde 41 uker som er # mors andre eller tredje barn: new=data.frame(cvarighet=1,kjonn="2",nyparitet="1") predict(fit6.vekt,newdata=new,interval="confidence") # Vi beregner prediksjonsintervall for en tilsvarende jente: predict(fit6.vekt,newdata=new,interval="prediction") # Sjekk av modell forutsetninger # Normalfordeling: qqnorm(fit6.vekt$residuals) # Lik varians: plot(fit6.vekt$fitted.values,fit2.vekt$residuals, xlab="Tilpasset verdi",ylab="Residual") # Lineaer effekt av varighet: plot(fvekt$varighet,fit6.vekt$residuals, xlab="Varighet (uker)",ylab="Residual") # ============================ # Eksempel: Karakterer for computer science studenter # Les inn data: karakterer=read.table("http://www.uio.no/studier/emner/matnat/math/STK2120/v13/karakterer.txt", header=T) # Tilpasser modell med poeng ved matematikkdelen av SAT # som eneste forklaringsvariabel: fit1.kar=lm(kar~satm,data=karakterer) summary(fit1.kar) # Tilpasser modell med poeng ved matematikkdelen # av SAT og matematikkarakterer ved high school # som forklaringsvariabler: fit2.kar=lm(kar~satm+hsm,data=karakterer) summary(fit2.kar) # Se notatet "Regresjon og konfundering" for en forklaring # av resultatene