Parte Teorica (Seccion Teorica)

1.En una prueba FG, para un modelo con 5 regresores, y 60 observaciones con un alpha de 4.3%, el estadistico de prueba dio 40, el valor del determinante de la matriz de correlacion del modelo es de:
m<-5 #ncol #Regresores
n<-60 #nrow
Estadticoprueb_FG<-40
det_R<-exp(Estadticoprueb_FG/-((n-1)-((2*m+5)/6)))
print(det_R)
## [1] 0.4926459
2.Prueba robusta para evaluar la normalidad de los residuos, independientemente del tamano muestral.
#R// Jarque Bera
3. Para un modelo con 2 regresores, la matriz de correlacion es (1,0.96,;0.96,1), el VIF es de:
Mat_cor<-matrix(data = c(1,0.96,0.96,1),
          nrow = 2,
          ncol = 2,byrow = TRUE)
#VIF
print(Mat_cor)
##      [,1] [,2]
## [1,] 1.00 0.96
## [2,] 0.96 1.00
VIF<-diag(solve(Mat_cor))
print(VIF)
## [1] 12.7551 12.7551
4. Para una tolerancia de 0.05 el VIF es de:
toleran<-0.05
VIF<-1/toleran
print(VIF)
## [1] 20
5. Sean 10,15,-10,-15,4,-4,los residuos de un modelo. El estadistico de prueba para el contraste de shapiro Wilk es de:
residuos_datos<-matrix(data = c(10,15,-10,-15,4,-4),
          nrow = 6,
          ncol = 1,byrow = TRUE)
colnames(residuos_datos) <-c("Res")
## Prueba de shapiro wilk
shapiro.test(residuos_datos)
## 
##  Shapiro-Wilk normality test
## 
## data:  residuos_datos
## W = 0.96164, p-value = 0.8323
6. En una prueba de FG, para un modelo con 5 regresores y un alfa de 4.3%, el valor critico es de:
# Calcular el valor critico
#m numero de regresores 
m_reg<-5 
#gl
gl<-m_reg*(m_reg-1)/2
#VC
VC<-qchisq(0.043,gl,lower.tail = FALSE)
print(VC)
## [1] 18.79093
7. Sean 10,15,-10,-15,4,-4,los residuos de un modelo.El estadistico de prueba para el contraste de normalidad de JB es:
library(normtest)
jb.norm.test(residuos_datos)
## 
##  Jarque-Bera test for normality
## 
## data:  residuos_datos
## JB = 0.51072, p-value = 0.614
8. Sean 10,15,-10,-15,4,-4,los residuos de un modelo.El estadistico de prueba para el contraste de normalidad de KS es:
library(nortest)
lillie.test(residuos_datos)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  residuos_datos
## D = 0.1374, p-value = 0.9763
9. Si el VIF para una variable es de 2.5, el coeficiente de correlacion entre la variable y el resto de regresores es de:
VIF_var<-2.5
coef_cor<-(VIF_var-1)/VIF_var
print(coef_cor)
## [1] 0.6
10. Para un VIF = 2.5,la tolerancia es de:
VIF_tol<-2.5
tolerancia<-1/VIF_tol
print(tolerancia)
## [1] 0.4

Segunda Parte

#Sea el conjunto de datos, tomados en 24 meses correspondientes a los gastos de comercializacion (C) de una empresa, el nivel de ventas (V), su coste de personal (P) y los costes de materias primas (M); se trata de estimar el nivel de ventas a partir de las restantes variables.

#1. Estime el modelo de regresion lineal, correspondiente y verifique el supuesto de normalidad, usando todas las pruebas vistas en clase. Comente sus resultados.

#2. Utilizando todas las herramientas vistas en clase, evalue la situacion de colinealidad de los regresores del modelo. Comente sus resultados.

Carga de Datos

