Você está na página 1de 3

6/9/2019 RStudio Cloud

library(readr)
datos<- read_csv("analisisd.csv")
datos<-datos[,-1]
View(datos)
str(datos)

pairs(datos[,c("Precio","Kilometraje","Cilindraje","Ano")])
cormat<-with(datos,cor(cbind(Precio,Kilometraje,Cilindraje,Ano)))
cormat

par(mfrow=c(2,2))
boxplot(Precio~Modelo,data=datos,main="Modelo")
boxplot(Precio~Transmision,data=datos,main="Transmision")
boxplot(Precio~Combustible,data=datos,main="Tipo de combustible")

fit<-lm(Precio~Modelo+Kilometraje+Transmision+Ano+Cilindraje+Combustible,data=datos)
summary(fit)

library(car)

vif(fit)

fit2<-lm(Precio~Modelo+Kilometraje+Transmision+Ano+Combustible,data=datos)
summary(fit2)

vif(fit2)

#ahora analizamos todos los modelos posibles


library(leaps)
todas<-
regsubsets(Precio~Modelo+Kilometraje+Transmision+Ano+Combustible,data=datos,nbest=100,really.big=TRUE)

par(mfrow=c(1,1))
plot(todas,scale="Cp")
plot(todas,scale="bic")

#sacamos toda la información relevante de todas


resultado<-summary(todas)
out<-with(resultado,cbind(which,rsq,rss,adjr2,cp,bic))
out<-data.frame(out)
nrow(out)
out[which.min(out$bic),]#para encontrar el minimo bic de los which
out[which.min(out$cp),]

#modelo con las mejores variables


fitfinal<-lm(Precio~Modelo+Ano+Combustible,data=datos)
summary(fitfinal)

#intervalos
result <- summary(fitfinal)
all<- coefficients(result)
betahat <- all[,1]
Sbeta <- all[,2]
ll <- betahat - 1.96*Sbeta
ul <- betahat + 1.96*Sbeta
View(cbind(ll, betahat, ul))

anova(fitfinal)
r<-rstudent(fitfinal)
t.test(r, mu=0)
r2<-rstandard(fitfinal)
t.test(r2, mu=0)

#Supuesto de normalidad
shapiro.test(fitfinal$residuals)
https://rstudio.cloud/project/479261 1/3
6/9/2019 RStudio Cloud
durbinWatsonTest(fitfinal) #independencia
ncvTest(fitfinal) #varianza constante

#grafico de residuales vs variable y qqplot


par(mfrow = c(2,3), mai = c(0.65, 0.65, .65,.65))
qqnorm(r, las = 1, main = "")
mtext("Q-Q plot", side = 3, line = .2)
qqline(r, lty = 2, col = 2)
legend('topleft', paste0("p=", round(shapiro.test(r)$p.value, 3)),bty = 'n')

plot(datos$Ano, r, las = 1, ylab = "", xlab = 'Ano')


mtext("r", side = 2, line = 2.5, las = 1)
abline(h = 0, lty = 2, col = 2)
mtext("r vs. Ano", side = 3, line = .2)

plot(fitted(fitfinal), r, las = 1, xlab = expression(hat(y)), ylab = '')


mtext("r", side = 2, line = 2.5, las = 1)
abline(h = 0, lty = 2, col = 2)
mtext(expression("r vs. "*hat(y)), side = 3, line = .2)

boxplot(r~Modelo,data=datos,main="Modelo")
boxplot(r~Combustible,data=datos,main="Combustible")

par(mfrow = c(1, 1))


acf(r, las = 1, lag.max = 15, main = "")
mtext("ACF", side = 3, line = .2) #acf independencia

#Valores influyentes
plot(fitfinal, which = 4, las = 1)#distancia de cook
summary(influence.measures(fitfinal))
influencePlot(fitfinal)#grafica de influencia

#Transformacion
datos$lPrecio<-log(datos$Precio)
datos$lAno<-log(datos$Ano)
fitprueba<-lm(lPrecio~Modelo+lAno+Combustible,data=datos)
summary(fitprueba)
vif(fitprueba)

anova(fitprueba)
shapiro.test(fitprueba$residuals) #normalidad
durbinWatsonTest(fitprueba) #independencia
ncvTest(fitprueba) #varianza constante

R2
#queremos verificar que tan bueno es el modelo con nuevos datos, la prediccion es y gorro
library(readr)
testcarros <- read_csv("Test de compra de carros - Hoja 1 (1).csv")
View(testcarros)
summary(testcarros)
predictTest<-predict(fitfinal,newdata=testcarros)
predictTest
#reemplazo en la formula
SSE<-sum((testcarros$Precio-predictTest)^2)
SSE
SST<-sum((testcarros$Precio-mean(datos$Precio))^2)
SST
1-SSE/SST

#prediccion
#Andres
newd<-data.frame(Ano=2018, Combustible= "Gasolina", Modelo= "Chevrolet Sail")
predict(fitfinal,newdata=newd, interval = "confidence")
predict(fitfinal, newdata = newd, interval = "prediction")

https://rstudio.cloud/project/479261 2/3
6/9/2019 RStudio Cloud

#Silvia
newd<-data.frame(Ano=2016, Combustible= "Gasolina", Modelo= "Mazda 2")
predict(fitfinal,newdata=newd, interval = "confidence")
predict(fitfinal, newdata = newd, interval = "prediction")

#Valentina
newd<-data.frame(Ano=2020, Combustible= "Diesel", Modelo= "BMW X3")
predict(fitfinal,newdata=newd, interval = "confidence")
predict(fitfinal, newdata = newd, interval = "prediction")

https://rstudio.cloud/project/479261 3/3

Você também pode gostar