상관관계 디버깅
여러분은 미 보건부에서 근무하고 있어요. 팀은 다태임신(쌍둥이, 세쌍둥이 등)이 임신 중 체중 증가와 상관이 있는지 조사하고 있습니다. 상관계수를 계산했지만, 값이 다른 분석가의 추정치와 크게 달랐어요. 그 분석가는 여러분의 데이터에 체중 증가가 99파운드를 초과하는 값이 기록되어 있지 않다고 지적했습니다. 여러분은 계산을 다시 수행하기로 했고, 이번에는 체중 증가의 최댓값을 로그로 남기려 합니다.
작업 공간에는 데이터 프레임의 목록 ls_df가 있습니다. ls_df의 각 원소에는 주(state)별 출생 데이터가 들어 있어요. 여러분은 계산을 병렬로 돌리기 위해 foreach 루프를 작성했습니다.
foreach와 doParallel은 미리 로드되어 있습니다.
이 연습은 강의의 일부입니다
R의 병렬 프로그래밍
연습 안내
- 코어 4개로 클러스터를 생성하세요.
- 클러스터의 메시지를 기록할 파일
state_log.txt를 지정하세요. - 루프 본문에서 데이터 프레임
df의weight_gain_pounds열 최댓값을 로그로 남기세요. state_log.txt를 읽어 출력된 메시지를 확인하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Create a cluster of four cores
cl <- ___(___,
# Specify a file to log print statements
___ = "___")
registerDoParallel(cl)
res <- foreach(df = ls_df) %dopar% {
print(paste(unique(df$state), ":",
# Calculate maximum of weight_gain_pounds in df
___(___)))
cor(df$plurality, df$weight_gain_pounds)
}
stopCluster(cl)
# Read log file to check print messages
read.delim("___", sep = ";")