Se utilizará la base del dataframe “hprice1”, disponible en el paquete wooldridge:
## price assess bdrms lotsize sqrft colonial lprice lassess llotsize lsqrft
## 1 300 349.1 4 6126 2438 1 5.703783 5.855359 8.720297 7.798934
## 2 370 351.5 3 9903 2076 1 5.913503 5.862210 9.200593 7.638198
## 3 191 217.7 3 5200 1374 0 5.252274 5.383118 8.556414 7.225482
## 4 195 231.8 3 4600 1448 1 5.273000 5.445875 8.433811 7.277938
## 5 373 319.1 4 6095 2514 1 5.921578 5.765504 8.715224 7.829630
##Problemas a resolver
##
## Modelo estimado
## ===============================================
## Dependent variable:
## ---------------------------
## NA
## -----------------------------------------------
## assess 1.233***
## (0.097)
##
## bdrms 2.652
## (2.118)
##
## lotsize 0.00003
## (0.0003)
##
## sqrft 0.008
## (0.019)
##
## colonial -0.410
## (3.390)
##
## lprice 276.094***
## (10.186)
##
## lassess -396.819***
## (38.182)
##
## llotsize 1.755
## (5.791)
##
## lsqrft -3.954
## (41.502)
##
## Constant 606.372**
## (246.442)
##
## -----------------------------------------------
## Observations 88
## R2 0.986
## Adjusted R2 0.984
## Residual Std. Error 12.921 (df = 78)
## F Statistic 602.196*** (df = 9; 78)
## ===============================================
## Note: *p<0.1; **p<0.05; ***p<0.01
summary(fit_normal) ##se pueden visualizar los datos de otra forma
## Fitting of the distribution ' norm ' by maximum likelihood
## Parameters :
## estimate Std. Error
## mean 1.627880e-16 1.2967563
## sd 1.216465e+01 0.9169452
## Loglikelihood: -344.7376 AIC: 693.4752 BIC: 698.4299
## Correlation matrix:
## mean sd
## mean 1 0
## sd 0 1
-Prueba de Jaque-Bera (JB) Se han utilizado diversas librerías, se presenta la librería tseries:
library(tseries) ##se utiliza para estimar la prueba Jarque Bera
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
salida_JB<-jarque.bera.test(modelo_estimado$residuals)##se establece el vector de residuo que se desea trabajar
print(salida_JB) ##Se muestran los resultados
##
## Jarque Bera Test
##
## data: modelo_estimado$residuals
## X-squared = 86.125, df = 2, p-value < 2.2e-16
Utilizando la librería fastgraph:
library(fastGraph) ##Librería se utiliza para poder mostrar graficamente el modelo,
alpha_sig<-0.05 ##se establece el valor de alfa o nivel de significancia
JB<-salida_JB$statistic ##Se establece el valor de la estadística del valor JB
gl<-salida_JB$parameter## se establecen los grados de libertad como parámetro
VC<-qchisq(1-alpha_sig, gl, lower.tail = TRUE)
shadeDist(JB, ddist = "dchisq",
parm1 = gl,
lower.tail = FALSE, xmin = 0,
sub=paste("VC:", round(VC,2), "-", "JB:", round(JB,2))) ##Se establece el valor crítico, nombre de las variables.
-Prueba de Kolmogorov-Smirnov - lilliefors a continuación se muestra el cálculo manual:
library(dplyr) #esta librería nos permite manipular los datos con diferentes fomatos
##
## Attaching package: 'dplyr'
## The following object is masked from 'package:MASS':
##
## select
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(gt)#permite crear tablas
library(gtExtras) #permite agregar funcionalidades a las tablas de la librería gt.
##
## Attaching package: 'gtExtras'
## The following object is masked from 'package:MASS':
##
## select
residuos<-modelo_estimado$residuals #se establece el vector de residuos
residuos%>% #se encadenan los siguientes códigos al vector de residuos
as_tibble() %>% #el vector residuos se convierte en una tabla con una columna
mutate(posicion=row_number()) %>% #se coloca una columna llamada "posición"
arrange(value) %>% #se ordenan los datos de forma creciente
mutate(dist1=row_number()/n()) %>%#se agrega una columna llamada "dist1"
mutate(dist2=row_number()-1/n()) %>%#igual que la anterior, pero con el nombre de "dist2"
mutate(zi=as.vector(scale(value,center=TRUE))) %>%#se crea una columna "zi" con los valores de residuos escalados para tener media cero y varianza uno
mutate(pi=pnorm(zi,lower.tail = TRUE)) %>% #Agrega una columna "pi" con los valores de la función de distribución acumulada, tomando en cuenta los valores de zi
mutate(dif1=abs(dist1-pi)) %>% #Agrega una columna "dif1" calcula las diferencias absolutas entre los percentiles según la posición y los valores de pi
mutate(dif2=abs(dist2-pi)) %>% #se agrega una columna llamada "dif2" con las diferencias absolutas entre los percentiles ajustados según la posición y los valores de pi
rename(residuales=value)-> Tabla_KS# Se cambia el nombre de "residuales" por "valor" y el nombre de la tabla
head(Tabla_KS, n=5)
## # A tibble: 5 × 8
## residuales posicion dist1 dist2 zi pi dif1 dif2
## <dbl> <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 -41.3 68 0.0114 0.989 -3.38 0.000368 0.0110 0.988
## 2 -23.3 53 0.0227 1.99 -1.91 0.0283 0.00559 1.96
## 3 -22.6 69 0.0341 2.99 -1.84 0.0326 0.00152 2.96
## 4 -20.9 37 0.0455 3.99 -1.71 0.0437 0.00180 3.94
## 5 -20.1 12 0.0568 4.99 -1.64 0.0502 0.00665 4.94
calculo del estadístico D:
D<-max(max(Tabla_KS$dif1), max(Tabla_KS$dif2))
print(D)
## [1] 86.98864
Utilizando nortest:
library(nortest)
prueba_KS<-lillie.test(modelo_estimado$residuals)
prueba_KS
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: modelo_estimado$residuals
## D = 0.13815, p-value = 0.0002732
p.value<-prueba_KS$p.value
print(p.value)
## [1] 0.0002731941
p es menor que el valor alfa 0.05, por lo cual se rechaza la hipótesis nula, no hay una distribución normal.
usando librería stats:
salida_SW<-shapiro.test(modelo_estimado$residuals)
print(salida_SW)
##
## Shapiro-Wilk normality test
##
## data: modelo_estimado$residuals
## W = 0.89732, p-value = 3.831e-06