Question 2

  1. Carefully explain the differences between the KNN classifier and KNN regression methods.

We would employ a regression technique for a continuous response variable to forecast the closest observations by estimating the average value. For a categorical response variable, we would utilize a classification approach, which is non-parametric, to examine odds ratios and conditional probabilities

Question 9

  1. This question involves the use of multiple linear regression on the Auto data set.
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.2
library(GGally)
## Warning: package 'GGally' was built under R version 4.3.2
## Registered S3 method overwritten by 'GGally':
##   method from   
##   +.gg   ggplot2
library(ISLR2)
attach(Auto)
## The following object is masked from package:ggplot2:
## 
##     mpg
head(Auto)
str(Auto)
## 'data.frame':    392 obs. of  9 variables:
##  $ mpg         : num  18 15 18 16 17 15 14 14 14 15 ...
##  $ cylinders   : int  8 8 8 8 8 8 8 8 8 8 ...
##  $ displacement: num  307 350 318 304 302 429 454 440 455 390 ...
##  $ horsepower  : int  130 165 150 150 140 198 220 215 225 190 ...
##  $ weight      : int  3504 3693 3436 3433 3449 4341 4354 4312 4425 3850 ...
##  $ acceleration: num  12 11.5 11 12 10.5 10 9 8.5 10 8.5 ...
##  $ year        : int  70 70 70 70 70 70 70 70 70 70 ...
##  $ origin      : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ name        : Factor w/ 304 levels "amc ambassador brougham",..: 49 36 231 14 161 141 54 223 241 2 ...
##  - attr(*, "na.action")= 'omit' Named int [1:5] 33 127 331 337 355
##   ..- attr(*, "names")= chr [1:5] "33" "127" "331" "337" ...

Question 9

  1. Produce a scatterplot matrix which includes all of the variables in the data set.
plot(Auto)

(b) Compute the matrix of correlations between the variables using the function cor(). You will need to exclude the name variable, which is qualitative.

cor(Auto[1:8])
##                     mpg  cylinders displacement horsepower     weight
## mpg           1.0000000 -0.7776175   -0.8051269 -0.7784268 -0.8322442
## cylinders    -0.7776175  1.0000000    0.9508233  0.8429834  0.8975273
## displacement -0.8051269  0.9508233    1.0000000  0.8972570  0.9329944
## horsepower   -0.7784268  0.8429834    0.8972570  1.0000000  0.8645377
## weight       -0.8322442  0.8975273    0.9329944  0.8645377  1.0000000
## acceleration  0.4233285 -0.5046834   -0.5438005 -0.6891955 -0.4168392
## year          0.5805410 -0.3456474   -0.3698552 -0.4163615 -0.3091199
## origin        0.5652088 -0.5689316   -0.6145351 -0.4551715 -0.5850054
##              acceleration       year     origin
## mpg             0.4233285  0.5805410  0.5652088
## cylinders      -0.5046834 -0.3456474 -0.5689316
## displacement   -0.5438005 -0.3698552 -0.6145351
## horsepower     -0.6891955 -0.4163615 -0.4551715
## weight         -0.4168392 -0.3091199 -0.5850054
## acceleration    1.0000000  0.2903161  0.2127458
## year            0.2903161  1.0000000  0.1815277
## origin          0.2127458  0.1815277  1.0000000

(c) Use the lm() function to perform a multiple linear regression with mpg as the response and all other variables except name as the predictors. Use the summary() function to print the results. Comment on the output. For instance:

auto <- lm(mpg ~ . - name, data = Auto)

summary(auto)
## 
## Call:
## lm(formula = mpg ~ . - name, data = Auto)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -9.5903 -2.1565 -0.1169  1.8690 13.0604 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -17.218435   4.644294  -3.707  0.00024 ***
## cylinders     -0.493376   0.323282  -1.526  0.12780    
## displacement   0.019896   0.007515   2.647  0.00844 ** 
## horsepower    -0.016951   0.013787  -1.230  0.21963    
## weight        -0.006474   0.000652  -9.929  < 2e-16 ***
## acceleration   0.080576   0.098845   0.815  0.41548    
## year           0.750773   0.050973  14.729  < 2e-16 ***
## origin         1.426141   0.278136   5.127 4.67e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.328 on 384 degrees of freedom
## Multiple R-squared:  0.8215, Adjusted R-squared:  0.8182 
## F-statistic: 252.4 on 7 and 384 DF,  p-value: < 2.2e-16
  1. Yes, the overall F-test is significant, indicating that at least some of the predictors are related to mpg.
  2. Displacement, weight, year, and origin appear to have a statistically significant relationship with mpg.
  3. The coefficient for the year (0.750773) suggests that each additional year corresponds to an average increase of approximately 0.75 mpg in fuel efficiency, holding all other factors constant. This is a significant positive relationship, implying that cars are becoming more fuel-efficient as time progresses.

