lm() es la función en R para ajustar los modelos
lineales.
Es el modelo estadĆstico mĆ”s bĆ”sico que existe y mpas fĆ”cil de
intepretar.
Para interpretarlo se usa la medida R-cuadrada, que significa que tan
cerca estÔn los datos de la regresión. Va de 0-1, donde 1 es que el
modelo explica toda la variabilidad.
#install.packages("corrplot")
library(corrplot)
## corrplot 0.95 loaded
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
df <- read.csv("C:\\Users\\natal\\OneDrive\\Carrera\\7moSemestre\\Modulo2\\HousePriceData.csv")
summary(df)
## Observation Dist_Taxi Dist_Market Dist_Hospital
## Min. : 1.0 Min. : 146 Min. : 1666 Min. : 3227
## 1st Qu.:237.0 1st Qu.: 6477 1st Qu.: 9367 1st Qu.:11302
## Median :469.0 Median : 8228 Median :11149 Median :13189
## Mean :468.4 Mean : 8235 Mean :11022 Mean :13091
## 3rd Qu.:700.0 3rd Qu.: 9939 3rd Qu.:12675 3rd Qu.:14855
## Max. :932.0 Max. :20662 Max. :20945 Max. :23294
##
## Carpet Builtup Parking City_Category
## Min. : 775 Min. : 932 Length :905 Length :905
## 1st Qu.: 1317 1st Qu.: 1579 N.unique : 4 N.unique : 3
## Median : 1478 Median : 1774 N.blank : 0 N.blank : 0
## Mean : 1511 Mean : 1794 Min.nchar: 4 Min.nchar: 5
## 3rd Qu.: 1654 3rd Qu.: 1985 Max.nchar: 12 Max.nchar: 5
## Max. :24300 Max. :12730
## NAs :7
## Rainfall House_Price
## Min. :-110.0 Min. : 1492000
## 1st Qu.: 600.0 1st Qu.: 4623000
## Median : 780.0 Median : 5860000
## Mean : 786.9 Mean : 6083992
## 3rd Qu.: 970.0 3rd Qu.: 7200000
## Max. :1560.0 Max. :150000000
##
str(df)
## 'data.frame': 905 obs. of 10 variables:
## $ Observation : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Dist_Taxi : int 9796 8294 11001 8301 10510 6665 13153 5882 7495 8233 ...
## $ Dist_Market : int 5250 8186 14399 11188 12629 5142 11869 9948 11589 7067 ...
## $ Dist_Hospital: int 10703 12694 16991 12289 13921 9972 17811 13315 13370 11400 ...
## $ Carpet : int 1659 1461 1340 1451 1770 1442 1542 1261 1090 1030 ...
## $ Builtup : int 1961 1752 1609 1748 2111 1733 1858 1507 1321 1235 ...
## $ Parking : chr "Open" "Not Provided" "Not Provided" "Covered" ...
## $ City_Category: chr "CAT B" "CAT B" "CAT A" "CAT B" ...
## $ Rainfall : int 530 210 720 620 450 760 1030 1020 680 1130 ...
## $ House_Price : int 6649000 3982000 5401000 5373000 4662000 4526000 7224000 3772000 4631000 4415000 ...
head(df)
## Observation Dist_Taxi Dist_Market Dist_Hospital Carpet Builtup Parking
## 1 1 9796 5250 10703 1659 1961 Open
## 2 2 8294 8186 12694 1461 1752 Not Provided
## 3 3 11001 14399 16991 1340 1609 Not Provided
## 4 4 8301 11188 12289 1451 1748 Covered
## 5 5 10510 12629 13921 1770 2111 Not Provided
## 6 6 6665 5142 9972 1442 1733 Open
## City_Category Rainfall House_Price
## 1 CAT B 530 6649000
## 2 CAT B 210 3982000
## 3 CAT A 720 5401000
## 4 CAT B 620 5373000
## 5 CAT B 450 4662000
## 6 CAT B 760 4526000
df_num <- df %>%
select(-Parking, -City_Category, -Observation)
# Convertir Parking a numƩrico
df_num$Parking_num <- as.numeric(factor(df$Parking))
# Convertir City_Category a numƩrico
df_num$City_Category_num <- as.numeric(factor(df$City_Category))
corr <-cor(df_num)
corrplot(corr)
regresion <- lm(House_Price~., data=df_num)
summary(regresion)
##
## Call:
## lm(formula = House_Price ~ ., data = df_num)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3733118 -854373 -61183 800521 4434134
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 6.713e+06 3.944e+05 17.022 <2e-16 ***
## Dist_Taxi 2.510e+01 2.764e+01 0.908 0.364
## Dist_Market 2.078e+01 2.139e+01 0.972 0.331
## Dist_Hospital 4.454e+01 3.094e+01 1.440 0.150
## Carpet 9.905e+03 1.465e+02 67.623 <2e-16 ***
## Builtup -7.576e+03 2.473e+02 -30.632 <2e-16 ***
## Rainfall -4.080e+01 1.585e+02 -0.257 0.797
## Parking_num -5.791e+04 3.663e+04 -1.581 0.114
## City_Category_num -1.477e+06 5.428e+04 -27.205 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1260000 on 889 degrees of freedom
## (7 observations deleted due to missingness)
## Multiple R-squared: 0.9396, Adjusted R-squared: 0.9391
## F-statistic: 1729 on 8 and 889 DF, p-value: < 2.2e-16
regresion_ajustada <- lm(House_Price~Carpet+Builtup+City_Category_num, data=df_num)
summary(regresion_ajustada)
##
## Call:
## lm(formula = House_Price ~ Carpet + Builtup + City_Category_num,
## data = df_num)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3609156 -844687 -18576 807390 4144180
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 7520775.8 274210.0 27.43 <2e-16 ***
## Carpet 9969.4 146.9 67.88 <2e-16 ***
## Builtup -7612.7 249.1 -30.56 <2e-16 ***
## City_Category_num -1484965.8 54791.2 -27.10 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1275000 on 894 degrees of freedom
## (7 observations deleted due to missingness)
## Multiple R-squared: 0.9378, Adjusted R-squared: 0.9376
## F-statistic: 4496 on 3 and 894 DF, p-value: < 2.2e-16
datos_nuevos <- data.frame(Carpet=1600, Builtup=1900, City_Category_num=2)
predict(regresion_ajustada,datos_nuevos)
## 1
## 6037699