실기
연습 화면을 불러오는 중…
연습 화면을 불러오는 중…
Python으로 준비하는 실기
코딩이 처음이라면 한 줄 실행부터.
설명 옆에서 직접 써 보고, 결과를 확인하며 배웁니다.
설치·가입 없이 이 화면에서 실행
코드를 실행해 안녕하세요를 출력해요.
처음 보는 코드를 읽고, 오류 메시지를 읽고, 짧은 코드를 스스로 고칠 수 있다.
표에서 원하는 숫자 하나를 뽑아내는 길을 스스로 찾을 수 있다.
전처리 조건을 그대로 코드로 옮겨, 문제가 요구한 자리수로 값을 낼 수 있다.
학습 데이터로 모델을 만들고 평가 데이터의 예측을 규격에 맞는 CSV 로 낼 수 있다.
검정통계량과 p-value 를 구하고 그 결과를 과장 없이 문장으로 옮길 수 있다.
도움말과 파일을 확인하며 혼자 문제를 풀고 제출할 수 있다.
배운 내용을 실전으로
alcohol-sample.csv 는 적포도주 40개와 백포도주 60개를 무작위로 뽑아 alcohol 도수를 기록한 자료다.
두 집단의 알코올 도수 평균이 같은지 등분산을 가정하지 않는 독립표본 t검정(Welch)으로 검정한다.
(1) 표본평균의 차이 red − white 를 소수점 넷째 자리까지, (2) 검정통계량을 소수점 넷째 자리까지, (3) 양측검정 p-value 를 소수점 넷째 자리까지 반올림해 각각 답안에 적는다.
groupby('wine_type')['alcohol'].agg(['count','mean']). 40 과 60 이라는 다른 크기 가 이 문항의 핵심이다.stats.ttest_ind(a, b, equal_var=False) 가 Welch 검정이다. scipy 의 기본값은 True(합동분산)라 반드시 인자를 적어야 한다.result.statistic·result.pvalue. scipy 의 ttest_ind 는 기본이 양측검정이다.import pandas as pd
from scipy import stats
df = pd.read_csv('alcohol-sample.csv')
red = df[df['wine_type'] == 'red']['alcohol']
white = df[df['wine_type'] == 'white']['alcohol']
result = stats.ttest_ind(red, white, equal_var=False)
print(round(red.mean() - white.mean(), 4))
print(round(result.statistic, 4))
print(round(result.pvalue, 4))equal_var=False 가 Welch 검정이다. 두 집단의 분산이 다를 수 있을 때 자유도를 보정한다. 두 집단의 크기가 40과 60으로 다르기 때문에 equal_var=True(합동분산)로 두면 통계량이 -2.9189, p-value 가 0.0044 로 달라진다. 표본 크기가 같으면 두 방식의 통계량이 일치해 차이가 드러나지 않는다. p-value 0.0031 은 유의수준 0.05 에서 "평균이 같다"를 기각한다는 뜻이지, 차이가 크다는 뜻은 아니다.
ttest_ind 의 equal_var 기본값은 True 다. Welch 를 쓰라는 문항에서 인자를 빼면 합동분산 검정이 되어 통계량 −2.9189, p 0.0044 라는 다른 답이 나온다. 두 집단 크기가 같으면 차이가 드러나지 않아 연습 때 넘어가기 쉽다.