(d) Use the plot() function to produce diagnostic plots of the linear regression fit. Comment on any problems you see with the fit. Do the residual plots suggest any unusually large outliers? Does the leverage plot identify any observations with unusually high leverage?

Based on the Residuals versus Fitted Values plot, there is an indication of non-linearity in the data. The Residuals versus Leverage plot suggests the presence of outliers, as evidenced by data points falling outside the standardized residuals range of -2 to 2. Additionally, the plot reveals observations with high leverage exceeding the 0.05 threshold.

par(mfrow = c(2, 2))  
plot(auto)

(e) Use the * and : symbols to fit linear regression models with interaction effects. Do any interactions appear to be statistically significant?

fit2 <- lm(mpg ~ cylinders * displacement + horsepower * weight + acceleration * year, data = Auto[, 1:8])
summary(fit2)
## 
## Call:
## lm(formula = mpg ~ cylinders * displacement + horsepower * weight + 
##     acceleration * year, data = Auto[, 1:8])
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -9.3265 -1.5779  0.0389  1.3483 11.6961 
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)             1.162e+02  1.853e+01   6.274 9.53e-10 ***
## cylinders              -1.803e-01  4.776e-01  -0.377   0.7061    
## displacement           -2.867e-02  1.425e-02  -2.013   0.0449 *  
## horsepower             -2.261e-01  2.609e-02  -8.664  < 2e-16 ***
## weight                 -1.019e-02  9.020e-04 -11.296  < 2e-16 ***
## acceleration           -7.081e+00  1.158e+00  -6.113 2.41e-09 ***
## year                   -6.719e-01  2.417e-01  -2.780   0.0057 ** 
## cylinders:displacement  2.790e-03  2.067e-03   1.350   0.1779    
## horsepower:weight       5.154e-05  6.727e-06   7.661 1.53e-13 ***
## acceleration:year       9.113e-02  1.502e-02   6.069 3.10e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.819 on 382 degrees of freedom
## Multiple R-squared:  0.8726, Adjusted R-squared:  0.8696 
## F-statistic: 290.6 on 9 and 382 DF,  p-value: < 2.2e-16

From the summary, it looks like that the interaction between ‘cylinders’ and ‘displacement’ does not reach statistical significance. However, the interaction between ‘horsepower’ and ‘weight’ is statistically significant, as is the interaction between ‘acceleration’ and ‘year’.

(f) Try a few different transformations of the variables, such as log(X), √X, X2. Comment on your findings.

Model2 = lm(mpg~.-name + displacement*log(weight)+year:cylinders+log(acceleration), Auto)
summary(Model2)
## 
## Call:
## lm(formula = mpg ~ . - name + displacement * log(weight) + year:cylinders + 
##     log(acceleration), data = Auto)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -9.0920 -1.5290  0.0143  1.2957 12.9721 
## 
## Coefficients:
##                            Estimate Std. Error t value Pr(>|t|)    
## (Intercept)               80.859829  76.160285   1.062 0.289043    
## cylinders                 10.279768   2.259566   4.549 7.25e-06 ***
## displacement              -0.504066   0.196698  -2.563 0.010772 *  
## horsepower                -0.047762   0.012410  -3.849 0.000139 ***
## weight                    -0.004112   0.004851  -0.848 0.397142    
## acceleration               1.421988   0.448480   3.171 0.001644 ** 
## year                       1.453984   0.149493   9.726  < 2e-16 ***
## origin                     0.530919   0.253621   2.093 0.036980 *  
## log(weight)              -14.176185  10.284091  -1.378 0.168873    
## log(acceleration)        -22.593994   7.455537  -3.030 0.002609 ** 
## displacement:log(weight)   0.061791   0.024131   2.561 0.010833 *  
## cylinders:year            -0.132177   0.028685  -4.608 5.56e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.831 on 380 degrees of freedom
## Multiple R-squared:  0.8721, Adjusted R-squared:  0.8684 
## F-statistic: 235.6 on 11 and 380 DF,  p-value: < 2.2e-16

Question 10

  1. This question should be answered using the Carseats data set.
attach(Carseats)

(a) Fit a multiple regression model to predict Sales using Price, Urban, and US.

model <- lm(Sales ~ Price + Urban + US, data = Carseats)


