통계분석, 머신러닝을 이용한 데이터 분석

최적의 젓가락 길이를 찾아서

26 Aug 2016

어떤 연구자들이 아동과 성인을 위한 최적의 젓가락 길이를 찾아 나섰다. 그들은 젓가락 한 벌이 얼마나 효과적으로 쓰였는지의 척도로 “음식 집어들기 성능”이란 것을 생각해냈다. 젓가락으로 땅콩을 집어서 컵 안에 넣은 개수를 세어서 측정했다. 우리는 얼마나 긴 젓가락을 사용해야 할까?

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()

image alt text

위 산점도로 어떤 관계가 보이나?

젓가락 길이에 따라 음식집기 효율에 큰 차이가 난다. 그래프를 보면 240mm가 가장 효과적인 젓가락 길이임을 알 수 있다. 두번째로 효과적인 길이는 210mm 이다.

이 연구 결과는 음식을 집어드는데 젓가락 길이가 큰 영향을 준다고 했고, 240mm 가 성인을 위한 최적의 길이라고 결론 내렸다. 아주 간단한 분석이긴 하지만, 나도 240mm가 적절한 길이라고 생각한다.

손의 길이를 변수로 추가한다면 독립변수로 넣어야 할까? 종속변수로 넣어야 할까? 아님 아예 추가할 필요가 없을까?

comments powered by Disqus