Importar la base de Datos y revisar

#file.choose()
HousePriceData <- read.csv("C:\\Users\\usuario1\\Downloads\\HousePriceData.csv")

head(HousePriceData)
##   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
str(HousePriceData)
## '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 ...
summary(HousePriceData)
##   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  
## 

Matriz de Correlacion

library(corrplot)
## corrplot 0.95 loaded
df <- HousePriceData
correlacion <- cor(df[, c("Dist_Taxi", "Dist_Market", "Dist_Hospital", "Carpet", "Builtup", "Rainfall", "House_Price")], use = "complete.obs")

corrplot(correlacion)

Generar el Modelo

regresion <- lm(House_Price ~ . - Observation, data = df)
summary(regresion)
## 
## Call:
## lm(formula = House_Price ~ . - Observation, data = df)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -3586934  -837542   -65314   784513  4577689 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          5.568e+06  3.688e+05  15.097  < 2e-16 ***
## Dist_Taxi            2.834e+01  2.694e+01   1.052   0.2931    
## Dist_Market          1.237e+01  2.089e+01   0.592   0.5538    
## Dist_Hospital        5.071e+01  3.021e+01   1.679   0.0936 .  
## Carpet               9.907e+03  1.428e+02  69.398  < 2e-16 ***
## Builtup             -7.575e+03  2.412e+02 -31.403  < 2e-16 ***
## ParkingNo Parking   -6.170e+05  1.393e+05  -4.429 1.06e-05 ***
## ParkingNot Provided -5.077e+05  1.239e+05  -4.096 4.58e-05 ***
## ParkingOpen         -2.597e+05  1.131e+05  -2.297   0.0218 *  
## City_CategoryCAT B  -1.883e+06  9.641e+04 -19.529  < 2e-16 ***
## City_CategoryCAT C  -2.902e+06  1.062e+05 -27.321  < 2e-16 ***
## Rainfall            -9.984e+01  1.548e+02  -0.645   0.5191    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1228000 on 886 degrees of freedom
##   (7 observations deleted due to missingness)
## Multiple R-squared:  0.9429, Adjusted R-squared:  0.9422 
## F-statistic:  1329 on 11 and 886 DF,  p-value: < 2.2e-16

Ajustar el Modelo

regresion2 <- lm(House_Price ~ Dist_Hospital + Carpet + Builtup + Parking + City_Category, data = df)

summary(regresion2)
## 
## Call:
## lm(formula = House_Price ~ Dist_Hospital + Carpet + Builtup + 
##     Parking + City_Category, data = df)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -3566589  -844695   -72113   783277  4506106 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          5.472e+06  3.367e+05  16.252  < 2e-16 ***
## Dist_Hospital        7.987e+01  1.613e+01   4.953 8.73e-07 ***
## Carpet               9.917e+03  1.418e+02  69.937  < 2e-16 ***
## Builtup             -7.582e+03  2.403e+02 -31.556  < 2e-16 ***
## ParkingNo Parking   -6.117e+05  1.390e+05  -4.402 1.20e-05 ***
## ParkingNot Provided -5.008e+05  1.237e+05  -4.048 5.62e-05 ***
## ParkingOpen         -2.587e+05  1.130e+05  -2.290   0.0222 *  
## City_CategoryCAT B  -1.883e+06  9.602e+04 -19.612  < 2e-16 ***
## City_CategoryCAT C  -2.898e+06  1.060e+05 -27.343  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1227000 on 889 degrees of freedom
##   (7 observations deleted due to missingness)
## Multiple R-squared:  0.9428, Adjusted R-squared:  0.9422 
## F-statistic:  1830 on 8 and 889 DF,  p-value: < 2.2e-16

Generar predicciones

Datos_nuevos <- data.frame( Dist_Hospital = 11000, Carpet = 1500, Builtup = 1800, Parking = "Covered", City_Category = "CAT A")

predict(regresion2, Datos_nuevos)
##       1 
## 7577922

Conclusion

El modelo permite estimar el precio de una vivienda segun sus características. Para una casa ubicada a 11,000 unidades de distancia del hospital, con 1,500 de área de alfombra, 1,800 de área construida, estacionamiento cubierto y categoría de ciudad A, se obtiene un precio estimado de aproximadamente $7.58 millones.

