#Código Curso Modelo de Regresión Lineal Múltiple ( Clases 1 a 4) #MODELO DE REGRESI?N LINEAL MULTIPLE install.packages("quantmod") library(quantmod) #install.packages("tseries") library(tseries) #install.packages("fImport") library(fImport) #install.packages("forecast") library(forecast) #install.packages("TSA") library(TSA) #install.packages("Quandl") library(Quandl) #install.packages("lmtest") library(lmtest) #install.packages("stats") library(stats) #NOTACI?N MATRICIAL PARA MCO # Y= B0 + B1*X + B2*Z + .....+ U # EJEMPLO 1 VENTAS <- c(10,6,5,12,10,15,5,12,17,20) # Y PRECIO <- c(1.30,2,1.7,1.5,1.6,1.2,1.6,1.4,1,1.10) #X PUBLICIDAD <- c(9,7,5,14,15,12,6,10,15,21) #x2 O Z plot(VENTAS,type="l") plot(PRECIO,type="l") plot(PUBLICIDAD,type="l") #B = ((TRAS_X*X)-1) * (TRAS_X*Y) #PASOS #1 CONSTRUIR LA MATRIX X intercepto<- c(1,1,1,1,1,1,1,1,1,1) x<- data.frame(intercepto,PRECIO,PUBLICIDAD) matriz_X <- cbind(intercepto,PRECIO,PUBLICIDAD) #10*3 # 2. HACER LA TRANSPUESTA (cambiar filas por columnas) tras_X <- t(matriz_X) #3*10 tras_X # MULTIPLICACION E INVERSA multi_X <- tras_X %*% matriz_X #3*3 multi_X inversa <- solve(multi_X) Y <- cbind(VENTAS) #10*1 # inversa * XT*Y multi_X_Y <- tras_X %*% Y multi_X_Y #B = ((TRAS_X*X)-1) * (TRAS_X*Y) betas <- inversa %*% multi_X_Y betas[1] #intercepto betas[2] # beta1 betas[3] #beta 2 #int y_pronosticada <- betas[1]+ betas[2]*PRECIO + betas[3]*PUBLICIDAD y_pronosticada #***** comprobamos con la funci?n de R modelo <-lm(VENTAS ~ PRECIO + PUBLICIDAD) summary(modelo) #### CLASE 2 -- INFERENCIAS E INTERPRETACIONES SOBRE EL MODELO # 1 - y pronosticada Y^ y_pronosticada <- betas[1]+ betas[2]*PRECIO + betas[3]*PUBLICIDAD y_pronosticada #2 sacamos los residuos Y - Y^ residuos <- VENTAS - y_pronosticada plot(residuos,type="l") #3 Sacamos los residuos al cuadrado residuos_cuadrados <- residuos^2 residuos_cuadrados #4 sumatorio residuos al cuadrado sum_res_cuadr <- sum(residuos_cuadrados) sum_res_cuadr #5 Error estandar de la estimaci?n #n -k-1 sum_res_cuadr/(10-2-1) Sxyz <- sqrt(sum_res_cuadr/(10-2-1)) # Error estandar estimaci?n Sxyz #6 C?lculo del R2 ( coeficiente de determinaci?n) #R2= SSR /SST #SST = sum(VENTAS- media_Y)^2 media_Y<- mean(VENTAS) Sumas =(VENTAS- media_Y)^2 SST = sum(Sumas) SST #si ya tenmos SST y SSE podemos saca facil el SSR # SST = SSR + SSE SSE <- sum_res_cuadr SSR <- SST- sum_res_cuadr #Por tanto R2 R2 <- SSR/SST R2 #varibles indep eplican el 93 de la varibilidad de la variable y Ventas # ventas est?n explicadas en un 93 % por el precio y la publicidad #tabla ANOVA MSR = SSR/ 2 MSE = SSE/ (10-2-1) Prueba_F = MSR/MSE Prueba_F summary(modelo) R2 Sxyz # R CUADRADO AJUSTADO ############################### ############################### # CLASE 3 R CUADRADO AJUSTADO modelo <-lm(VENTAS ~ PRECIO + PUBLICIDAD) summary(modelo) -8.2476/2.1961 #r2 0.9319 r2 ajus 0.9125 #R2 AJUSTADO va a tener en cuenta la cantidad var indep del modelo #R2_ajust<- 1-(1-R2)*(n-1/n-k-1) R2_ajust<- 1-((1-R2)*((10-1)/(10-2-1))) R2_ajust ### CLASE N?MERO 4 - PRUEBA t hipotesis #sum_res_cuadr/(10-2-1) var_error<- Sxyz^2 var_error #var_betas <- var_error * ((TRAS_X*X)-1) # raiz cuadrada(var_betas) # MULTIPLICACION E INVERSA multi_X <- tras_X %*% matriz_X #3*3 multi_X inversa <- solve(multi_X) inversa var_betas<- var_error * inversa var_betas # raiz cuadrada erro_s_betas <- sqrt(var_betas) erro_s_betas #summary(modelo) media_x1<- mean(PRECIO) media_x2<- mean(PUBLICIDAD) X1_var = (PRECIO - media_x1)^2 X2_var = (PUBLICIDAD - media_x2)^2 X1<- sum(X1_var) X1 X2<- sum(X2_var) X2 (Sxyz^2)*inversa sqrt(inversa) sqrt(4.822667) sqrt(0.01786816) sb1 <- Sxyz/(sqrt(X1)) #???desviaci?n estandar estimada x1 sb2 <- Sxyz/(sqrt(X2)) betas[2]/sb1 betas[3]/sb2