------------- # Aufgabe 1 # ------------- MyRegression = function(y,X) { # A beta = c A = t(X)%*%X Ainv = solve(A) c = t(X)%*%y betas = Ainv%*%c fittedvalues = X%*%betas errors = y - fittedvalues result = list(betas,fittedvalues,errors) names(result) = c("betas","fittedvalues","errors") plot(x,y) lines(x,fittedvalues,col="red") return(result) } # Test der Funktion: # Wir betrachten folgendes Beispiel: x = (-10):10 eps = rnorm(21) y = 5 - 0.5*x + eps plot(x,y) # a) Mit der lm()-Funktion: reslm = lm(y ~ x) summary(reslm) names(reslm) # die "residuals" sind die errors, also y - fittedvalues reslm$fit reslm$residuals reslm$res # reicht aus, ist damit eindeutig plot(x,y) lines(x,reslm$fit,col="red") # b) Jetzt mit der MyRegression-Funktion: # der Vektor x0 fuer die Konstante beta0 muss in die # Matrix X der Regressoren mit reingeschrieben werden: # (die lm-Funktion macht das automatisch) n = length(y) x0 = rep(1,n) X = cbind(x0,x) resmy = MyRegression(y,X) resmy$betas resmy$fit resmy$err ------------- # Aufgabe 2 # ------------- Die Regressionskoeffizienten beta = ( beta0 , beta1 ) sind gegeben durch die Formel beta = ( X^T X )^{-1} X^T y wobei die Matrix der Regressoren X gegeben ist durch 1 -6 1 -4 | | 1 -2 X = 1 0 =: x0 x1 1 2 1 4 | | 1 6 mit den Spaltenvektoren x0 und x1. Bezeichnen wir Skalarprodukte mit *, dann haben wir also: x0*x0 x0*x1 7 0 X^T X = = x1*x0 x1*x1 0 112 und damit 1/7 0 ( X^T X )^{-1} = 0 1/112 Wegen x0*y 21 X^T y = = x1*y 56 bekommen wir also beta0 1/7 * 21 3 beta = = = beta1 1/112 * 56 0.5 , also beta0 = 3 und beta1 = 0.5 .