Question 2: Split the dataset randomly into training (80%) and test (20%) sets. (Use your knowledge on generating random numbers to create the splits)

library(dplyr)

Loading in the datasets and editing

library(dplyr)

housing_prices <- read.csv("/Users/ronan/Documents/INFSCI 0310/real-estate-sales.csv")
housing_prices <- housing_prices %>% rename(neighborhood = MUNIDESC)
housing_prices$neighborhood <- trimws(housing_prices$neighborhood)
housing_prices$SALEDATE <- as.Date(housing_prices$SALEDATE, format = "%m-%d-%y")

vaccines <- read.csv("/Users/ronan/Documents/INFSCI 0310/covid-vaccine-data.csv")
vaccines <- vaccines %>% rename(neighborhood = neighborhood_municipality)

covid_cases <- read.csv("/Users/ronan/Documents/INFSCI 0310/covid-case-data.csv")
covid_cases <- covid_cases %>% rename(neighborhood = neighborhood_municipality)

Merging datasets into one set

housing_prices <- housing_prices %>%
  filter(!is.na(PRICE))
housing_prices_summary <- housing_prices %>%
  group_by(neighborhood) %>%
  summarize(mean_housing_price = mean(PRICE), na.rm = TRUE)

vaccines_summary <- vaccines %>%
  group_by(neighborhood) %>%
  summarize(total_vaccinations = bivalent_booster)

covid_cases_summary <- covid_cases %>%
  group_by(neighborhood) %>%
  summarize(total_covid_cases = infections)

merged_data <- merge(housing_prices_summary, covid_cases_summary, by = "neighborhood")
merged_data <- merge(merged_data, vaccines_summary, by = "neighborhood")

Question 3: Fit a multiple linear regression model to the training data, using all the variables in the dataset to predict wine quality

Splitting data into training and test sets

training_set <- merged_data %>% dplyr::sample_frac(0.8)
testing_set <- dplyr::anti_join(merged_data, training_set, by = "neighborhood")

training_mlr <- lm(mean_housing_price ~ total_covid_cases + total_vaccinations, data = training_set)
summary(training_mlr)

Call:
lm(formula = mean_housing_price ~ total_covid_cases + total_vaccinations, 
    data = training_set)

Residuals:
    Min      1Q  Median      3Q     Max 
-162051  -89564  -55667   25356  597788 

Coefficients:
                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)        171134.516  20381.731   8.396 7.71e-13 ***
total_covid_cases      -7.584      4.719  -1.607   0.1116    
total_vaccinations     55.536     32.852   1.690   0.0945 .  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 153400 on 87 degrees of freedom
Multiple R-squared:  0.03182,   Adjusted R-squared:  0.009566 
F-statistic:  1.43 on 2 and 87 DF,  p-value: 0.2449
wine_quality <- read.csv("/Users/ronan/Documents/INFSCI 0310/winequality-red.csv")
wine_training_set <- wine_quality %>% dplyr::sample_frac(0.8)
wine_testing_set <- dplyr::anti_join(wine_quality, wine_training_set, by = "quality")
wine_mlr <- lm(quality ~ fixed.acidity + volatile.acidity + citric.acid + residual.sugar + chlorides + free.sulfur.dioxide + total.sulfur.dioxide + density + pH + sulphates + alcohol, data = wine_training_set)
summary(wine_mlr)

Call:
lm(formula = quality ~ fixed.acidity + volatile.acidity + citric.acid + 
    residual.sugar + chlorides + free.sulfur.dioxide + total.sulfur.dioxide + 
    density + pH + sulphates + alcohol, data = wine_training_set)

Residuals:
    Min      1Q  Median      3Q     Max 
-2.3118 -0.3647 -0.0428  0.4517  1.9373 

Coefficients:
                       Estimate Std. Error t value Pr(>|t|)    