library(readxl)
library(stargazer)
ventas_empresa <- read_excel("C:/Users/melvi/Desktop/Econometria/Datos/ventas_empresa.xlsx")
regresion_ventas <-lm(formula = V~C+P+M,data = ventas_empresa)
stargazer(regresion_ventas,title = 'Modelo_ventas',type = 'html')
Modelo
Dependent variable:
V
C 0.923***
(0.223)
P 0.950***
(0.156)
M 1.298***
(0.431)
Constant 107.444***
(18.057)
Observations 24
R2 0.980
Adjusted R2 0.977
Residual Std. Error 9.506 (df = 20)
F Statistic 323.641*** (df = 3; 20)
Note: p<0.1; p<0.05; p<0.01

Pruebas de normalidad.

library(fitdistrplus)
ajuste_normal<-fitdist(data = regresion_ventas$residuals,distr = 'norm')
plot(ajuste_normal)

PRUEBA JB

jb.norm.test(regresion_ventas$residuals)
## 
##  Jarque-Bera test for normality
## 
## data:  regresion_ventas$residuals
## JB = 1.4004, p-value = 0.276
#El vc del nivel de significancia del 0.05 es de 5.9915 mientras que la prueba jb es de 1.4004, dado la regla de decicion no se rechaza la hipotesis nula H0 dado que JB<VC esto muestra evidencia que los residuos tienen una distrubucion normal

PRUEBA KS

lillie.test(regresion_ventas$residuals)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  regresion_ventas$residuals
## D = 0.13659, p-value = 0.2935
#p-value es de 0.2935 de KS con un nivel de significancia del 5%, bajo la regla de desicion no se rechaza hipotesis nula H0 porque P-value >Nivel de significancia y presenta eividencia que los rsiduos siguen una distribucion normal

PRUEBA S-W

