Orange3를 엘리쌤과 인공지능에서 알게된후 Python 기초 통계를 공부하면서 최대한 Orange3로 따라하면서 통계도 공부하고, 오렌지도 공부하고 덩달아 파이썬도 익히는 시간을 갖기로 하였습니다.
섹션: 일원분산분석(Anova)을 오렌지로 따라해봅니다.
1. 인터넷상의 자료의 URL을 복사합니다. 다운 받은 다음 불러와도 됩니다. PlantGrowth.csv 이 자료에서 group 요인은 수준이 ctrl, trt1, trt2 세 개. 다시 말해 세 집단을 비교하는 것입니다.
3. 파일 위젯의 URL에 붙여넣기하고 [Reload] 버튼을 선택합니다.4. 박스플롯위젯을 선택하고 Variable = weight, Subgroup = group을 선택하고 오른쪽 화면에서 결과를 확입합니다. p값이 0.016으로 유의수준 0.05보다 적으므로 세집단간(요인간)에는 유의미한 차이가 있다고 판정합니다.
5. 데이터의 요인내 일관성이 있는지를 살펴보기위하여 Silhouette Plot위젯을 연결하여 결과를 확인하니 trt1에 2개의 자료가 특이하군요.
6. 해서 정규성검증을 해봅니다. 파이썬스크립트를 캔바스에 놓고 연결을 합니다. (2번째 요인만 확인 합니다)import pandas as pd
from Orange.data.pandas_compat import table_from_frame,table_to_frame
import scipy.stats as ss
df = pd.concat(in_data.to_pandas_dfs(), axis=1)
trt1 = df.weight[df['group']==1]
print(ss.shapiro(trt1))
Running script:
ShapiroResult(statistic=0.9304108619689941, pvalue=0.451945960521698)
7. p값이 0.45 입니다. 귀무가설을 채택합니다. 즉 자료가 정규성을 크게 벗어났다고 보기 어렵다.
8. 등분산성은 파이썬스크립트를 이용해 아래의 코드로 확인 할 수 있습니다.
레빈 검증과 바틀렛 검증의 코드입니다.
scipy.stats.levene( idf.weight[df.group == 0], idf.weight[df.group == 1], df.weight[df.group == 2] )
scipy.stats.bartlett( idf.weight[df.group == 0], idf.weight[df.group == 1], df.weight[df.group == 2] )
댓글 없음:
댓글 쓰기