PHÂN TÍCH HỒI QUY, KIỂM
ĐỊNH KHUYẾT TẬT, DỰ BÁO
# Function tính hàm hồi quy đơn
hamhoiquydon <- function(x, y) {
n <- length(x) # Số quan sát
# Tính giá trị trung bình của x và y
mean_x <- mean(x)
mean_y <- mean(y)
# Tính hệ số góc (beta1) và hệ số giao (beta0) của đường hồi quy
beta1 <- sum((x - mean_x) * (y - mean_y)) / sum((x - mean_x)^2)
beta0 <- mean_y - beta1 * mean_x
# Tạo 1 data frame chứa các hệ số
heso <- data.frame(Intercept = beta0, Slope = beta1)
return(heso)
}
# Ví dụ
x <- c(2, 5, 7, 10, 23)
y <- c(4, 9, 14, 21, 33)
result <- hamhoiquydon(x, y)
print(result)
## Intercept Slope
## 1 3.489442 1.352187
# KIỂM ĐỊNH KHUYẾT TẬT, DỰ BÁO
## Kiểm định sự phù hợp của mô hình
model_fit <- function(model) {
# Trích suất các giá trị khuyết đạt
residuals <- residuals(model)
# Trích suất các giá trị dự báo
fitted <- fitted(model)
# Calculating R-squared
r_squared <- summary(model)$r.squared
# Calculating adjusted R-squared
adj_r_squared <- summary(model)$adj.r.squared
# Calculating root mean squared error (RMSE)
rmse <- sqrt(mean(residuals^2))
# Tạo 1 danh sách lưu trữ kết quả
results <- list()
results$residuals <- residuals
results$fitted <- fitted
results$r_squared <- r_squared
results$adj_r_squared <- adj_r_squared
results$rmse <- rmse
return(results)
}
LS0tDQp0aXRsZTogIkLDoGkgdOG6rXAgdHXhuqduIDgiDQphdXRob3I6ICJUcuG6p24gS2jDoW5oIFZ5IC0gMjEyMTAxMjY5MiINCmRhdGU6ICIyMDIzLTA3LTI1Ig0Kb3V0cHV0OiANCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZGVwdGg6IDINCiAgICB0b2NfZmxvYXQ6IHRydWUNCiAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUNCiAgICBjb2RlX2ZvbGRpbmc6IHNob3cgDQogICAgY29kZV9kb3dubG9hZDogdHJ1ZSANCi0tLQ0KDQojIFBIw4JOIFTDjUNIIEjhu5JJIFFVWSwgS0nhu4JNIMSQ4buKTkggS0hVWeG6vlQgVOG6rFQsIEThu7AgQsOBTyANCg0KYGBge3J9DQojIEZ1bmN0aW9uIHTDrW5oIGjDoG0gaOG7k2kgcXV5IMSRxqFuIA0KaGFtaG9pcXV5ZG9uIDwtIGZ1bmN0aW9uKHgsIHkpIHsNCiAgbiA8LSBsZW5ndGgoeCkgICMgU+G7kSBxdWFuIHPDoXQgDQogIA0KICAjIFTDrW5oIGdpw6EgdHLhu4sgdHJ1bmcgYsOsbmggY+G7p2EgeCB2w6AgeSANCiAgbWVhbl94IDwtIG1lYW4oeCkNCiAgbWVhbl95IDwtIG1lYW4oeSkNCiAgDQogICMgVMOtbmggaOG7hyBz4buRIGfDs2MgKGJldGExKSB2w6AgaOG7hyBz4buRIGdpYW8gKGJldGEwKSBj4bunYSDEkcaw4budbmcgaOG7k2kgcXV5IA0KICBiZXRhMSA8LSBzdW0oKHggLSBtZWFuX3gpICogKHkgLSBtZWFuX3kpKSAvIHN1bSgoeCAtIG1lYW5feCleMikNCiAgYmV0YTAgPC0gbWVhbl95IC0gYmV0YTEgKiBtZWFuX3gNCiAgDQogICMgVOG6oW8gMSBkYXRhIGZyYW1lIGNo4bupYSBjw6FjIGjhu4cgc+G7kSANCiAgaGVzbyA8LSBkYXRhLmZyYW1lKEludGVyY2VwdCA9IGJldGEwLCBTbG9wZSA9IGJldGExKQ0KICANCiAgcmV0dXJuKGhlc28pDQp9DQoNCiMgVsOtIGThu6UgDQp4IDwtIGMoMiwgNSwgNywgMTAsIDIzKQ0KeSA8LSBjKDQsIDksIDE0LCAyMSwgMzMpDQoNCnJlc3VsdCA8LSBoYW1ob2lxdXlkb24oeCwgeSkNCnByaW50KHJlc3VsdCkNCg0KIyBLSeG7gk0gxJDhu4pOSCBLSFVZ4bq+VCBU4bqsVCwgROG7sCBCw4FPIA0KDQojIyBLaeG7g20gxJHhu4tuaCBz4buxIHBow7kgaOG7o3AgY+G7p2EgbcO0IGjDrG5oDQoNCm1vZGVsX2ZpdCA8LSBmdW5jdGlvbihtb2RlbCkgew0KICAjIFRyw61jaCBzdeG6pXQgY8OhYyBnacOhIHRy4buLIGtodXnhur90IMSR4bqhdCANCiAgcmVzaWR1YWxzIDwtIHJlc2lkdWFscyhtb2RlbCkNCiAgDQogICMgVHLDrWNoIHN14bqldCBjw6FjIGdpw6EgdHLhu4sgZOG7sSBiw6FvIA0KICBmaXR0ZWQgPC0gZml0dGVkKG1vZGVsKQ0KICANCiAgIyBDYWxjdWxhdGluZyBSLXNxdWFyZWQNCiAgcl9zcXVhcmVkIDwtIHN1bW1hcnkobW9kZWwpJHIuc3F1YXJlZA0KICANCiAgIyBDYWxjdWxhdGluZyBhZGp1c3RlZCBSLXNxdWFyZWQNCiAgYWRqX3Jfc3F1YXJlZCA8LSBzdW1tYXJ5KG1vZGVsKSRhZGouci5zcXVhcmVkDQogIA0KICAjIENhbGN1bGF0aW5nIHJvb3QgbWVhbiBzcXVhcmVkIGVycm9yIChSTVNFKQ0KICBybXNlIDwtIHNxcnQobWVhbihyZXNpZHVhbHNeMikpDQogIA0KICAjIFThuqFvIDEgZGFuaCBzw6FjaCBsxrB1IHRy4buvIGvhur90IHF14bqjIA0KICByZXN1bHRzIDwtIGxpc3QoKQ0KICByZXN1bHRzJHJlc2lkdWFscyA8LSByZXNpZHVhbHMNCiAgcmVzdWx0cyRmaXR0ZWQgPC0gZml0dGVkDQogIHJlc3VsdHMkcl9zcXVhcmVkIDwtIHJfc3F1YXJlZA0KICByZXN1bHRzJGFkal9yX3NxdWFyZWQgPC0gYWRqX3Jfc3F1YXJlZA0KICByZXN1bHRzJHJtc2UgPC0gcm1zZQ0KICANCiAgcmV0dXJuKHJlc3VsdHMpDQp9DQoNCmBgYA0KDQoNCg==