library(readxl)
library(nortest)
library(tseries)
## Warning: package 'tseries' was built under R version 4.5.3
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(car)
## Cargando paquete requerido: carData
library(lmtest)
## Cargando paquete requerido: zoo
##
## Adjuntando el paquete: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(mctest)
library(ggplot2)
#Carga de datos
datos <- read_excel("ventas_empresa.xlsx")
# Estimación del modelo
modelo_estimado<- lm(V ~ C + P + M, data = datos)
summary(modelo_estimado)
##
## Call:
## lm(formula = V ~ C + P + M, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -17.279 -6.966 1.555 6.721 14.719
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 107.4435 18.0575 5.950 8.08e-06 ***
## C 0.9226 0.2227 4.142 0.000505 ***
## P 0.9502 0.1558 6.097 5.86e-06 ***
## M 1.2978 0.4307 3.013 0.006872 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 9.506 on 20 degrees of freedom
## Multiple R-squared: 0.9798, Adjusted R-squared: 0.9768
## F-statistic: 323.6 on 3 and 20 DF, p-value: < 2.2e-16
prueba de Jarque-Bera (JB) y Shapiro-Wilk (SW)
# Extracción de residuos
residuos <- residuals(modelo_estimado)
# Pruebas Estadísticas
shapiro.test(residuos)
##
## Shapiro-Wilk normality test
##
## data: residuos
## W = 0.95315, p-value = 0.3166
jarque.bera.test(residuos)
##
## Jarque Bera Test
##
## data: residuos
## X-squared = 1.4004, df = 2, p-value = 0.4965
# Representación Gráfica
par(mfrow=c(1,2))
# Histograma con curva normal
hist(residuos, prob=T, main="Histograma de Residuos", col="lightblue", border="white")
curve(dnorm(x, mean=mean(residuos), sd=sd(residuos)), add=T, col="red", lwd=2)
# Q-Q Plot
qqnorm(residuos, main="Gráfico Q-Q Normal")
qqline(residuos, col="red")
INTERPRETACIÓN: Si el p-valor > 0.05 en ambas pruebas, no se rechaza la hipótesis nula (H0); por lo tanto, los residuos siguen una distribución normal.
library(psych)
## Warning: package 'psych' was built under R version 4.5.3
##
## Adjuntando el paquete: 'psych'
## The following objects are masked from 'package:ggplot2':
##
## %+%, alpha
## The following object is masked from 'package:car':
##
## logit
library(car)
# variables independientes
X <- datos[, c("C", "P", "M")]
# 2. Prueba de Esfericidad de Bartlett (Equivalente a Farrar-Glauber Global)
# Si el p-value es < 0.05, hay colinealidad.
print("--- Prueba de Bartlett (Farrar-Glauber) ---")
## [1] "--- Prueba de Bartlett (Farrar-Glauber) ---"
cortest.bartlett(cor(X), n = nrow(datos))
## $chisq
## [1] 71.20805
##
## $p.value
## [1] 2.352605e-15
##
## $df
## [1] 3
modelo_estimado <- lm(V ~ C + P + M, data = datos)
print("--- Factores de Inflación de la Varianza (VIF) ---")
## [1] "--- Factores de Inflación de la Varianza (VIF) ---"
vif_values <- vif(modelo_estimado)
print(vif_values)
## C P M
## 7.631451 3.838911 9.449210
# 4. Gráfico de diagnóstico
barplot(vif_values,
main = "Diagnóstico de Colinealidad (VIF)",
col = "steelblue",
ylim = c(0, 10))
abline(h = 5, col = "red", lty = 2)
INTERPRETACIÓN: Los resultados de la prueba de Farrar-Glauber muestran
un p-valor significativamente bajo (< 0.05), lo que confirma la
presencia de multicolinealidad en el modelo. Al analizar los Factores de
Inflación de la Varianza (VIF), se observa que las variables M (VIF =
9.45) y C (VIF = 7.63) presentan los mayores niveles de colinealidad,
sugiriendo que existe una redundancia severa de información entre estas
variables independientes.
# Prueba de Breusch-Pagan
bptest(modelo_estimado)
##
## studentized Breusch-Pagan test
##
## data: modelo_estimado
## BP = 0.087869, df = 3, p-value = 0.9933
# Representación Gráfica
plot(modelo_estimado$fitted.values, residuos,
main="Residuos vs Valores Ajustados",
xlab="Valores Predichos", ylab="Residuos",
pch=19, col="darkblue")
abline(h=0, col="red", lwd=2)
INTERPRETACIÓN: El modelo cumple con Homecedasticidad.
# Prueba de Breusch-Godfrey (Orden 1 y 2)
bgtest(modelo_estimado, order = 1)
##
## Breusch-Godfrey test for serial correlation of order up to 1
##
## data: modelo_estimado
## LM test = 2.5963, df = 1, p-value = 0.1071
bgtest(modelo_estimado, order = 2)
##
## Breusch-Godfrey test for serial correlation of order up to 2
##
## data: modelo_estimado
## LM test = 3.8409, df = 2, p-value = 0.1465
# Representación Gráfica (Correlograma ACF)
acf(residuos, main="Gráfico de Autocorrelación (ACF)")
INTERPRETACIÓN: Basado en los resultados de la prueba de Breusch-Godfrey, el modelo de regresión para estimar el nivel de ventas cumple satisfactoriamente con el supuesto de No Autocorrelación. Estadísticamente, los errores en un mes determinado no dependen de los errores de meses anteriores. Esto garantiza que las pruebas de significancia individual y los intervalos de confianza del modelo son válidos, asegurando que los estimadores obtenidos son eficientes.