LS0tDQp0aXRsZTogIklBc2VzaW9uSG91c2VQcmljZSINCmF1dGhvcjogIkthbWlsIE0iDQpkYXRlOiAiMjAyNi0wOC0yMSINCm91dHB1dDogDQogIGh0bWxfZG9jdW1lbnQ6DQogICAgdG9jOiBUUlVFDQogICAgdG9jX2Zsb2F0OiBUUlVFDQogICAgY29kZV9kb3dubG9hZDogVFJVRQ0KICAgIHRoZW1lOiB5ZXRpDQotLS0NCiFbXShodHRwczovLzY0Lm1lZGlhLnR1bWJsci5jb20vNmY2M2I5YjQ2ZjJmZjAyMGE0OTRhNjliY2NlMzA0ODMvZGIyODAyODgwZjYwMzA0NS1kMy9zNTQweDgxMC84MTc4Y2Q1MjdjNjk0OWMwYWQ2OWNjZjA1YjhiODM5NmNmYjJjOGFhLmdpZikNCg0KIyA8c3BhbiBzdHlsZT0iY29sb3I6Ymx1ZSI+SW1wb3J0YXIgbGEgYmFzZSBkZSBEYXRvcyB5IHJldmlzYXI8L3NwYW4+DQoNCmBgYHtyfQ0KI2ZpbGUuY2hvb3NlKCkNCkhvdXNlUHJpY2VEYXRhIDwtIHJlYWQuY3N2KCJDOlxcVXNlcnNcXHVzdWFyaW8xXFxEb3dubG9hZHNcXEhvdXNlUHJpY2VEYXRhLmNzdiIpDQoNCmhlYWQoSG91c2VQcmljZURhdGEpDQoNCnN0cihIb3VzZVByaWNlRGF0YSkNCg0Kc3VtbWFyeShIb3VzZVByaWNlRGF0YSkNCmBgYA0KDQojIDxzcGFuIHN0eWxlPSJjb2xvcjpibHVlIj5NYXRyaXogZGUgQ29ycmVsYWNpb248L3NwYW4+DQoNCmBgYHtyfQ0KbGlicmFyeShjb3JycGxvdCkNCmRmIDwtIEhvdXNlUHJpY2VEYXRhDQpjb3JyZWxhY2lvbiA8LSBjb3IoZGZbLCBjKCJEaXN0X1RheGkiLCAiRGlzdF9NYXJrZXQiLCAiRGlzdF9Ib3NwaXRhbCIsICJDYXJwZXQiLCAiQnVpbHR1cCIsICJSYWluZmFsbCIsICJIb3VzZV9QcmljZSIpXSwgdXNlID0gImNvbXBsZXRlLm9icyIpDQoNCmNvcnJwbG90KGNvcnJlbGFjaW9uKQ0KYGBgDQoNCiMgPFNwYW4gc3R5bGU9ImNvbG9yOmJsdWUiPkdlbmVyYXIgZWwgTW9kZWxvPC9zcGFuPg0KYGBge3J9DQpyZWdyZXNpb24gPC0gbG0oSG91c2VfUHJpY2UgfiAuIC0gT2JzZXJ2YXRpb24sIGRhdGEgPSBkZikNCnN1bW1hcnkocmVncmVzaW9uKQ0KYGBgDQojIDxTcGFuIHN0eWxlPSJjb2xvcjpibHVlIj5BanVzdGFyIGVsIE1vZGVsbzwvc3Bhbj4NCg0KYGBge3J9DQpyZWdyZXNpb24yIDwtIGxtKEhvdXNlX1ByaWNlIH4gRGlzdF9Ib3NwaXRhbCArIENhcnBldCArIEJ1aWx0dXAgKyBQYXJraW5nICsgQ2l0eV9DYXRlZ29yeSwgZGF0YSA9IGRmKQ0KDQpzdW1tYXJ5KHJlZ3Jlc2lvbjIpDQpgYGANCg0KDQojIDxTcGFuIHN0eWxlPSJjb2xvcjpibHVlIj5HZW5lcmFyIHByZWRpY2Npb25lczwvc3Bhbj4NCmBgYHtyfQ0KRGF0b3NfbnVldm9zIDwtIGRhdGEuZnJhbWUoIERpc3RfSG9zcGl0YWwgPSAxMTAwMCwgQ2FycGV0ID0gMTUwMCwgQnVpbHR1cCA9IDE4MDAsIFBhcmtpbmcgPSAiQ292ZXJlZCIsIENpdHlfQ2F0ZWdvcnkgPSAiQ0FUIEEiKQ0KDQpwcmVkaWN0KHJlZ3Jlc2lvbjIsIERhdG9zX251ZXZvcykNCg0KYGBgDQojIDxTcGFuIHN0eWxlPSJjb2xvcjpibHVlIj5Db25jbHVzaW9uPC9zcGFuPg0KRWwgbW9kZWxvIHBlcm1pdGUgZXN0aW1hciBlbCBwcmVjaW8gZGUgdW5hIHZpdmllbmRhIHNlZ3VuIHN1cyBjYXJhY3RlcsOtc3RpY2FzLiBQYXJhIHVuYSBjYXNhIHViaWNhZGEgYSAxMSwwMDAgdW5pZGFkZXMgZGUgZGlzdGFuY2lhIGRlbCBob3NwaXRhbCwgY29uIDEsNTAwIGRlIMOhcmVhIGRlIGFsZm9tYnJhLCAxLDgwMCBkZSDDoXJlYSBjb25zdHJ1aWRhLCBlc3RhY2lvbmFtaWVudG8gY3ViaWVydG8geSBjYXRlZ29yw61hIGRlIGNpdWRhZCBBLCBzZSBvYnRpZW5lIHVuIHByZWNpbyBlc3RpbWFkbyBkZSBhcHJveGltYWRhbWVudGUgJDcuNTggbWlsbG9uZXMuDQoNCg==