영상을 보고나니 확실히 R이 통계에 있어서는 직관적이긴 하더라구요 라이브러리 설치할 필요도 없고.. 그치만 헷갈리니까 줏대있게 Python3으로 갑니다 흑흑
와 실수로 이거 창 꺼버렸는데 자동저장 되어서 넘 다행 헥헥
먼저 문제 내용을 살펴볼까요?
제3유형(풀이용, 제출없음)
주어진 데이터(data/blood_pressure.csv)에는 고혈압 환자 120명의 치료 전후의 혈압이 저장되어 있다. 해당 치료가 효과가 있는지 (즉, 치료 후의 혈압이 감소했는지) 쌍체표본 t-검정(paired t-test)을 통해 답하고자 한다. 가설은 아래와 같다. 1. mu의 표본평균을 입력하시오. (반올림하여 소수 둘째자리까지 계산) 2. 위의 가설을 검정하기 위한 검정통계량을 입력하시오. (반올림하여 소수 넷째자리까지 계산) 3. 위의 통계량에 대한 p-값을 구하여 입력하시오.(반올림하여 소수 넷째자리까지 계산) 4. 유의수준 0.05 하에서 가설검정의 결과를 (채택 / 기각) 중 하나를 선택하여 입력하시오.
ㅎ... 네 뭐 바라는게 많네요
뭐 df.head()를 사용해도 되겠지만 아무래도 테이블이 주어져 있으니까요 클릭 한 번으로 어떤 데이터가 있는지 살펴보기로 하겠습니다.
환자의 성별, 나이대 그리고 치료 전 혈압과 치료 후 혈압을 담은 데이터프레임이네요!
해당 문제에서는 살펴봐야 할 표본이 두 개네요. 다시 말하면?
bp_before(치료 전 혈압)와 bp_after(치료 후 혈압)이 쌍을 이루고 있다는 것이죠
어떤 기법을 사용해야할지 감이 안 잡히는 저를 위해 문제에서 친절하게 쌍체표본 t-검정을 사용하라고 알려주네용
1. mu의표본평균을 입력하시오. (반올림하여 소수 둘째자리까지 계산)
1번은 pandas를 사용해도 되고 numpy를 사용해도 되더라구용(np가 더 깔끔한 것 같긴해요)
핵심은 round와 mean이겠네요
이 때 주의할 점은 치료가 효과적이었는지를 판단하는 것이기 때문에 사후(bp_after)에서 사전(bp_before)을 뺀 것들의 평균을 구해야한다는 것입니다. 순서를 헷갈리면 양수 음수가 바뀌어 오답 처리가 되니 꼭 잘 생각해야겠어요
# 출력을 원할 경우 print() 함수 활용# 예시) print(df.head())# getcwd(), chdir() 등 작업 폴더 설정 불필요# 파일 경로 상 내부 드라이브 경로(C: 등) 접근 불가import pandas as pd
a = pd.read_csv('data/blood_pressure.csv', index_col=0)
# 1-1. pd 사용
a['result'] = a.bp_after - a.bp_before
print('--표본평균--')
print(round(a['result'].mean(),2))
# 1-2. np 사용import numpy as np
print(round(np.mean(a.bp_after - a.bp_before),2))
2. 위의 가설을 검정하기 위한검정통계량을 입력하시오. (반올림하여 소수 넷째자리까지 계산)
3. 위의 통계량에 대한p-값을 구하여 입력하시오.(반올림하여 소수 넷째자리까지 계산)
2,3번 문제는 scipy 라이브러리를 통해 한 번에 구할 수 있으므로 같이 적어보도록 할게요
* 더 깔끔한 코딩이 있어 데이터 전문가 포럼 운영진께서 정리해주신 게시물을 참고했습니다.