心理サイエンス基礎演習まとめ

12月18日が休校となったため,補講を行います。内容は心理サイエンス基礎演習のまとめで,来年の心理サイエンス応用演習の内容についても簡単に触れました。改めて見ると,心理サイエンス応用演習はAIやSTEM教育など,かなり高度な内容を扱っています。参加するのは,大変だと思いますが動画を見て興味が出た方は,ぜひチャレンジしてみてください。

上記の動画を見た感想と,授業を通した感想をリアクションのページから,1月29日までに登録してください。リアクションの登録をもって,出席とカウントします。

STEM教育まとめ

授業で扱った「生体計測をテーマにしたSTEM教育」について,どのようなことを行なってきたのかを以下の動画にまとめましたので,少々長いですがご覧ください。

「生体計測をテーマにしたSTEM教育」についてのアンケート調査にご協力ください。回答は2024年1月29日の深夜までにお願いします。今回の授業に関しては,このアンケート調査への回答を持って出席とします。皆さんお忙しいところすみませんが,よろしくお願いいたします。

公認心理師特講(実験・感情)

公認心理師特講(実験/感情)
 事前に提示していた課題に関し、解説動画を用意しましたのでご覧ください。また、動画で使用されている資料をPDFで用意したため、必要に応じてご利用ください。

訂正:動画中で、Barretの神経生物学的状態(コア・アフェクト)に関する解説部分が「感情の社会的構成主義説」となっていますが、正しくは「感情の心理的構成主義説」ですのでご注意ください。

リアクションの提出
 こちらのリンクから本日を含む3日以内にリアクションを登録してください(リアクションには、動画を見て、考えたこと、感じたことをお書き下さい。リアクションは出欠記録を兼ねており、かつ成績評価の対象となることにご留意ください)。

23心理サイエンス基礎演習Ⅱ

授業の目的
本演習は心理学における実験研究に有用な、様々なテクニックを身につけることを目的とする。具体的には、従来の心理学に、プログラミング、CG、VR、電子工学、デジタルファブリケーション等の技術を組み合わせ、独創性の高い研究を実施する力を養う。

到達目標
1.プログラミングやデジタルファブリケーション、CGなどに関する各種ソフトウェア等に触れ、それらの技術を応用した実験刺激を作製できるようになる。
2.上記のスキルをベースに独自の研究アイデアを発案、他者にわかりやすく伝えることができるようになる。

授業コンテンツ
ガイダンス
VRゴーグルの使い方を知る
UnityでVRを使う
3Dプリンタの使い方を学ぶ
3Dデータの作成方法を学ぶ
Arduino入門(1)
Arduino入門(2)

TPSを作ってみる(2) 2023

TPSゲームを作ってみる2
 今日は先週に続いて、TPSでゲームっぽいものを作り込んでみましょう。
1.敵キャラに個性をつける、2.プロップ(小物)を設定する、3.爆弾をセット
の順番で参ります。課題がたまる時期なので、とりあえず動画を見て、できそうなところまでやっていただければOKです。もちろん、Unityを身に着けたいのであれば、全部やったほうがベターですが。でも夏休みにゆっくり、じっくりやるのでも良い気がします。必要なスクリプト等は下記リンクから入手してください。

リアクションの記入
 課題が終わった方は、下記リンクより、授業配信日を含め3日以内にリアクションを登録してください。ファイル等を送っていただく必要はありません。
心理サイエンス基礎演習2リアクション

1週間ぶんのHRを取得する

計測したデータはすべてクラウド上に上がっているので、1週間ぶんのデータを取得することも可能です。おおまかな手順は下記の動画をご覧ください。

下記スクリプトは、指定した日付から遡って3日ぶんのHRを取得するスクリプトです。

#getWeekHR.py
import sys
import fitbit
import gather_keys_oauth2 as Oauth2
from datetime import datetime, date, timedelta
    
print('Hello FitbitAPP4') 
USER_ID     = ""; CLIENT_SECRET = ""
    