(Intercept)           2.050e+01  2.394e+01   0.857 0.391876    
fixed.acidity         2.555e-02  2.995e-02   0.853 0.393654    
volatile.acidity     -1.041e+00  1.317e-01  -7.904 5.85e-15 ***
citric.acid          -1.363e-01  1.621e-01  -0.841 0.400541    
residual.sugar        1.007e-02  1.761e-02   0.572 0.567421    
chlorides            -2.172e+00  4.624e-01  -4.697 2.93e-06 ***
free.sulfur.dioxide   5.543e-03  2.414e-03   2.296 0.021810 *  
total.sulfur.dioxide -2.955e-03  8.119e-04  -3.639 0.000284 ***
density              -1.663e+01  2.447e+01  -0.680 0.496801    
pH                   -4.099e-01  2.205e-01  -1.859 0.063266 .  
sulphates             1.025e+00  1.331e-01   7.706 2.61e-14 ***
alcohol               2.876e-01  2.970e-02   9.684  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.6437 on 1267 degrees of freedom
Multiple R-squared:  0.3754,    Adjusted R-squared:   0.37 
F-statistic: 69.23 on 11 and 1267 DF,  p-value: < 2.2e-16
LS0tCnRpdGxlOiAiSG9tZXdvcmsgNCIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKIyMjIFF1ZXN0aW9uIDI6IFNwbGl0IHRoZSBkYXRhc2V0IHJhbmRvbWx5IGludG8gdHJhaW5pbmcgKDgwJSkgYW5kIHRlc3QgKDIwJSkgc2V0cy4gKFVzZSB5b3VyIGtub3dsZWRnZSBvbiBnZW5lcmF0aW5nIHJhbmRvbSBudW1iZXJzIHRvIGNyZWF0ZSB0aGUgc3BsaXRzKQpgYGB7cn0KbGlicmFyeShkcGx5cikKYGBgCgpMb2FkaW5nIGluIHRoZSBkYXRhc2V0cyBhbmQgZWRpdGluZwpgYGB7cn0KbGlicmFyeShkcGx5cikKCmhvdXNpbmdfcHJpY2VzIDwtIHJlYWQuY3N2KCIvVXNlcnMvcm9uYW4vRG9jdW1lbnRzL0lORlNDSSAwMzEwL3JlYWwtZXN0YXRlLXNhbGVzLmNzdiIpCmhvdXNpbmdfcHJpY2VzIDwtIGhvdXNpbmdfcHJpY2VzICU+JSByZW5hbWUobmVpZ2hib3Job29kID0gTVVOSURFU0MpCmhvdXNpbmdfcHJpY2VzJG5laWdoYm9yaG9vZCA8LSB0cmltd3MoaG91c2luZ19wcmljZXMkbmVpZ2hib3Job29kKQpob3VzaW5nX3ByaWNlcyRTQUxFREFURSA8LSBhcy5EYXRlKGhvdXNpbmdfcHJpY2VzJFNBTEVEQVRFLCBmb3JtYXQgPSAiJW0tJWQtJXkiKQoKdmFjY2luZXMgPC0gcmVhZC5jc3YoIi9Vc2Vycy9yb25hbi9Eb2N1bWVudHMvSU5GU0NJIDAzMTAvY292aWQtdmFjY2luZS1kYXRhLmNzdiIpCnZhY2NpbmVzIDwtIHZhY2NpbmVzICU+JSByZW5hbWUobmVpZ2hib3Job29kID0gbmVpZ2hib3Job29kX211bmljaXBhbGl0eSkKCmNvdmlkX2Nhc2VzIDwtIHJlYWQuY3N2KCIvVXNlcnMvcm9uYW4vRG9jdW1lbnRzL0lORlNDSSAwMzEwL2NvdmlkLWNhc2UtZGF0YS5jc3YiKQpjb3ZpZF9jYXNlcyA8LSBjb3ZpZF9jYXNlcyAlPiUgcmVuYW1lKG5laWdoYm9yaG9vZCA9IG5laWdoYm9yaG9vZF9tdW5pY2lwYWxpdHkpCgpgYGAKTWVyZ2luZyBkYXRhc2V0cyBpbnRvIG9uZSBzZXQKYGBge3J9CmhvdXNpbmdfcHJpY2VzIDwtIGhvdXNpbmdfcHJpY2VzICU+JQogIGZpbHRlcighaXMubmEoUFJJQ0UpKQpob3VzaW5nX3ByaWNlc19zdW1tYXJ5IDwtIGhvdXNpbmdfcHJpY2VzICU+JQogIGdyb3VwX2J5KG5laWdoYm9yaG9vZCkgJT4lCiAgc3VtbWFyaXplKG1lYW5faG91c2luZ19wcmljZSA9IG1lYW4oUFJJQ0UpLCBuYS5ybSA9IFRSVUUpCgp2YWNjaW5lc19zdW1tYXJ5IDwtIHZhY2NpbmVzICU+JQogIGdyb3VwX2J5KG5laWdoYm9yaG9vZCkgJT4lCiAgc3VtbWFyaXplKHRvdGFsX3ZhY2NpbmF0aW9ucyA9IGJpdmFsZW50X2Jvb3N0ZXIpCgpjb3ZpZF9jYXNlc19zdW1tYXJ5IDwtIGNvdmlkX2Nhc2VzICU+JQogIGdyb3VwX2J5KG5laWdoYm9yaG9vZCkgJT4lCiAgc3VtbWFyaXplKHRvdGFsX2NvdmlkX2Nhc2VzID0gaW5mZWN0aW9ucykKCm1lcmdlZF9kYXRhIDwtIG1lcmdlKGhvdXNpbmdfcHJpY2VzX3N1bW1hcnksIGNvdmlkX2Nhc2VzX3N1bW1hcnksIGJ5ID0gIm5laWdoYm9yaG9vZCIpCm1lcmdlZF9kYXRhIDwtIG1lcmdlKG1lcmdlZF9kYXRhLCB2YWNjaW5lc19zdW1tYXJ5LCBieSA9ICJuZWlnaGJvcmhvb2QiKQpgYGAKCiMjIyBRdWVzdGlvbiAzOiBGaXQgYSBtdWx0aXBsZSBsaW5lYXIgcmVncmVzc2lvbiBtb2RlbCB0byB0aGUgdHJhaW5pbmcgZGF0YSwgdXNpbmcgYWxsIHRoZSB2YXJpYWJsZXMgaW4gdGhlIGRhdGFzZXQgdG8gcHJlZGljdCB3aW5lIHF1YWxpdHkKClNwbGl0dGluZyBkYXRhIGludG8gdHJhaW5pbmcgYW5kIHRlc3Qgc2V0cwpgYGB7cn0KdHJhaW5pbmdfc2V0IDwtIG1lcmdlZF9kYXRhICU+JSBkcGx5cjo6c2FtcGxlX2ZyYWMoMC44KQp0ZXN0aW5nX3NldCA8LSBkcGx5cjo6YW50aV9qb2luKG1lcmdlZF9kYXRhLCB0cmFpbmluZ19zZXQsIGJ5ID0gIm5laWdoYm9yaG9vZCIpCgp0cmFpbmluZ19tbHIgPC0gbG0obWVhbl9ob3VzaW5nX3ByaWNlIH4gdG90YWxfY292aWRfY2FzZXMgKyB0b3RhbF92YWNjaW5hdGlvbnMsIGRhdGEgPSB0cmFpbmluZ19zZXQpCnN1bW1hcnkodHJhaW5pbmdfbWxyKQoKd2luZV9xdWFsaXR5IDwtIHJlYWQuY3N2KCIvVXNlcnMvcm9uYW4vRG9jdW1lbnRzL0lORlNDSSAwMzEwL3dpbmVxdWFsaXR5LXJlZC5jc3YiKQp3aW5lX3RyYWluaW5nX3NldCA8LSB3aW5lX3F1YWxpdHkgJT4lIGRwbHlyOjpzYW1wbGVfZnJhYygwLjgpCndpbmVfdGVzdGluZ19zZXQgPC0gZHBseXI6OmFudGlfam9pbih3aW5lX3F1YWxpdHksIHdpbmVfdHJhaW5pbmdfc2V0LCBieSA9ICJxdWFsaXR5IikKd2luZV9tbHIgPC0gbG0ocXVhbGl0eSB+IGZpeGVkLmFjaWRpdHkgKyB2b2xhdGlsZS5hY2lkaXR5ICsgY2l0cmljLmFjaWQgKyByZXNpZHVhbC5zdWdhciArIGNobG9yaWRlcyArIGZyZWUuc3VsZnVyLmRpb3hpZGUgKyB0b3RhbC5zdWxmdXIuZGlveGlkZSArIGRlbnNpdHkgKyBwSCArIHN1bHBoYXRlcyArIGFsY29ob2wsIGRhdGEgPSB3aW5lX3RyYWluaW5nX3NldCkKc3VtbWFyeSh3aW5lX21scikKYGBgCg==