summary(model)
## 
## Call:
## lm(formula = Sales ~ Price + Urban + US, data = Carseats)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -6.9206 -1.6220 -0.0564  1.5786  7.0581 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 13.043469   0.651012  20.036  < 2e-16 ***
## Price       -0.054459   0.005242 -10.389  < 2e-16 ***
## UrbanYes    -0.021916   0.271650  -0.081    0.936    
## USYes        1.200573   0.259042   4.635 4.86e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.472 on 396 degrees of freedom
## Multiple R-squared:  0.2393, Adjusted R-squared:  0.2335 
## F-statistic: 41.52 on 3 and 396 DF,  p-value: < 2.2e-16

(b) Provide an interpretation of each coefficient in the model. Becareful—some of the variables in the model are qualitative!

Summary

  1. Price has a significant negative impact on sales; as the price increases, sales decrease
  2. Being in an urban area does not significantly affect sales, given the high p-value.
  3. Sales are significantly higher in the US compared to outside of it, suggesting market-specific factors that favor higher sales in the US

(c) Write out the model in equation form, being careful to handle the qualitative variables properly.

Sales=13.043469−0.054459×Price−0.021916×UrbanYes+1.200573×USYes+ϵ

(d) For which of the predictors can you reject the null hypothesis H0 :βj =0?

  1. Price: The p-value is < 2e-16 which is < 0.05
  2. UrbanYes: The p-value is 0.936 which is > 0.05
  3. USYes: The p-value is 4.86e-06 which is < 0.05
  4. We can reject the null hypothesis for Price and US

(e) On the basis of your response to the previous question, fit a smaller model that only uses the predictors for which there is evidence of association with the outcome.

smaller_model <- lm(Sales ~ Price + US, data = Carseats)
summary(smaller_model)
## 
## Call:
## lm(formula = Sales ~ Price + US, data = Carseats)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -6.9269 -1.6286 -0.0574  1.5766  7.0515 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 13.03079    0.63098  20.652  < 2e-16 ***
## Price       -0.05448    0.00523 -10.416  < 2e-16 ***
## USYes        1.19964    0.25846   4.641 4.71e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.469 on 397 degrees of freedom
## Multiple R-squared:  0.2393, Adjusted R-squared:  0.2354 
## F-statistic: 62.43 on 2 and 397 DF,  p-value: < 2.2e-16

(f) How well do the models in (a) and (e) fit the data?

  1. The R^2 values remained around the same for both models
  2. The F-statistic increased from 41.52 in the original model to 62.43 in the smaller model, and the degrees of freedom for the predictors decreased from 3 to 2. This increase in the F-statistic suggests that, relative to the number of predictors, the smaller model has a stronger overall relationship between the predictors and the dependent variable, Sales.

(g) Using the model from (e), obtain 95% confidence intervals for the coefficient(s).

confint(smaller_model, level = 0.95)
##                   2.5 %      97.5 %
## (Intercept) 11.79032020 14.27126531
## Price       -0.06475984 -0.04419543
## USYes        0.69151957  1.70776632

(h) Is there evidence of outliers or high leverage observations in the model from (e)?

par(mfrow = c(2, 2)) 
plot(smaller_model, which = 1:4)

Summary

Based on these plots, there may be a few outliers, as suggested by the residuals in the Residuals vs. Fitted and Q-Q plots. However, there doesn’t appear to be a problem with influential points according to the Cook’s Distance plot since none of the Cook’s distance values exceed a common threshold

12. This problem involves simple linear regression without an intercept.

(a) Recall that the coefficient estimate βˆ for the linear regression of Y onto X without an intercept is given by (3.38). Under what circumstance is the coefficient estimate for the regression of X onto Y the same as the coefficient estimate for the regression of Y onto X?

The coefficient estimates will be the same if they have the same denominator

(b) Generate an example in R with n = 100 observations in which the coefficient estimate for the regression of X onto Y is different from the coefficient estimate for the regression of Y onto X.

set.seed(42)


n <- 100
X <- rnorm(n, mean = 50, sd = 10)  
Y <- 2 * X + rnorm(n, mean = 0, sd = 5)  


model_Y_on_X <- lm(Y ~ X + 0) 


model_X_on_Y <- lm(X ~ Y + 0)  

beta_Y_on_X <- coef(model_Y_on_X)
beta_X_on_Y <- coef(model_X_on_Y)

beta_Y_on_X
##        X 
## 1.992214
beta_X_on_Y
##         Y 
## 0.5009852
set.seed(42)


n <- 100
X <- rnorm(n, mean = 0, sd = 1)  
Y <- X  


model_Y_on_X <- lm(Y ~ X + 0)  


model_X_on_Y <- lm(X ~ Y + 0)  


beta_Y_on_X <- coef(model_Y_on_X)
beta_X_on_Y <- coef(model_X_on_Y)

beta_Y_on_X
## X 
## 1
beta_X_on_Y
## Y 
## 1