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
#R// Jarque Bera
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
toleran<-0.05
VIF<-1/toleran
print(VIF)
## [1] 20
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
# 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
library(normtest)
jb.norm.test(residuos_datos)
##
## Jarque-Bera test for normality
##
## data: residuos_datos
## JB = 0.51072, p-value = 0.614
library(nortest)
lillie.test(residuos_datos)
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: residuos_datos
## D = 0.1374, p-value = 0.9763
VIF_var<-2.5
coef_cor<-(VIF_var-1)/VIF_var
print(coef_cor)
## [1] 0.6
VIF_tol<-2.5
tolerancia<-1/VIF_tol
print(tolerancia)
## [1] 0.4
#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.
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')
| 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 |
library(fitdistrplus)
ajuste_normal<-fitdist(data = regresion_ventas$residuals,distr = 'norm')
plot(ajuste_normal)
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
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
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
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.
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.
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
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>
ajuste_normal<-fitdist(data = modelo_wage$residuals,distr = 'norm')
plot(ajuste_normal)
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
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 .
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.
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
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_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
#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
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>
ajuste_normal<-fitdist(data = modelo_salary$residuals,distr = 'norm')
plot(ajuste_normal)
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.
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
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.
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
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
mc.plot(modelo_salary,vif = 2)
#Observamos que la variable que infla la varianza es Lsat para un umbral de 2.