library(AER)
## Loading required package: car
## Loading required package: carData
## Loading required package: lmtest
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
## Loading required package: sandwich
## Loading required package: survival
data("DoctorVisits")
d<-DoctorVisits
multiple_regression_analysis <- function(data, dependent_var, independent_vars) {
formula <- paste(dependent_var, "~", paste(independent_vars, collapse = "+"))
model <- lm(formula, data = data)
prediction <- predict(model, newdata = data)
bp_test <- bptest(model)
if (is.na(bp_test$p.value)) {
cat("Breusch-Pagan test failed. Check your data for heteroskedasticity.")
} else {
p_value <- bp_test$p.value
predictions <- predict(model, newdata = data)
return(list(model = model, p_value = p_value, predictions = predictions))
}
}
Y <- "visits"
x <- c("age", "income", "illness", "reduced", "health", "private", "freepoor", "freerepat", "nchronic", "lchronic")
result <- multiple_regression_analysis(d, Y, x)
summary(result$model)
##
## Call:
## lm(formula = formula, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.1321 -0.2555 -0.1440 -0.0487 7.0513
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.050523 0.034605 1.460 0.144363
## age 0.158125 0.066524 2.377 0.017492 *
## income -0.066550 0.030394 -2.190 0.028597 *
## illness 0.060295 0.008336 7.233 5.4e-13 ***
## reduced 0.103182 0.003657 28.218 < 2e-16 ***
## health 0.017212 0.005179 3.323 0.000896 ***
## privateyes 0.041578 0.024547 1.694 0.090367 .
## freepooryes -0.105316 0.052446 -2.008 0.044687 *
## freerepatyes 0.038542 0.037905 1.017 0.309286
## nchronicyes 0.006572 0.023683 0.277 0.781426
## lchronicyes 0.041868 0.035532 1.178 0.238724
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7139 on 5179 degrees of freedom
## Multiple R-squared: 0.2014, Adjusted R-squared: 0.1999
## F-statistic: 130.6 on 10 and 5179 DF, p-value: < 2.2e-16
result$p_value
## BP
## 1.757476e-146
head(result$predictions)
## 1 2 3 4 5 6
## 0.5757780 0.3760682 0.2015555 0.1308785 0.7109039 0.6234081