# Viết function
truc <- function(data, y, x) {
# Hồi quy
formula <- as.formula(paste(y, "~", paste(x, collapse = '+')))
hi <- lm(formula, data = data)
# Kiểm tra khuyết tật bằng phương pháp Breusch-Pagan
bp_test <- bptest(hi)
p_value <- bp_test$p.value
# Phương sai thay đổi
# H0: phương sai không thay đổi
# H1: phương sai thay đổi
pstd <- ncvTest(hi)
# Hiện tượng đa cộng tuyến
htdct <- vif(hi)
return(list(HoiQuy = hi, pstd = pstd, htdct = htdct))
}
vd <- truc(h, 'bedrooms', c('stories','bathrooms'))
vd
## $HoiQuy
##
## Call:
## lm(formula = formula, data = data)
##
## Coefficients:
## (Intercept) stories bathrooms
## 1.9635 0.2722 0.3963
##
##
## $pstd
## Non-constant Variance Score Test
## Variance formula: ~ fitted.values
## Chisquare = 4.539907, Df = 1, p = 0.033113
##
## $htdct
## stories bathrooms
## 1.117342 1.117342
Nhìn kết quả ta thấy:
Hàm hồi quy
Y= 1,9635 + 0,2722\(X_1\) + 0,3963\(X_2\)
Trong đó
Y: bedrooms
\(X_1\): stories
\(X_2\): bathrooms
Trong pstd ta thấy p_value < 0,05 nên không đủ cơ sở để bác bỏ H0. Vậy có xảy ra hiện tượng phương sai thay đổi.
Trong htdct ta có vif < 10 nên không xảy ra hiện tượng đa cộng tuyến.