# ------------------------------------------------------------------------------ # -------- Übung zur Vorlesung Generalisierte Regressionsmodelle --------------- # -------- R Code / Blatt 6 --------------- # ------------------------------------------------------------------------------ # -------- Aufgabe 5 ---------------------------------------------------------- # Einlesen der Daten soep <- read.table("fakesoep.dat",header=T) # Sichbarmachen der Variablen attach(soep) # (e) ### Likelihood-Ratio ### # Volles Modell gammaLog <- glm(beink ~ groesse + alter + dauer + verh + geschl + deutsch + abitur, family=Gamma(link=log)) # Modell mit \beta_alter = \beta_2 = 0 gammaLogredai <- glm(beink ~ groesse + dauer + verh + geschl + deutsch + abitur, family=Gamma(link=log)) deviance_gamma <- function(y,X,beta){ n <- length(y) X <- as.matrix(X) dev <- 0 for(i in 1:n){ x <- X[i,] dev <- dev+(-log(y[i]/exp(x%*%beta))+((y[i]-exp(x%*%beta))/exp(x%*%beta))) } dev <- 2*dev return(dev) } y <- soep$beink X <- cbind(1,soep[,-1]) beta_tilde <- coef(gammaLogredai) beta_hat <- coef(gammaLog) dev_tilde <- deviance_gamma(y,X[,-3],beta_tilde) dev_hat <- deviance_gamma(y,X,beta_hat) # LR - Statistik lambda <- 1/summary(gammaLog)$dispersion*(dev_tilde-dev_hat) # Vergleich mit Chi^2 (p-Wert) 1 - pchisq(lambda,df=1) # => H_0 beibehalten # einfacher lambda <- 1/summary(gammaLog)$dispersion*(gammaLogredai$deviance - gammaLog$deviance) # oder noch einfacher mit anova anova(gammaLogredai,gammaLog,test="Chi") ######################################################################################## ### Wald ### X <- as.matrix(X) InvF_hat <- solve(1/summary(gammaLog)$dispersion*t(X)%*%X) w <- coef(gammaLog)[3]^2/InvF_hat[3,3] t <- coef(gammaLog)[3]/sqrt(InvF_hat[3,3]) # Vergleich mit Chi^2 (p-Wert) 1 - pchisq(w,df=1) 2*pt(-abs(t),df=gammaLog$df.residual) # => H_0 beibehalten # einfacher varbeta <- diag(summary(gammaLog)$cov.scaled) w <- gammaLog$coef[3]^2/varbeta[3] # oder einfach ablesen aus summary(gammaLog) ######################################################################################## ### Score-Test ### h_tilde <- c(exp(X[,-3]%*%coef(gammaLogredai))) D_tilde <- diag(h_tilde) sigma_tilde <- summary(gammaLogredai)$dispersion*D_tilde^2 score_tilde <- t(X)%*%D_tilde%*%solve(sigma_tilde)%*%(y-h_tilde) InvF_tilde <- solve(1/summary(gammaLogredai)$dispersion*t(X)%*%X) u <- t(score_tilde)%*%InvF_tilde%*%score_tilde # Vergleich mit Chi^2 (p-Wert) 1 - pchisq(u,df=1) # => H_0 beibehalten # oder einfacher mit anova anova(gammaLogredai,gammaLog,test="Rao") rao <- anova(gammaLogredai,gammaLog,test="Rao")[2,5] rao/summary(gammaLogredai)$dispersion # (f) # Modell mit \beta_2 = \beta_4 = \beta=6 = 0 gammaLogredaii <- glm(beink ~ groesse + dauer + geschl + abitur, family=Gamma(link=log)) lambda <- 1/summary(gammaLog)$dispersion*(gammaLogredaii$deviance - gammaLog$deviance) # Vergleich mit Chi^2 (p-Wert) 1 - pchisq(lambda,df=3) # => H_0 beibehalten # Modell mit \beta_1 = \beta_3 gammaLogredaiii <- glm(beink ~ I(groesse + dauer) + alter + verh + geschl + deutsch + abitur, family=Gamma(link=log)) lambda <- 1/summary(gammaLog)$dispersion*(gammaLogredaiii$deviance - gammaLog$deviance) # Vergleich mit Chi^2 (p-Wert) 1 - pchisq(lambda,df=1) # => H_0 ablehnen