df <- read.csv("datos12.csv")
str(df)
'data.frame': 26 obs. of 5 variables:
$ tejados : num 79.3 200.1 163.2 200.1 146 ...
$ gastos : num 5.5 2.5 8 3 3 2.9 8 9 4 6.5 ...
$ clientes : int 31 55 67 50 38 71 30 56 42 73 ...
$ marcas : int 10 8 12 7 8 12 12 5 8 5 ...
$ potencial: int 8 6 9 16 15 17 8 10 4 16 ...
summary(df)
install.packages("ggplot2")
#install.packages("ellipsis")
Installing package into ‘/work/.R/library’
(as ‘lib’ is unspecified)
par(mfrow = c(2,1))
hist(df$tejados, probability = TRUE, main = "Histograma de tejados")
lines(density(df$tejados), col=2, lwd=2)
par(mfrow = c(3,3))
plot(df$gastos,df$tejados,ylab="Tejados vendidos (en miles de m2)",
xlab="Gastos",
main="Tejados vendidos vs Gastos")
plot(df$clientes,df$tejados,ylab="Tejados vendidos (en miles de m2)",
xlab="Clientes registrados en la filial (en miles)",
main="Tejados vendidos vs Nro. de clientes (en miles)")
plot(df$marcas,df$tejados,ylab="Tejados vendidos (en miles de m2)",
xlab="Nro Marcas competidoras",
main="Tejados vendidos vs Nro. Marcas")
plot(df$potencial,df$tejados,ylab="Tejados vendidos (en miles de m2)",
xlab="Potencial de la empresa",
main="Tejados vendidos vs Potencial")
form <- tejados ~ gastos + clientes + marcas + potencial
modelo <- lm(formula = form, data = df)
coef(modelo)
summary(modelo)
library(bestglm)
Loading required package: leaps
mselec <- bestglm(Xy = df[,c(2:4, 1)], IC="AIC", family = gaussian)
modelo2 <- mselec$BestModel
summary(modelo2)
library(MASS)
form1 = tejados ~ gastos + clientes + marcas + potencial
modelofull = lm(formula = form, data = df)
mselec1 = stepAIC(modelofull, trace = TRUE)
Start: AIC=122.08
tejados ~ gastos + clientes + marcas + potencial
Df Sum of Sq RSS AIC
- potencial 1 44 1982 120.67
<none> 1937 122.08
- gastos 1 258 2195 123.33
- clientes 1 38269 40207 198.94
- marcas 1 66683 68620 212.83
Step: AIC=120.67
tejados ~ gastos + clientes + marcas
Df Sum of Sq RSS AIC
<none> 1982 120.67
- gastos 1 229 2210 121.51
- clientes 1 49844 51825 203.54
- marcas 1 67104 69086 211.01
form1 = tejados ~ gastos + clientes + marcas
modelo1 = lm(formula = form1, data = df)
summary(modelo1)
form2 = tejados ~ clientes + marcas
modelo3 = lm(formula = form2, data = df)
summary(modelo3)
# Normalidad
par(mfrow =c(2,3))
qqnorm(rstudent(modelo),
ylab="Cuantiles de los Residuos Estudentizados",
xlab="Cuantiles teóricos",
main = "Normal Q-Q Plot Modelo")
qqline(rstudent(modelo))
qqnorm(rstudent(modelo1),
ylab="Cuantiles de los Residuos Estudentizados",
xlab="Cuantiles teóricos",
main = "Normal Q-Q Plot Modelo1")
qqline(rstudent(modelo1))
qqnorm(rstudent(modelo3),
ylab="Cuantiles de los Residuos Estudentizados",
xlab="Cuantiles teóricos",
main = "Normal Q-Q Plot Modelo3")
qqline(rstudent(modelo3))
shapiro.test(rstudent(modelo))
shapiro.test(rstudent(modelo1))
shapiro.test(rstudent(modelo3))
# Homocedasticidad
par(mfrow = c(1,1))
rs <- rstudent(modelo1) # Residuos studentizados
ypred <- predict(modelo1)
n <- dim(df)[1]
p <- length(modelo1$coefficients)
alfa <- 0.01
t <- qt(alfa/(n*2), df=n-p-1) # distribuci?n t
par(mfrow=c(2,4))
plot(ypred, rs, ylab="Residuos Studentizados", xlab="precio de venta estimado",
main="residuos Studentizados vs precio de venta estimado",ylim=c(-5,5))
abline(-t, 0)
abline( t, 0)
abline( 0, 0)
plot(df$gastos, rs, ylab="Residuos Studentizados",
xlab="Gastos",
main="Residuos Studentizados vs Gastos", ylim=c(-5,5))
abline(-t, 0)
abline( t, 0)
abline( 0, 0)
plot(df$clientes, rs, ylab="Residuos Studentizados", xlab="Clientes",
main="Residuos Studentizados vs Clientes", ylim=c(-5,5))
abline(-t, 0)
abline( t, 0)
abline( 0, 0)
plot(df$marcas,rs, ylab="Residuos Studentizados",
xlab="Marcas en el mercado",
main="Residuos Studentizados vs Marcas en el mercado", ylim=c(-5,5))
abline(-t, 0)
abline( t, 0)
abline( 0, 0)
par(mfrow=c(1,1))
library(lmtest)
bptest(modelo1, varformula = ~fitted.values(modelo), studentize=FALSE)
Según la prueba de hipótesis los residuos son homocedasticos.
# No Multicolinealidad
library(regclass)
VIF(modelo)
#Autocorrelación
par(mfrow = c(2,1))
plot(residuals(modelo), ylab="Residuos")
abline(h=0)
library(lmtest)
dwtest(modelo)
#Predicción del conjunto de entrenamiento
predict(modelo1, newdata = df, type = "response")
#Métricas
df$predictions <- predict(modelo)
df$predictions1 <- predict(modelo1)
df$predictions3 <- predict(modelo3)
residual <- df$tejados - df$predictions
residual1 <- df$tejados - df$predictions1
residual3 <- df$tejados - df$predictions3
#Estimaci?n de la Ra?z del Error Cuadr?tico Medio (RMSE)
RMSE <- sqrt(mean(residual^2))
RMSE
RMSE1 <- sqrt(mean(residual1^2))
RMSE1
RMSE3 <- sqrt(mean(residual3^2))
RMSE3
library(Metrics)
Metrics::rmse(df$tejados, df$predictions)
sd(df$tejados)