Bắt lỗi khi mô hình hóa
Tuổi thọ trung bình lúc sinh là một chỉ báo quan trọng về sức khỏe dân số.
Bạn đang làm việc như một nhà nghiên cứu y tế công cộng tư vấn. Khách hàng muốn biết mức tăng tuổi thọ tương ứng với mỗi đô la chi cho y tế. Bạn đã thu thập dữ liệu tuổi thọ (tính bằng năm) cho tất cả các quốc gia và chi tiêu y tế bình quân đầu người tương ứng, từ 2001 đến 2021. Chuyên gia thống kê tư vấn đã viết mã để khớp các mô hình hồi quy cho dữ liệu của từng quốc gia. Tuy nhiên, dữ liệu có giá trị thiếu dẫn đến lỗi khi khớp mô hình.
Bạn có một danh sách các data frame trong không gian làm việc, ls_df, trong đó mỗi phần tử là dữ liệu của một quốc gia. Bạn dự định song song hóa với parLapply() và dùng tryCatch() để bắt lỗi. Gói parallel đã được nạp sẵn cho bạn.
Bài tập này là một phần của khóa học
Lập trình song song trong R
Hướng dẫn bài tập
- Cung cấp một hàm cho đối số error. Hàm này nhận một đối số,
e, và dùngpaste()để đặt chuỗi"Error!"trướce. - Chỉnh sửa
fit_lm()để kiểm tra xemmodelcó phải là chuỗi ký tự chứa thông báo lỗi hay không. - Tạo một cụm với sáu lõi.
- Áp dụng
fit_lm()cho danh sáchls_dftheo kiểu song song bằngparLapply().
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
fit_lm <- function (df) {
model <- tryCatch(lm(life_expectancy ~ health_exp_per_capita, data = df),
# Supply a function that pastes "Error!" and one argument, e
error = ___)
# If model is character (error) return model else return model coefficient
if (___) return(model)
else return(coef(model)[2])
}
# Make a cluster of six cores
cluster <- ___(___)
# Apply fit_lm in parallel to ls_df using cluster
ls_mod <- parLapply(___, ___, ___)
stopCluster(cluster)
print(paste(sum(sapply(ls_mod, is.numeric)), "models fit and", sum(sapply(ls_mod, is.character)), "errors caught!"))