def requestFitbit(DATE):
    rval=""
    global auth2_client,USER_ID 
   
    fitbit_stats = auth2_client.intraday_time_series('activities/heart', DATE, detail_level='1min')
    HRstats = fitbit_stats['activities-heart-intraday']['dataset']
      
    OUTPUT_FILE = USER_ID+"_HR.csv"
    csv_file = open(OUTPUT_FILE, 'a')
     
    csv_file.write(DATE+",")
    for num1 in range(24):
        for num2 in range(60):
            key='{:02}'.format(num1)+':{:02}'.format(num2)+':00'
            hr=""
            for var in range(0, len(HRstats)):
                if str(HRstats[var]['time']) == key:
                    hr=str(HRstats[var]['value'])
                    break
            csv_file.write(hr)
            csv_file.write(",")              
               
    csv_file.write("\n")
    csv_file.close()
    return rval
##################################################
   
def writeindex():    
    global USER_ID 
    OUTPUT_FILE = USER_ID+"_HR.csv"
    csv_file = open(OUTPUT_FILE, 'a')
       
    csv_file.write(",")
    for num1 in range(24):
        for num2 in range(60):
            key='{:02}'.format(num1)+':{:02}'.format(num2)+':00'
            csv_file.write(key)
            csv_file.write(",")              
               
    csv_file.write("\n")
    csv_file.close()
##################################################
   
"""Get tokens"""
server = Oauth2.OAuth2Server(USER_ID, CLIENT_SECRET)
server.browser_authorize()
ACCESS_TOKEN = str(server.fitbit.client.session.token['access_token'])
REFRESH_TOKEN = str(server.fitbit.client.session.token['refresh_token'])
    
"""Authorization"""
auth2_client = fitbit.Fitbit(USER_ID, CLIENT_SECRET, oauth2=True, access_token=ACCESS_TOKEN, refresh_token=REFRESH_TOKEN)
    
"""request"""
   
writeindex()
today=date(2023, 6, 26)
for var in range(0, 3):
    stamp=datetime.strftime(today - timedelta(days=var), '%Y-%m-%d')
    print("target: " + stamp)
    requestFitbit(stamp)

無事に実行されると、「ID_HR.csv」のようなファイル名のデータが作成されます。エクセルで開くと、下記のような構造になっています。60(分)✕24(時間)=1440個のデータが3日ぶん格納されていることがわかります。

一週間ぶんのHRを取得して、平均HRのグラフをエクセルで書いてみましょう。

取得したFitbitデータをグラフ化する

出力されたHRに関するデータ「HR_2023-06-26.csv」をPythonでグラフ化してみましょう。大まかな手順は下記の動画をご覧ください。

ChatGPTに、データのグラフ化を行うPythonスクリプト作成を依頼します。

00:00:00,74
00:01:00,64
00:02:00,63
00:03:00,65
00:04:00,65
00:05:00,62
00:06:00,65
00:07:00,63
00:08:00,66
00:09:00,65
00:10:00,65
00:11:00,67
00:12:00,66
00:13:00,66
00:14:00,69
00:15:00,72
00:16:00,73
00:17:00,69
00:18:00,67

上記のデータはHH:MM:SS形式で指定された各時刻の心拍数です。このデータの名前は、「HR_2023-06-26.csv」です。このデータを読み込んで、グラフ化するPythonスクリプトを書いてください。

データを扱うスクリプトを作成するときは、上記のように、サンプルを与えてやるとそれに合わせたスクリプトを作成してくれます。上記プロンプトをお黒と、ChatGPTが下記のようなスクリプトを作成してくれます。

import pandas as pd
import matplotlib.pyplot as plt

# データを読み込む
data = pd.read_csv('HR_2023-06-26.csv', header=None, names=['Time', 'HeartRate'])

# 時刻データを正しいフォーマットに変換
data['Time'] = pd.to_datetime(data['Time'], format='%H:%M:%S')

# グラフを描画
plt.plot(data['Time'], data['HeartRate'])
plt.xlabel('Time')
plt.ylabel('Heart Rate')
plt.title('Heart Rate Variation')
plt.xticks(rotation=45)
plt.show()


このスクリプトは、pandasとmatplotlibというライブラリを使っているようなので、ライブラリのインストール方法も聞きましょう。

上記のスクリプト実行に必要なライブラリのインストール方法を教えてください.

返答は下記のとおりです。

pip install pandas matplotlib

では、上記で作成されたPythonスクリプトを、plotHR.pyという名前で保存し、実行してみましょう。すると、下記のようなグラフが作成されるはずです。

このようにして、日本語で指示(プロンプト)を与えることで、各種の目的に応じたPythonスクリプトを作成可能です。ChatGPTが記述したスクリプトの意味がわからない場合は、それを「ここの処理どういう意味?」と質問することで、より深く学習可能です。