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( )も使えます)
• 無償で実験から分析までできるのはヤバすぎてヤバい

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