pyperで実験と分析を一本化する

11
PypeRで実験と分析を 一本化する 広島大学大学院 教育学研究科 山根 嵩史 2016.05.28 Hijiyama.R #4

Upload: takashi-yamane

Post on 08-Feb-2017

1.112 views

Category:

Data & Analytics


1 download

TRANSCRIPT

Page 1: PypeRで実験と分析を一本化する

PypeRで実験と分析を一本化する

広島大学大学院 教育学研究科

山根 嵩史

2016.05.28 Hijiyama.R #4

Page 2: PypeRで実験と分析を一本化する

PythonとR

とは...

• 強力かつ高速な汎用プログラミング言語 • 無償+オープンソース • 何でもできるが,心理学の分野では主に実験制御に使われる

とは...

• 統計処理を目的とするプログラミング言語

• 無償+オープンソース

• データ処理・統計処理に関してはだいたい何でもできる  データ整形,広範&高度な統計処理,作図 etc…

Page 3: PypeRで実験と分析を一本化する

PypeRとは • Python   とR  をpypeするから“PypeR” • 要するに,Python上でRを走らせちゃおうぜ!というパッケージ • Python で実験制御 + R でデータ整形・解析 という環境が実現

実験と分析が 両方そなわり 最強に見える

Page 4: PypeRで実験と分析を一本化する

3秒で分かるPypeR

ここにPythonとRの  コードがあるじゃろ?    (  ^ω^)     ⊃Python R⊂

こうじゃ    (  ^ω^)     ⊃pyper.R(“Rcode”)⊂

これをこうして...      (  ^ω^)      ≡⊃⊂ ≡

Page 5: PypeRで実験と分析を一本化する

(にわかPythonユーザなので)  PsychoPy使いまーす

• Python言語をベースとした心理実験用のアプリケーション • 無償+オープンソース • 強力なGUIも備えており,直感的に心理実験を組み立てることができる

PsychoPy とは...

Page 6: PypeRで実験と分析を一本化する

(にわか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 とは...

Page 7: PypeRで実験と分析を一本化する

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で以下のコマンドを実行

Page 8: PypeRで実験と分析を一本化する

もうちょっと高度なことをする

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側でグラフを作成し,保存   ※グラフウィンドウが出ないため       保存が必要。要検討

Page 9: PypeRで実験と分析を一本化する

こんなこともできます

• PsychoPy Builderで作った実験にRコードを追記して   ①実験を行う度にデータセットを更新し   ②検定とグラフの出力を行う     ようにセッティング

Pythonの実験結果からRTを抽出し,assignでRに渡す

これまでの実験データをRで呼び出し  渡されたデータを追加して更新

検定と結果の出力

Figureの作図と保存

Page 10: PypeRで実験と分析を一本化する

こんなこともできます

• 実験を走らせるだけで検定結果とグラフが出力される

実験する

分析

Page 11: PypeRで実験と分析を一本化する

まとめ

• 実験と分析が一本化できたら便利だと思った(けど毎回分析を

走らせる必要性は無いかも)

• ロング型の煩雑なデータが出力されるような実験で,すぐにRにデータを渡して整形・分析したりできる

• Rには高度な統計技術の蓄積があるので,それらをPythonで

使えるのは強み(もちろんlibrary( )やsource( )も使えます)

• 無償で実験から分析までできるのはヤバすぎてヤバい