Download - PypeRで実験と分析を一本化する
PypeRで実験と分析を一本化する
広島大学大学院 教育学研究科
山根 嵩史
2016.05.28 Hijiyama.R #4
PythonとR
とは...
• 強力かつ高速な汎用プログラミング言語 • 無償+オープンソース • 何でもできるが,心理学の分野では主に実験制御に使われる
とは...
• 統計処理を目的とするプログラミング言語
• 無償+オープンソース
• データ処理・統計処理に関してはだいたい何でもできる データ整形,広範&高度な統計処理,作図 etc…
PypeRとは • Python とR をpypeするから“PypeR” • 要するに,Python上でRを走らせちゃおうぜ!というパッケージ • Python で実験制御 + R でデータ整形・解析 という環境が実現
実験と分析が 両方そなわり 最強に見える
3秒で分かるPypeR
ここにPythonとRの コードがあるじゃろ? ( ^ω^) ⊃Python R⊂
こうじゃ ( ^ω^) ⊃pyper.R(“Rcode”)⊂
これをこうして... ( ^ω^) ≡⊃⊂ ≡
(にわかPythonユーザなので) PsychoPy使いまーす
• Python言語をベースとした心理実験用のアプリケーション • 無償+オープンソース • 強力なGUIも備えており,直感的に心理実験を組み立てることができる
PsychoPy とは...
(にわかPythonユーザなので) PsychoPy使いまーす
• PsychoPyについては 『PsychoPy講座』 (http://ogwlab.org/?page_id=460)
『PsychoPy Builderで作る心理学実験』 (http://www.s12600.net/psy/python/ppb/index.html)
にて詳しく説明されています
• なお,PsychoPyにPypeRをインストールするのはちょっと手間なので
『【python】PsychoPyからRを使う』 (http://tyamane1969.net/?p=136) の記事を参考にしてください
PsychoPy とは...
PsychoPy CoderでRを動かす
import pyper r=pyper.R() r("dat1<-‐c(1:10)") r("dat2<-‐c(10:20)") print r("t.test(dat1,dat2)")
⇦ PypeRパッケージをインポート
⇦ pyper.Rの入力を簡略化
⇦ “ ”の内部にRのコマンド 今回は2つのベクトルを作成し t検定を実施
• PsychoPy Coderで以下のコマンドを実行
もうちょっと高度なことをする
import pyper import numpy as np
r=pyper.R()
data1 = np.array([[1,2,3,4,5],[0.5,1.5,2.5,3.5,4.5]])
r.assign("dat",data1) print r("dat")
r("setwd('C:/temp')")
print r("mean(dat[1,])") print r("mean(dat[2,])")
r("png('plot1.png')") r("plot(dat[1,])") r("dev.off()")
numpyパッケージを使って
⇦ Python側で行列を作成
⇦ r.assign( )でRにデータを渡す
⇦ R側で関数を適用
• Pythonで作ったデータをRに渡す pyper.R.assign( ) • Rで解析した結果をPythonに返す pyper.R.get( )
⇦ R側でグラフを作成し,保存 ※グラフウィンドウが出ないため 保存が必要。要検討
こんなこともできます
• PsychoPy Builderで作った実験にRコードを追記して ①実験を行う度にデータセットを更新し ②検定とグラフの出力を行う ようにセッティング
Pythonの実験結果からRTを抽出し,assignでRに渡す
これまでの実験データをRで呼び出し 渡されたデータを追加して更新
検定と結果の出力
Figureの作図と保存
こんなこともできます
• 実験を走らせるだけで検定結果とグラフが出力される
実験する
分析
まとめ
• 実験と分析が一本化できたら便利だと思った(けど毎回分析を
走らせる必要性は無いかも)
• ロング型の煩雑なデータが出力されるような実験で,すぐにRにデータを渡して整形・分析したりできる
• Rには高度な統計技術の蓄積があるので,それらをPythonで
使えるのは強み(もちろんlibrary( )やsource( )も使えます)
• 無償で実験から分析までできるのはヤバすぎてヤバい