library(normtest)
matriz_residuos<-matrix(data = c(10,15, -10,
-15, 4, -4), nrow = 1, ncol = 6, byrow = TRUE)
print(matriz_residuos)
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 10 15 -10 -15 4 -4
jb.norm.test(matriz_residuos)
##
## Jarque-Bera test for normality
##
## data: matriz_residuos
## JB = 0.51072, p-value = 0.5945
matriz_cor<-matrix(data = c(1,0.96, 0.96,
1), nrow = 2, ncol = 2, byrow = TRUE)
print(matriz_cor)
## [,1] [,2]
## [1,] 1.00 0.96
## [2,] 0.96 1.00
# los VIF, se obtienen de la diagonal principal de la inversa de la matriz de Correlación
VIF<-diag(solve(matriz_cor))
print(VIF)
## [1] 12.7551 12.7551
#VIF=1/1-R^2
#Para este caso, 2.5=1/1-R^2, por lo tanto R^2 es igual a:
1-1/2.5
## [1] 0.6
library(nortest)
lillie.test(matriz_residuos)
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: matriz_residuos
## D = 0.1374, p-value = 0.9763
gl<-4*(4-1)/2
VC<-qchisq(0.043,gl,lower.tail = FALSE)
print(VC)
## [1] 13.00226
shapiro.test(matriz_residuos)
##
## Shapiro-Wilk normality test
##
## data: matriz_residuos
## W = 0.96164, p-value = 0.8323
solucion:
# VIF=1/1-R^2
# Por lo tanto:
1/2.5
## [1] 0.4
#Calculando el determinante
#chi_FG = -(n-1-(2*m+5)/6)*log(determinante)
#quedando: 40/-(59-1-(2*4+5)/6)=ln(determinante)
#Por lo tanto:
dt<- 40/-(59-1-(2*4+5)/6)
print(dt)
## [1] -0.7164179
determinante<-exp(dt)
print(determinante)
## [1] 0.488499
options(scipen = 9999)
library(readxl)
ventas_empresa <- read_excel("C:/Users/manue/Desktop/ventas_empresa.xlsx")
library(stargazer)
modelo_ventas<-lm(formula = V~C+P+M,data = ventas_empresa)
stargazer(modelo_ventas,title = " Regresión de modelo ventas ",type = "html",digits = 8)
Dependent variable: | |
V | |
C | 0.92256720*** |
(0.22273310) | |
P | 0.95017690*** |
(0.15584520) | |
M | 1.29778600*** |
(0.43072950) | |
Constant | 107.44350000*** |
(18.05749000) | |
Observations | 24 |
R2 | 0.97981680 |
Adjusted R2 | 0.97678940 |
Residual Std. Error | 9.50557000 (df = 20) |
F Statistic | 323.64150000*** (df = 3; 20) |
Note: | p<0.1; p<0.05; p<0.01 |
library(normtest)
jb.norm.test(modelo_ventas$residuals)
##
## Jarque-Bera test for normality
##
## data: modelo_ventas$residuals
## JB = 1.4004, p-value = 0.2775
Aun nivel de significancia de 0.05 los resultados son los siguientes.
1.4004<5.991(JB<VC) NO rechaza Ho es decir los residuos tienen una distribucion normal.
0.2805>0.05 (P>alfa)NO rechaza Ho es decir los residuos tienen una distribucion normal.
library(nortest)
lillie.test((modelo_ventas$residuals))
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: (modelo_ventas$residuals)
## D = 0.13659, p-value = 0.2935
Aun nivel de significancia de 0.05 los resultados son los siguientes.
0.13659<0.1920(JB<VC) NO rechaza Ho es decir los residuos tienen una distribucion normal.
0.2935>0.05 (P>alfa) NO rechaza Ho es decir los residuos tienen una distribucion normal.
shapiro.test(modelo_ventas$residuals)
##
## Shapiro-Wilk normality test
##
## data: modelo_ventas$residuals
## W = 0.95315, p-value = 0.3166
W<-0.95315
mew<-0.0038915*I(log(24))^3-0.083751*I(log(24))^2-0.31082*I(log(24))-1.5861
des<-exp(0.0030302*I(log(24))^2-0.083751*(log(24))-0.4803)
Wn<-(log(1-W)-mew)/des
print(Wn)
## [1] 0.4789041
Aun nivel de significancia de 0.05 los resultados son los siguientes:
0.4789041<1.664(Wn<VC) NO rechaza Ho es decir los residuos tienen una distribucion normal.
0.3166>0.05(p>alfa) NO rechaza Ho es decir los residuos tienen una distribucion normal.
# matriz Xmat
Xmat<-model.matrix(modelo_ventas)
print(Xmat)
## (Intercept) C P M
## 1 1 197 173 110
## 2 1 208 152 107
## 3 1 181 150 99
## 4 1 194 150 102
## 5 1 192 163 109
## 6 1 196 179 114
## 7 1 203 169 113
## 8 1 200 166 113
## 9 1 198 159 115
## 10 1 221 206 119
## 11 1 218 181 120
## 12 1 213 192 123
## 13 1 207 191 122
## 14 1 228 217 131
## 15 1 249 190 133
## 16 1 225 221 135
## 17 1 237 189 133
## 18 1 236 192 128
## 19 1 231 193 134
## 20 1 260 233 135
## 21 1 254 196 139
## 22 1 239 199 138
## 23 1 248 202 146
## 24 1 273 240 153
## attr(,"assign")
## [1] 0 1 2 3
# matriz XXmat
XXmat<-t(Xmat)%*%Xmat
print(XXmat)
## (Intercept) C P M
## (Intercept) 24 5308 4503 2971
## C 5308 1187852 1007473 664534
## P 4503 1007473 859157 564389
## M 2971 664534 564389 372387
## sn calculo de la matriz de normalizacion
sn<-diag(1/sqrt(diag(XXmat)))
print(sn)
## [,1] [,2] [,3] [,4]
## [1,] 0.2041241 0.000000000 0.000000000 0.000000000
## [2,] 0.0000000 0.000917527 0.000000000 0.000000000
## [3,] 0.0000000 0.000000000 0.001078857 0.000000000
## [4,] 0.0000000 0.000000000 0.000000000 0.001638712
## XXmat Normalizada
XX_norm<-(sn%*%XXmat)%*%sn
print(XX_norm)
## [,1] [,2] [,3] [,4]
## [1,] 1.0000000 0.9941322 0.9916538 0.9938018
## [2,] 0.9941322 1.0000000 0.9972774 0.9991686
## [3,] 0.9916538 0.9972774 1.0000000 0.9978035
## [4,] 0.9938018 0.9991686 0.9978035 1.0000000
## autovalores
library(stargazer)
#autovalores
lambdas<-eigen(XX_norm,symmetric = TRUE)$values
print(lambdas)
## [1] 3.9869237681 0.0095007154 0.0027882470 0.0007872695
# Indice de condicion
K<-sqrt(max(lambdas)/min(lambdas))
print(K)
## [1] 71.16349
En el caso de que κ(x)≥30 la multicolinealidad es severa. Y dado que el valor obtenido es de 71.16349 en este modelo la colinealidad es fuerte entre los regresores.
library(mctest)
source("C:/Users/manue/Desktop/Practicas_ECMA/datos_Rdata/correccion_eigprop.R")
my_eigprop(mod=modelo_ventas)
##
## Call:
## my_eigprop(mod = modelo_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
library(fastGraph)
m<-ncol(Xmat[,-1]) # cantidad de variables explicativas k-1
n<-nrow(Xmat)
determinante_R<- det(cor(Xmat[,-1])) # determinanre de la matriz de correlacion
chi_FG<--(n-1-(2*m+5)/6)*log(determinante_R)
print(chi_FG)
## [1] 71.20805
## Valor Critico
gl<-m*(m-1)/2
VC<-qchisq(0.05,gl,lower.tail = FALSE)
print(VC)
## [1] 7.814728
shadeDist(xshade = chi_FG,ddist = "dchisq",parm1 = gl,lower.tail = FALSE,sub=paste("VC:",VC,"FG:",chi_FG))
Aun nivel de signifancia de 0.05 los resultados son los siguientes:
71.20805>7.814728(FG>VC) hay evidencia de multicolinealidad en los regresores.
0.000000000000002352605<0.05(P<alfa) hay evidencia de multicolinealidad en los regresores.
library(mctest)
mctest(modelo_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
library(psych)
library(fastGraph)
FG_test<-cortest.bartlett(Xmat[,-1])
VC_1<-qchisq(0.05,FG_test$df,lower.tail = FALSE)
print(FG_test)
## $chisq
## [1] 71.20805
##
## $p.value
## [1] 0.000000000000002352605
##
## $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))
VIF<-diag(solve(cor(Xmat[,-1])))
print(VIF)
## C P M
## 7.631451 3.838911 9.449210
library(car)
VIFs_car<-vif(modelo_ventas)
print(VIFs_car)
## C P M
## 7.631451 3.838911 9.449210
library(mctest)
mc.plot(modelo_ventas,vif = 2,)
aun umbral de 2 existe una alta colinealidad entre los gastos de comercializacion y los gastos de materia prima, por lo tanto, están inflando la varianza del parámetro de la variable que están representando.
options(scipen = 9999)
library(stargazer)
load("C:/Users/manue/Desktop/LAWSCH85.RData")
library(dplyr)
modelo_salary<- lm(formula= lsalary~LSAT+GPA+llibvol+lcost+rank, data = LAWSCH85)
stargazer(modelo_salary,title = " Regresión de modelo Salary",type = "html",digits = 8)
Dependent variable: | |
lsalary | |
LSAT | 0.00469647 |
(0.00401049) | |
GPA | 0.24752390*** |
(0.09003704) | |
llibvol | 0.09499321*** |
(0.03325435) | |
lcost | 0.03755380 |
(0.03210608) | |
rank | -0.00332459*** |
(0.00034846) | |
Constant | 8.34322600*** |
(0.53251920) | |
Observations | 136 |
R2 | 0.84168520 |
Adjusted R2 | 0.83559620 |
Residual Std. Error | 0.11241170 (df = 130) |
F Statistic | 138.22980000*** (df = 5; 130) |
Note: | p<0.1; p<0.05; p<0.01 |
library(normtest)
jb.norm.test(modelo_salary$residuals)
##
## Jarque-Bera test for normality
##
## data: modelo_salary$residuals
## JB = 0.36511, p-value = 0.8335
Aun nivel de significancia de 0.05 los resultados obtenidos son los siguientes:
0.36511<5.991(JB<VC) por lo tanto no se rechaza la Ho, es decir los residuos tienen una distribucion normal.
0.818>0.05(P>alfa) por lo tanto no se rechaza la Ho, es decir los residuos tienen una distribucion normal.
library(nortest)
lillie.test((modelo_salary$residuals))
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: (modelo_salary$residuals)
## D = 0.054571, p-value = 0.4123
Aun nivel de significancia de 0.05 los resultados obtenidos son los siguientes:
0.054571<0.0701(KS<VC) por lo tanto no se rechaza la Ho, es decir los residuos tienen una distribucion normal.
0.4123>0.05(P>alfa) por lo tanto no se rechaza la Ho, es decir los residuos tienen una distribucion normal.
shapiro.test(modelo_salary$residuals)
##
## Shapiro-Wilk normality test
##
## data: modelo_salary$residuals
## W = 0.99282, p-value = 0.7235
W<-0.99282
mew<-0.0038915*I(log(156))^3-0.083751*I(log(156))^2-0.31082*I(log(156))-1.5861
des<-exp(0.0030302*I(log(156))^2-0.083751*(log(156))-0.4803)
Wn<-(log(1-W)-mew)/des
print(Wn)
## [1] -0.3338294
Aun nivel de significancia de 0.05 los resultados obtenidos son los siguientes:
-0.3338294<1.664(Wn<VC) por lo tanto no se rechaza la Ho, es decir los residuos tienen una distribucion normal.
0.7235>0.05(P>alfa) por lo tanto no se rechaza la Ho, es decir los residuos tienen una distribucion normal.
# matriz Xmat
Xmat<-model.matrix(modelo_salary)
#sólo muestro una parte de la matriz, para no saturar la página
Xmat[1:6,1:6]
## (Intercept) LSAT GPA llibvol lcost rank
## 1 1 155 3.15 5.375278 9.028818 128
## 2 1 160 3.50 5.545177 8.850804 104
## 3 1 155 3.25 6.049734 9.703206 34
## 4 1 157 3.20 5.796058 9.773721 49
## 5 1 162 3.38 5.805135 9.030017 95
## 6 1 161 3.40 5.739793 9.030017 98
# matriz XXmat
XXmat<-t(Xmat)%*%Xmat
print(XXmat)
## (Intercept) LSAT GPA llibvol lcost rank
## (Intercept) 136.0000 21557.00 450.110 783.3715 1277.008 10847.00
## LSAT 21557.0000 3419799.00 71440.370 124336.7471 202521.842 1697437.00
## GPA 450.1100 71440.37 1494.950 2599.2641 4228.169 34980.46
## llibvol 783.3715 124336.75 2599.264 4536.4063 7362.770 60522.09
## lcost 1277.0080 202521.84 4228.169 7362.7705 12010.096 100735.74
## rank 10847.0000 1697437.00 34980.460 60522.0934 100735.740 1190245.00
## sn calculo de la matriz de normalizacion
sn<-diag(1/sqrt(diag(XXmat)))
print(sn)
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 0.08574929 0.000000000 0.00000000 0.00000000 0.000000000 0.0000000000
## [2,] 0.00000000 0.000540754 0.00000000 0.00000000 0.000000000 0.0000000000
## [3,] 0.00000000 0.000000000 0.02586346 0.00000000 0.000000000 0.0000000000
## [4,] 0.00000000 0.000000000 0.00000000 0.01484718 0.000000000 0.0000000000
## [5,] 0.00000000 0.000000000 0.00000000 0.00000000 0.009124872 0.0000000000
## [6,] 0.00000000 0.000000000 0.00000000 0.00000000 0.000000000 0.0009166041
## XXmat Normalizada
XX_norm<-(sn%*%XXmat)%*%sn
print(XX_norm)
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 1.0000000 0.9995823 0.9982420 0.9973380 0.9991966 0.8525542
## [2,] 0.9995823 1.0000000 0.9991485 0.9982590 0.9993057 0.8413471
## [3,] 0.9982420 0.9991485 1.0000000 0.9981161 0.9978511 0.8292662
## [4,] 0.9973380 0.9982590 0.9981161 1.0000000 0.9974980 0.8236445
## [5,] 0.9991966 0.9993057 0.9978511 0.9974980 1.0000000 0.8425432
## [6,] 0.8525542 0.8413471 0.8292662 0.8236445 0.8425432 1.0000000
## autovalores
library(stargazer)
#autovalores
lambdas<-eigen(XX_norm,symmetric = TRUE)$values
print(lambdas)
## [1] 5.7351306262 0.2604004371 0.0020823558 0.0018442636 0.0003778106
## [6] 0.0001645068
# Indice de condicion
K<-sqrt(max(lambdas)/min(lambdas))
print(K)
## [1] 186.7153
En el caso de que κ≥30 la multicolinealidad es severa, y dado que el valor obtenido en en la prueba es de 186.7153, da evidencia de una multicolinealidad severa en los regresores.
library(fastGraph)
m<-ncol(Xmat[,-1]) # cantidad de variables explicativas k-1
n<-nrow(Xmat)
determinante_R<- det(cor(Xmat[,-1])) # determinanre de la matriz de correlacion
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
shadeDist(xshade = chi_FG,ddist = "dchisq",parm1 = gl,lower.tail = FALSE,sub=paste("VC:",VC,"FG:",chi_FG))
391.509>18.3070, Como χ2FG≥V.C. se rechaza H0, por lo tanto hay evidencia de colinealidad en los regresores.
library(car)
VIFs_car<-vif(modelo_salary)
print(VIFs_car)
## LSAT GPA llibvol lcost rank
## 3.635214 3.369004 2.110802 1.573583 3.124106
library(mctest)
mc.plot(modelo_salary,vif = 2,)
Estableciendo un umbral de 2, existe una alta colinealidad entre las variables GPA, LSAT y ran , por lo tanto, están inflando la varianza del parámetro de la variable que están representando.
options(scipen = 9999)
library(stargazer)
load("C:/Users/manue/Desktop/wage2.rdata")
regresion_lineal<-lm(formula = educ~sibs+meduc+feduc,data = wage2)
stargazer(regresion_lineal, title = "Modelo Escolaridad", type = "html",digits = 8)
Dependent variable: | |
educ | |
sibs | -0.09363593*** |
(0.03447125) | |
meduc | 0.13078720*** |
(0.03268897) | |
feduc | 0.21000410*** |
(0.02747482) | |
Constant | 10.36426000*** |
(0.35850010) | |
Observations | 722 |
R2 | 0.21409360 |
Adjusted R2 | 0.21080980 |
Residual Std. Error | 1.98705200 (df = 718) |
F Statistic | 65.19825000*** (df = 3; 718) |
Note: | p<0.1; p<0.05; p<0.01 |
library(normtest)
jb.norm.test(regresion_lineal$residuals)
##
## Jarque-Bera test for normality
##
## data: regresion_lineal$residuals
## JB = 35.655, p-value < 0.00000000000000022
Aun nivel de significancia de 0.05 los resultados de la prueba JB son los siguientes:
35.655>5.991(JB>VC) por lo tanto se rechaza la Ho, es decir los residuos no tienen una distribucion normal.
0.00000000000000022<0.05(P<alfa) por lo tanto se rechaza la Ho, es decir los residuos no tienen una distribucion normal.
library(nortest)
lillie.test((regresion_lineal$residuals))
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: (regresion_lineal$residuals)
## D = 0.089992, p-value = 0.000000000000003394
0.089992>0.02864(KS>VC) por lo tanto se rechaza la Ho, es decir los residuos no tienen una distribucion normal.
0.000000000000003394<0.05(P<alfa) por lo tanto se rechaza la Ho, es decir los residuos no tienen una distribucion normal.
shapiro.test(regresion_lineal$residuals)
##
## Shapiro-Wilk normality test
##
## data: regresion_lineal$residuals
## W = 0.96692, p-value = 0.00000000001058
W<-0.96692
mew<-0.0038915*I(log(935))^3-0.083751*I(log(935))^2-0.31082*I(log(935))-1.5861
des<-exp(0.0030302*I(log(935))^2-0.083751*(log(935))-0.4803)
Wn<-(log(1-W)-mew)/des
print(Wn)
## [1] 7.405738
Aun nivel de significancia de 0.05 los resultados obtenidos de la prueba de SW
7.405738>1.664(Wn>VC) por lo tanto se rechaza la Ho, es decir los residuos no tienen una distribucion normal.
0.00000000001058<0.05(P<alfa)por lo tanto se rechaza la Ho, es decir los residuos no tienen una distribucion normal.
# matriz Xmat
Xmat<-model.matrix(regresion_lineal)
#sólo muestro una parte de la matriz, para no saturar la página
Xmat[1:4,1:4]
## (Intercept) sibs meduc feduc
## 1 1 1 8 8
## 2 1 1 14 14
## 3 1 1 14 14
## 4 1 4 12 12
# matriz XXmat
XXmat<-t(Xmat)%*%Xmat
print(XXmat)
## (Intercept) sibs meduc feduc
## (Intercept) 722 2064 7802 7404
## sibs 2064 9552 20967 19949
## meduc 7802 20967 90078 83895
## feduc 7404 19949 83895 83806
## sn calculo de la matriz de normalizacion
sn<-diag(1/sqrt(diag(XXmat)))
print(sn)
## [,1] [,2] [,3] [,4]
## [1,] 0.03721615 0.00000000 0.00000000 0.000000000
## [2,] 0.00000000 0.01023182 0.00000000 0.000000000
## [3,] 0.00000000 0.00000000 0.00333189 0.000000000
## [4,] 0.00000000 0.00000000 0.00000000 0.003454319
## XXmat Normalizada
XX_norm<-(sn%*%XXmat)%*%sn
print(XX_norm)
## [,1] [,2] [,3] [,4]
## [1,] 1.0000000 0.7859482 0.9674488 0.9518319
## [2,] 0.7859482 1.0000000 0.7147921 0.7050768
## [3,] 0.9674488 0.7147921 1.0000000 0.9655820
## [4,] 0.9518319 0.7050768 0.9655820 1.0000000
## autovalores
library(stargazer)
#autovalores
lambdas<-eigen(XX_norm,symmetric = TRUE)$values
print(lambdas)
## [1] 3.55762739 0.37556335 0.04172605 0.02508320
# Indice de condicion
K<-sqrt(max(lambdas)/min(lambdas))
print(K)
## [1] 11.90937
Sí κ es inferior a 20, la multicolinealidad es leve, no se considera un problema. Y dado que el valor obtenido en la prueba del indice de condicion es de 11.90937,da evidencia de que en los regresores la multicolinealidad del modelo es tolerable.
library(fastGraph)
m<-ncol(Xmat[,-1]) # cantidad de variables explicativas k-1
n<-nrow(Xmat)
determinante_R<- det(cor(Xmat[,-1])) # determinanre de la matriz de correlacion
chi_FG<--(n-1-(2*m+5)/6)*log(determinante_R)
print(chi_FG)
## [1] 358.3897
## Valor Critico
gl<-m*(m-1)/2
VC<-qchisq(0.05,gl,lower.tail = FALSE)
print(VC)
## [1] 7.814728
shadeDist(xshade = chi_FG,ddist = "dchisq",parm1 = gl,lower.tail = FALSE,sub=paste("VC:",VC,"FG:",chi_FG))
358.3897>7.814728 Como χ2FG≥V.C. se rechaza H0, por lo tanto hay evidencia de colinealidad en los regresores
library(car)
VIFs_car<-vif(regresion_lineal)
print(VIFs_car)
## sibs meduc feduc
## 1.098950 1.561254 1.506359
library(mctest)
mc.plot(regresion_lineal,vif = 2,)
A un umbral de 2, no existe colinealidad entre los regresores, por lo que no hay presencia de factores inflacionarios en las variancias en las variables que estan representando.