shapiro.test(regresion_ventas$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  regresion_ventas$residuals
## W = 0.95315, p-value = 0.3166
#Normalizado
miu<-0.0038915*((log(24))^3)-0.083751*((log(24))^2)-0.31082*(log(24))-1.5861
sigma<-exp(1)^((0.0030302*(log(24)^2))-0.082676*(log(24))-0.4803)
Wn<- (log(1-0.95315)-miu)/sigma
print(Wn)
## [1] 0.4772707

Pruebas de Multicolinealidad.

Indice de condicion

library(mctest)
source(file = 'C:/Users/melvi/Desktop/Econometria/Datos/correccion_eigprop.R')
my_eigprop(regresion_ventas)
## 
## Call:
## my_eigprop(mod = regresion_ventas)
## 
##   Eigenvalues      CI (Intercept)      C      P      M
## 1      3.9869  1.0000      0.0007 0.0001 0.0003 0.0001
## 2      0.0095 20.4852      0.8776 0.0049 0.0877 0.0075
## 3      0.0028 37.8141      0.1183 0.1594 0.8478 0.0636
## 4      0.0008 71.1635      0.0034 0.8356 0.0642 0.9288
## 
## ===============================
## Row 4==> C, proportion 0.835554 >= 0.50 
## Row 3==> P, proportion 0.847805 >= 0.50 
## Row 4==> M, proportion 0.928751 >= 0.50
#el Inidice de condicion es de 71.1635 siendo este mayor que 30 esto nos muestra un nivel de multicolinealaidad severa.

PRUEBA FG

library(mctest)
mctest(regresion_ventas)
## 
## Call:
## omcdiag(mod = mod, Inter = TRUE, detr = detr, red = red, conf = conf, 
##     theil = theil, cn = cn)
## 
## 
## Overall Multicollinearity Diagnostics
## 
##                        MC Results detection
## Determinant |X'X|:         0.0346         0
## Farrar Chi-Square:        71.2080         1
## Red Indicator:             0.8711         1
## Sum of Lambda Inverse:    20.9196         1
## Theil's Method:            0.5430         1
## Condition Number:        105.2299         1
## 
## 1 --> COLLINEARITY is detected by the test 
## 0 --> COLLINEARITY is not detected by the test
# Contraste 
library(psych)
library(fastGraph)
Mat_X<-model.matrix(regresion_ventas)
FG_test<-cortest.bartlett(Mat_X[,-1])
VC_1<-qchisq(0.05,FG_test$df,lower.tail = FALSE)
print(FG_test)
## $chisq
## [1] 71.20805
## 
## $p.value
## [1] 2.352605e-15
## 
## $df
## [1] 3
shadeDist(xshade = FG_test$chisq,
          ddist = "dchisq",
          parm1 = FG_test$df,
          lower.tail = FALSE,
          sub=paste("VC:",VC_1,"FG:",FG_test$chisq))

# El estadistico FG es de 71.2080 mientras que el VC de 7.817727, bajo la regla de decision, se rechaza la hipotesis nula H0 dado que GF>VC y preseta evidencia de multicolinealidad en los regresores.

VIF

library(car)
VIF_car<-vif(regresion_ventas)
print(VIF_car)
##        C        P        M 
## 7.631451 3.838911 9.449210
#Representacion grafica 
mc.plot(regresion_ventas,vif = 2)

#En un umbral de 2, la inflacion de la varianza es provocada por los gastos de comercializacion (C) con 7.631451, su coste de personal (P) con 3.838911 , y los costes de materias primas (M) con un valor de 9.449210

Ejercicio 2.

library(stargazer)
library(readr)
load("C:/Users/melvi/Desktop/Econometria/Datos/wage2.RData")

modelo_wage <-lm(formula = educ~sibs+meduc+feduc,data = wage2)
stargazer(modelo_wage,title = 'Modelo_Wage2',type = 'html')
## 
## <table style="text-align:center"><caption><strong>Modelo</strong></caption>
## <tr><td colspan="2" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left"></td><td><em>Dependent variable:</em></td></tr>
## <tr><td></td><td colspan="1" style="border-bottom: 1px solid black"></td></tr>
## <tr><td style="text-align:left"></td><td>educ</td></tr>
## <tr><td colspan="2" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">sibs</td><td>-0.094<sup>***</sup></td></tr>
## <tr><td style="text-align:left"></td><td>(0.034)</td></tr>
## <tr><td style="text-align:left"></td><td></td></tr>
## <tr><td style="text-align:left">meduc</td><td>0.131<sup>***</sup></td></tr>
## <tr><td style="text-align:left"></td><td>(0.033)</td></tr>
## <tr><td style="text-align:left"></td><td></td></tr>
## <tr><td style="text-align:left">feduc</td><td>0.210<sup>***</sup></td></tr>
## <tr><td style="text-align:left"></td><td>(0.027)</td></tr>
## <tr><td style="text-align:left"></td><td></td></tr>
## <tr><td style="text-align:left">Constant</td><td>10.364<sup>***</sup></td></tr>
## <tr><td style="text-align:left"></td><td>(0.359)</td></tr>
## <tr><td style="text-align:left"></td><td></td></tr>
## <tr><td colspan="2" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">Observations</td><td>722</td></tr>
## <tr><td style="text-align:left">R<sup>2</sup></td><td>0.214</td></tr>
## <tr><td style="text-align:left">Adjusted R<sup>2</sup></td><td>0.211</td></tr>
## <tr><td style="text-align:left">Residual Std. Error</td><td>1.987 (df = 718)</td></tr>
## <tr><td style="text-align:left">F Statistic</td><td>65.198<sup>***</sup> (df = 3; 718)</td></tr>
## <tr><td colspan="2" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left"><em>Note:</em></td><td style="text-align:right"><sup>*</sup>p<0.1; <sup>**</sup>p<0.05; <sup>***</sup>p<0.01</td></tr>
## </table>

Pruebas de normalidad

ajuste_normal<-fitdist(data = modelo_wage$residuals,distr = 'norm')
plot(ajuste_normal)

PRUEBA JB

jb.norm.test(modelo_wage$residuals)
## 
##  Jarque-Bera test for normality
## 
## data:  modelo_wage$residuals
## JB = 35.655, p-value < 2.2e-16
# El VC es de 5.9915 para un nivel de significancia del 5%, minetras el JB tiene un valor de 35.655, bajo la regla de decision se rechaza la hipotesis nula H0 dado que JB>VC mostrando evidencia que los residuos no siguen una distribucion normal

PRUEBA KS

lillie.test(modelo_wage$residuals)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  modelo_wage$residuals
## D = 0.089992, p-value = 3.394e-15
# El valor del P-value de KS es de 0.000000000000003394 y el nivel de significancia del 5% , bajo la regla de desicion se rechaza la hipotesis nula H0 ya que p-value<Nivel de significancia y presenta evidencia que los residuos no siguen una distribusion normal .

PRUEBA S-W

shapiro.test(modelo_wage$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  modelo_wage$residuals
## W = 0.96692, p-value = 1.058e-11
#Normalizado
miu<-0.0038915*((log(935))^3)-0.083751*((log(935))^2)-0.31082*(log(935))-1.5861
sigma<-exp(1)^((0.0030302*(log(935)^2))-0.082676*(log(935))-0.4803)
Wn<- (log(1-0.96692)-miu)/sigma
print(Wn)
## [1] 7.351479
#El VC es para un nivel de significancia del 5% es de 1.644854 y el valor de Wn es de 7.351479 bajo la regla de desicion se rechaza la hipotesis nula dado que Wn>VC presentando evidencia de que los residusos no siguen una distribucion normal.

PRUEBAS DE MULTICOLINEALIDAD .

INDICE DE CONDICION

my_eigprop(mod = modelo_wage)
## 
## Call:
## my_eigprop(mod = modelo_wage)
## 
##   Eigenvalues      CI (Intercept)   sibs  meduc  feduc
## 1      3.5576  1.0000      0.0033 0.0194 0.0031 0.0046
## 2      0.3756  3.0778      0.0015 0.7200 0.0107 0.0184
## 3      0.0417  9.2337      0.3235 0.1056 0.0813 0.8786
## 4      0.0251 11.9094      0.6717 0.1549 0.9049 0.0984
## 
## ===============================
## Row 2==> sibs, proportion 0.720032 >= 0.50 
## Row 4==> meduc, proportion 0.904919 >= 0.50 
## Row 3==> feduc, proportion 0.878599 >= 0.50
#Obervamos que el valor del IC es de 11.9094 siendo menor que 20 conluyendo que xiste evidencia de multicolinealidad leve 

PRUEBA FG

matrix_x<-model.matrix(modelo_wage)
FG_testwagen<-cortest.bartlett(matrix_x[,-1])
VC_wagen<-qchisq(0.05,FG_testwagen$df,lower.tail = FALSE)
print(FG_testwagen)
## $chisq
## [1] 358.3897
## 
## $p.value
## [1] 2.27501e-77
## 
## $df
## [1] 3
shadeDist(xshade = FG_testwagen$chisq,ddist = 'dchisq',parm1 = FG_testwagen$df,lower.tail = FALSE, sub=paste('VC:',VC_wagen,'FG:',FG_testwagen$chisq))

#Obervamos que el estadistico FG tiene un valor de 358.3897 y el VC es de 7.8114, bajo la regla de decision la hipotesis nula se rechaza dado que FG>VC mostrandonos evidencia de multicolinealidad en los regresores.

VIF

VIF_car<-vif(modelo_wage)
print(VIF_car)
##     sibs    meduc    feduc 
## 1.098950 1.561254 1.506359
#Representacion grafica 
mc.plot(modelo_wage,vif = 2)

#Interpretacion 
#Bajo el umbral de 2, se puede observar que los regresores sibs, meduc y feduc  no alcanza el umbral dado que el indice de condicion tiene un valor de 11.90 mostrando un nivel de multicolinealidad leve

Ejercicio 3.

#El sueldo inicial medio (salary) para los recien graduados de la Facultad de Economia se determina mediante una funcion lineal: log(salary)=f(SAT,GPA ,log(libvol),log(cost),rank)
#Donde LSAT es la media del puntaje LSAT del grupo de graduados, GPA es la media del GPA (promedio general) del grupo, libvol es el numero de volumenes en la biblioteca de la Facultad de Economia, cost es el costo anual por asistir a dicha facultad y rank es una clasificacion de las escuelas de Economia (siendo rank 1 la mejor)

#1. Estime el modelo de regresion lineal, correspondiente y verifique el supuesto de normalidad, usando todas las pruebas vistas en clase. Comente sus resultados.
#2. Utilizando todas las herramientas vistas en clase, evalue la situacion de colinealidad del modelo. Comente sus resultados 

Carga de datos.

library(stargazer)
library(readr)
load("C:/Users/melvi/Desktop/Econometria/Datos/LAWSCH85.RData")
modelo_salary <-lm(formula = lsalary~LSAT+GPA+llibvol+lcost+rank,data = LAWSCH85)
stargazer(modelo_salary,title = 'Modelo_Salary',type = 'html')
## 
## <table style="text-align:center"><caption><strong>Modelo</strong></caption>
## <tr><td colspan="2" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left"></td><td><em>Dependent variable:</em></td></tr>
## <tr><td></td><td colspan="1" style="border-bottom: 1px solid black"></td></tr>
## <tr><td style="text-align:left"></td><td>lsalary</td></tr>
## <tr><td colspan="2" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">LSAT</td><td>0.005</td></tr>
## <tr><td style="text-align:left"></td><td>(0.004)</td></tr>
## <tr><td style="text-align:left"></td><td></td></tr>
## <tr><td style="text-align:left">GPA</td><td>0.248<sup>***</sup></td></tr>
## <tr><td style="text-align:left"></td><td>(0.090)</td></tr>
## <tr><td style="text-align:left"></td><td></td></tr>
## <tr><td style="text-align:left">llibvol</td><td>0.095<sup>***</sup></td></tr>
## <tr><td style="text-align:left"></td><td>(0.033)</td></tr>
## <tr><td style="text-align:left"></td><td></td></tr>
## <tr><td style="text-align:left">lcost</td><td>0.038</td></tr>
## <tr><td style="text-align:left"></td><td>(0.032)</td></tr>
## <tr><td style="text-align:left"></td><td></td></tr>
## <tr><td style="text-align:left">rank</td><td>-0.003<sup>***</sup></td></tr>
## <tr><td style="text-align:left"></td><td>(0.0003)</td></tr>
## <tr><td style="text-align:left"></td><td></td></tr>
## <tr><td style="text-align:left">Constant</td><td>8.343<sup>***</sup></td></tr>
## <tr><td style="text-align:left"></td><td>(0.533)</td></tr>
## <tr><td style="text-align:left"></td><td></td></tr>
## <tr><td colspan="2" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">Observations</td><td>136</td></tr>
## <tr><td style="text-align:left">R<sup>2</sup></td><td>0.842</td></tr>
## <tr><td style="text-align:left">Adjusted R<sup>2</sup></td><td>0.836</td></tr>
## <tr><td style="text-align:left">Residual Std. Error</td><td>0.112 (df = 130)</td></tr>
## <tr><td style="text-align:left">F Statistic</td><td>138.230<sup>***</sup> (df = 5; 130)</td></tr>
## <tr><td colspan="2" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left"><em>Note:</em></td><td style="text-align:right"><sup>*</sup>p<0.1; <sup>**</sup>p<0.05; <sup>***</sup>p<0.01</td></tr>
## </table>

PRUEBAS DE NORMALIDAD

ajuste_normal<-fitdist(data = modelo_salary$residuals,distr = 'norm')
plot(ajuste_normal)

PRUEBA JB

jb.norm.test(modelo_salary$residuals)
## 
##  Jarque-Bera test for normality
## 
## data:  modelo_salary$residuals
## JB = 0.36511, p-value = 0.8255
# El VC para un nivel de significancia del 5% es de 5.9915 y el valor de JB de 0.36511 bajo la regla de desicion la hipotesis nula no se rechaza dado que JB<VC  presentando evidencia que los residuos  siguen una distribucion normal.
PRUEBA KS
lillie.test(modelo_salary$residuals)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  modelo_salary$residuals
## D = 0.054571, p-value = 0.4123
# El valor de P-value para la prueba ks es de 0.4123 y el nivel de signifcancia es de 5% bajo la regla de decision la hipotesis nula no se rechaza dado que P-value >Nivel de significncia  y presenta evidencia que los residuos siguen una distribucion normal

PRUEBA SW

shapiro.test(modelo_salary$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  modelo_salary$residuals
## W = 0.99282, p-value = 0.7235
miu<-0.0038915*((log(156))^3)-0.083751*((log(156))^2)-0.31082*(log(156))-1.5861
sigma<-exp(1)^((0.0030302*(log(156)^2))-0.082676*(log(156))-0.4803)
Wn<- (log(1-0.99282)-miu)/sigma
print(Wn)
## [1] -0.3320221
# El VC es 1.6448 para un nivel se significancia  del 5%,  mientras el valor de SWn es 0.3320221, bajo la regla de desicion la hipotesis nula no se rechaza dado que Wn<VC por lo que se presenta uan evidencia de que los residuos siguen una distribucion normal.

PRUEBAS DE MULTICOLINEALIDAD

Indice de condicion

my_eigprop(mod = modelo_salary)
## 
## Call:
## my_eigprop(mod = modelo_salary)
## 
##   Eigenvalues       CI (Intercept)   LSAT    GPA llibvol  lcost   rank
## 1      5.7351   1.0000      0.0000 0.0000 0.0000  0.0001 0.0000 0.0021
## 2      0.2604   4.6930      0.0000 0.0000 0.0002  0.0004 0.0001 0.2884
## 3      0.0021  52.4800      0.0058 0.0030 0.0007  0.8411 0.1155 0.1357
## 4      0.0018  55.7648      0.0002 0.0010 0.3355  0.1095 0.1756 0.0161
## 5      0.0004 123.2068      0.4254 0.0588 0.4407  0.0423 0.6610 0.4700
## 6      0.0002 186.7153      0.5686 0.9371 0.2229  0.0066 0.0478 0.0877
## 
## ===============================
## Row 6==> LSAT, proportion 0.937119 >= 0.50 
## Row 3==> llibvol, proportion 0.841136 >= 0.50 
## Row 5==> lcost, proportion 0.661004 >= 0.50
#El indice de condicion tiene un valor de 186.7153 siendo mayor que 30 observando que efectivamente hay un nivel de multicolinealidad severa 

PRUEBA FG

Xmat<-model.matrix(modelo_salary)
m<-ncol(Xmat[,-1]) #Cantidad de variables explicativas k-1
n<-nrow(Xmat)
determinante_R<-det(cor(Xmat[,-1]))
Chi_FG<--(n-1-(2*m+5)/6)*log(determinante_R)
print(Chi_FG)
## [1] 391.509
# _*Valor Critico*_
gl<-m*(m-1)/2
VC<-qchisq(0.05,gl,lower.tail = FALSE)
print(VC)
## [1] 18.30704
#Nuestro estadistico de prueba es mayor que el VC, por lo tanto se rechaza la H0.
shadeDist(xshade = Chi_FG,ddist = "dchisq",gl,lower.tail = FALSE,sub=paste("VC:",VC,"FG:",Chi_FG))

# El estadistico FG tiene un valor de 391.5089 y el VC de 18.3070 bajo la regla de decision la hipotesis nula  se rechaza dado que FG>VC y presenta evidencia de multicolinealidad en los regresores

VIF

mc.plot(modelo_salary,vif = 2)

#Observamos que la variable que infla la varianza es Lsat para un umbral de 2.