[Python] [데이터가 보이지 않는 손] OuraRing에서 mets를 얻고 U 분포를 따르는지 조사해 보았습니다.
개요
데이터가 보이지 않는 손에 따르면 인간의 신체 활동은 특정 규칙에 따라 분배됩니다.
출처 데이터가 보이지 않는 손
이 그래프는
그래서 그릴 수 있습니다.
여기에서 알 수있는 것은
예를 들어, 어느 일이 60~120회/분의 운동량이라고 하면,
그 일은 하루 동안 1/4 분의 시간 만 소비 할 수 있습니다 (더 많은 시간, 그 일은 열심히 할 수 없습니다)
라는 것
글쎄, 재미 있다고 생각하고 OuraRing 이것과 비슷한 것을 시도했습니다.
OuraRing에서 Mets 얻기
데이터가 보이지 않는 손에서는 가속도 센서로 움직임을 사용했습니다.
자신이 소유하고 있는 OuraRing에서는 Mets라는 값을 취할 수 있으므로, 이것으로 대용한다
OuraRing API를 사용하여 Mets 가져 오기
OuraAPI를 사용하는 방법은 이 기사입니다.
sample.pyimport requests
import json
import os
import datetime
import collections
import pprint
BASE_URL = "https://api.ouraring.com/v1/"
TOKEN = "access_token=" + str(os.environ.get("OURA_TOKEN"))
def create_date_str(weeks_offset=0):
today = datetime.datetime.today()
target_date = today - datetime.timedelta(days=1,
weeks=weeks_offset)
return target_date.strftime("%Y-%m-%d")
def create_url(weeks_offset=0):
end_date = create_date_str(weeks_offset)
start_date = create_date_str(weeks_offset+1)
url = f"{BASE_URL}activity?start={start_date}&end={end_date}&{TOKEN}"
return url
if __name__ == "__main__":
headers = {"content-type": "application/json"}
mets_counter = collections.Counter()
for week_offset in range(5):
responce = requests.get(create_url(week_offset), headers=headers)
data = responce.json()
for activity in data["activity"]:
mets_counter.update(activity["met_1min"])
total_num = sum(mets_counter.values())
for mets,count in mets_counter.items():
mets_counter[mets] = count/total_num
with open("mets.txt","w") as f:
for mets,probability in mets_counter.items():
f.write(f"{mets}\t{probability}\n")
htps : // 기주 b. 코 m/보 x16/오우라_아피
mets를 얻는 url은https://api.ouraring.com/v1/activity?start=YYYY-MM-DD&end=YYYY-MM-DD&access_token=TOKEN
create_date_str
, create_url
에서 일주일마다 활동 데이터를 검색하는 URL 생성
매주 분마다 {mets : 출현 횟수} 업데이트
(상당히 데이터량이 커서 메모리 절약을 위해 필요한 만큼 세세하게 취득하고 있을 생각)
이것을 뭔가 출력합니다.
데이터 시각화
먼저 단순히 mets - 出現確率
시각화
2mets 이하의 출현 빈도가 높은 것을 알 수 있다
그런 다음 mets - 累積確率
시각화
(누적 확률은 어느 mets와 그 이전에 모든 mets의 출현 확률의 합→총합이 1)
2mets 이하로 하루의 80%를 차지함
2mets 이상은 20%
이 시점에서 mets도 U 분포를 따르는 것으로 나타났습니다.
이것을
출처 데이터가 보이지 않는 손
이 이미지처럼 보입니다.mets - (1-累積確率)
의 세로축을 로그 스케일로 만들면
Mets와 실제 운동의 끈
예를 들어,
import requests
import json
import os
import datetime
import collections
import pprint
BASE_URL = "https://api.ouraring.com/v1/"
TOKEN = "access_token=" + str(os.environ.get("OURA_TOKEN"))
def create_date_str(weeks_offset=0):
today = datetime.datetime.today()
target_date = today - datetime.timedelta(days=1,
weeks=weeks_offset)
return target_date.strftime("%Y-%m-%d")
def create_url(weeks_offset=0):
end_date = create_date_str(weeks_offset)
start_date = create_date_str(weeks_offset+1)
url = f"{BASE_URL}activity?start={start_date}&end={end_date}&{TOKEN}"
return url
if __name__ == "__main__":
headers = {"content-type": "application/json"}
mets_counter = collections.Counter()
for week_offset in range(5):
responce = requests.get(create_url(week_offset), headers=headers)
data = responce.json()
for activity in data["activity"]:
mets_counter.update(activity["met_1min"])
total_num = sum(mets_counter.values())
for mets,count in mets_counter.items():
mets_counter[mets] = count/total_num
with open("mets.txt","w") as f:
for mets,probability in mets_counter.items():
f.write(f"{mets}\t{probability}\n")
먼저 단순히
mets - 出現確率
시각화2mets 이하의 출현 빈도가 높은 것을 알 수 있다
그런 다음
mets - 累積確率
시각화(누적 확률은 어느 mets와 그 이전에 모든 mets의 출현 확률의 합→총합이 1)
2mets 이하로 하루의 80%를 차지함
2mets 이상은 20%
이 시점에서 mets도 U 분포를 따르는 것으로 나타났습니다.
이것을
출처 데이터가 보이지 않는 손
이 이미지처럼 보입니다.
mets - (1-累積確率)
의 세로축을 로그 스케일로 만들면Mets와 실제 운동의 끈
예를 들어,
어떤
데이터가 보이지 않는 손을 참고로 독서의 카르노 효율을 측정하면
1 - 1/1.8 = 0.44
최대 1일의 44%(활동 시간 16시간으로 7시간 정도)까지만 읽을 수 있다
(mets로 말하면 이야기이기 때문에, 독서에 한하지 않고 1~1.8mets 정도의 활동은 하루 7시간밖에 할 수 없다)
그렇게 말할 것 같습니다.
근육 트레이닝은
에서
1 - 5.5/6 = 0.083
하루의 8% 정도(1시간 정도)가 한계
요약
데이터가 보이지 않는 손 진짜 장난 꾸러기
Reference
이 문제에 관하여([Python] [데이터가 보이지 않는 손] OuraRing에서 mets를 얻고 U 분포를 따르는지 조사해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/box16/items/5e989a89b19ed008e3f6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)