# 20. přednáška 9. prosince 2009 rm(list=ls()) # x1 [cm] (x1 = c(rep(1,16),rep(-1,14))) # x2 [kg] (x2 = c(c(2,-.5,-.5,.5,.5,.5,.5),rep(0,20),c(.5,-.5,-2))) (XA = cbind(x0=1,x1,x2)) print(A <- crossprod(XA)) # matice X'X # # místo [cm] [m], místo [kg] [g] (XB = cbind(x0=1,x1=0.01*x1,x2=1000*x2)) (B <- crossprod(XB)) print(format(B,scientific=FALSE),quote=FALSE) # indexy podmíněnosti matic X'X (dA <- svd(A)$d) (dB <- svd(B)$d) rbind(dA[1]/dA,dB[1]/dB) # XA0 = scale(XA[,2:3],center=TRUE,scale=FALSE) XB0 = scale(XB[,2:3],center=TRUE,scale=FALSE) cbind(XA0,XB0) (A0 = crossprod(XA0)) (B0=crossprod(XB0)) # indexy podmíněnosti (dA0 <- svd(A0)$d) (dB0 <- svd(B0)$d) rbind(dA0[1]/dA0,dB0[1]/dB0) # před centrováním: rbind(dA[1]/dA,dB[1]/dB) # korelační matice (x1,x2) musí být stejné! print(R <- cor(cbind(x1,x2))) (dR <- svd(R)$d) dR[1]/dR # # nová data (pololetní průměry, pohlaví, IQ) # Iq = read.csv2("data/iq.csv") summary(Iq) attach(Iq) summary(a <- lm(iq~divka+zn7+zn8)) # source("VIF.R") VIF(a) library(car) vif(a) star <- function(x) (x-mean(x))/sqrt(crossprod(x-mean(x))) iqStar = star(iq) zn7Star = star(zn7) zn8Star = star(zn8) divkaStar = star(divka) # v * modelu NESMÍM zakázat abs. člen, jinak špatně st. volnosti: summary(aStar<-lm(iqStar~divkaStar+zn7Star+zn8Star)) summary(a) cbind(deviance(aStar),1-summary(aStar)$r.squared,1-summary(a)$r.squared) # scale dělí výb. sm. odchylkou místo Tj # protože je n = 111, tedy n-1 = 110, # bude RSS v násl. modelu 110-krát větší summary(aScale<-lm(scale(iq)~scale(divka)+scale(zn7)+scale(zn8))) summary(a) cbind(deviance(aStar),deviance(aScale)/110) VIF(aScale) VIF(a) VIF(aStar) VIF(lm(iq~divka+zn7)) # proč jsou obojí VIF identické? cor(divka,zn7)^2 summary(lm(iq~divka+zn7)) summary(lm(iqStar~divkaStar+zn7Star)) # číslo podmíněnosti kappa(model.matrix(~divka+zn7+zn8),exact=TRUE) kappa(model.matrix(a),exact=TRUE) d = svd(model.matrix(~divka+zn7+zn8))$d;d[1]/d #