어떤 연구자들이 아동과 성인을 위한 최적의 젓가락 길이를 찾아 나섰다. 그들은 젓가락 한 벌이 얼마나 효과적으로 쓰였는지의 척도로 “음식 집어들기 성능”이란 것을 생각해냈다. 젓가락으로 땅콩을 집어서 컵 안에 넣은 개수를 세어서 측정했다. 우리는 얼마나 긴 젓가락을 사용해야 할까?
31명의 남자 대학생과 21명의 초등학생을 대상으로 했고, 시험한 젓가락의 길이는 180, 210, 240, 270, 300, 330 mm 였다. 실험 결과 성인과 아동에게 240mm 와 180mm 길이의 젓가락이 가장 적합했다.
180mm 는 컵라면 먹을 때 공짜로 주는 젓가락보다 살짝 짧고, 240mm 는 보통 식당이나 집에서 쓰는 젓가락 길이와 비슷하다. 330mm는 아무래도 너무 길다. 튀김요리 할 때나 쓰면 모를까.
이 연구의 성인 데이터셋을 살펴보자.
표 1: 31명의 데이터셋 일부
Food.Pinching.Efficiency | Individual | Chopstick.Length |
---|---|---|
19.55 | 1 | 180 |
27.24 | 2 | 180 |
28.76 | 3 | 180 |
31.19 | 4 | 180 |
21.91 | 5 | 180 |
이 실험의 독립변수는 뭘까?
Chopstick.Length
이 실험의 종속변수는 뭘까?
Food.Pinching.Efficiency
어떻게 이 종속변수가 정의되었을까?
음식 집어들기 성능은 땅콩을 집어서 컵안에 넣은 개수로 결정되기 때문에 종속변수로 삼았다.
실험 설명과 데이터셋에 기반하여, 통제 변인 두 개를 나열하면?
실험 참여자의 나이와 성별이 통제되었다.
IPython notebook을 사용하면 코드와 데이터 분석 내용을 문서로 한데 버무릴 수 있어서 좋다. 코멘트, 코드 블럭, 마크다운만으로도 풍성하게 문서를 꾸밀 수 있고, 플러그인을 추가하면 슬라이드나 다른 부가 기능도 사용할 수 있다.
우선 다운받은 데이터넷을 읽어서 판다스 데이터프레임에 넣어보자.
import pandas as pd
path = r'~/Downloads/chopstick-effectiveness.csv'
dataFrame = pd.read_csv(path)
31명의 실험 참여자들의 “Food.Pinching.Efficiency”를 평균낸 값을 계산해보자.
dataFrame['Food.Pinching.Efficiency'].mean()
25.00559139784947
평균값은 알았지만, 어떤 젓가락 길이가 음식을 집는데 유리했는지 말해주진 않는다. 젓가락 길이로 데이터를 쪼개고, 젓가락 길이별 Food.Pinching.Efficiency를 구해보자.
meansByChopstickLength = dataFrame.groupby('Chopstick.Length')['Food.Pinching.Efficiency'].mean().reset_index()
meansByChopstickLength
# reset_index() changes Chopstick.Length from an index to column. Instead of the index being the length of the chopsticks, the index is the row numbers 0, 1, 2, 3, 4, 5.
표 2: 젓가락 길이 별 음식집기효율
Chopstick.Length | Food.Pinching.Efficiency | |
---|---|---|
0 | 180 | 24.935161 |
1 | 210 | 25.483871 |
2 | 240 | 26.322903 |
3 | 270 | 24.323871 |
4 | 300 | 24.968065 |
5 | 330 | 23.999677 |
어떤 길이의 젓가락이 31명의 남자 대학생들에게 가장 적합했을까?
# Causes plots to display within the notebook rather than in a new window
%pylab inline
import matplotlib.pyplot as plt
plt.scatter(x=meansByChopstickLength['Chopstick.Length'],
y=meansByChopstickLength['Food.Pinching.Efficiency'])
plt.xlabel("Length in mm")
plt.ylabel("Efficiency in PPPC")
plt.title("Average Food Pinching Efficiency by Chopstick Length")
plt.show()
위 산점도로 어떤 관계가 보이나?
젓가락 길이에 따라 음식집기 효율에 큰 차이가 난다. 그래프를 보면 240mm가 가장 효과적인 젓가락 길이임을 알 수 있다. 두번째로 효과적인 길이는 210mm 이다.
이 연구 결과는 음식을 집어드는데 젓가락 길이가 큰 영향을 준다고 했고, 240mm 가 성인을 위한 최적의 길이라고 결론 내렸다. 아주 간단한 분석이긴 하지만, 나도 240mm가 적절한 길이라고 생각한다.
손의 길이를 변수로 추가한다면 독립변수로 넣어야 할까? 종속변수로 넣어야 할까? 아님 아예 추가할 필요가 없을까?