はじめに
ベイズ統計学の基礎をあらためて学ぶために,ピーター・D・ホフ 著,入江 薫・菅澤 翔之助・橋本 真太郎 訳 「標準 ベイズ統計学」を読むことにした。
本記事では,第8.3節を題材とした,RのサンプルデータをPythonで使う方法をまとめた。
本記事のハイライト
- 「標準 ベイズ統計学」のサンプルデータのありかを説明した。
- RのサンプルコードをPythonで移植する際に利用する,.RDataや.rdaファイルを読み込むためのパッケージを紹介した。
第8章 グループ比較と階層モデリング
データを探せ!~「標準ベイズ統計学」のサンプルデータ~
「標準 ベイズ統計学」を読み進めていると,サンプルコードが出てくる。
サンプルコードがあると,数式をプログラムに実装するための方法もわかるし,細かな挙動が分かるので理解が深まる。
「標準 ベイズ統計学」の紹介ページを見ていると,「関連情報」に『標準ベイズ統計学』原著者サポートサイトのリンクがあり,これをクリックすると原著である"A First Course in Bayesian Statistical Methods"へのリンクが貼られている。

原著のサポートサイトを見ると,
という2つのリンクがあり,ここにサンプルコードやデータが保管されていた。
本書中に書かれているサンプルコードは,Data and code to replicate figures and numerical results の方に書かれている。
しかしコードを細かく見ていると,Chapter8.Rの115~118行目を見ていると,
#### Put data into list form. This is different from in the book. Y<-list() YM<-NULL J<-max(Y.school.mathscore[,1])
のように,急にY.school.mathscoreというデータが出てきた。
どのデータなのかよくわからず,いろいろ探していたところ,もう1つのリンクであるData and code for inline examples において,Y.school.mathscoreというデータがあった。
そのため,本書のサンプルコードを読んでいて,よくわからないデータが出てきたら,サポートサイトのリンクを細かく探してみることが重要だと気付いた。
学校データを探す
8.4節では,上記のY.school.mathscore を使うことになる。この内容を確認すると,以下のようなテキストデータになっていた。

テキストでは書かれているものの,Pythonで扱えるようにするためには,数値データや列名を読み解き,pandas.DataFrameやnumpy.arrayで扱えるように整形する必要がある。
上記のデータを整形するためのコードを,生成AIと相談しながら作成した。なおY.school.mathscoreは,ダウンロードした後に拡張しを追加して,Y.school.mathscore.txt にファイル名を変更した。
上記のサンプルコードでは,
- 元データのうち,
scool列は整数型なので,整数に変換した。 - 後で使いやすくするよう,元のデータを"Y_school_mathscore.csv" という名称のCSVファイルにした。
のような処理を行なっている。
RのデータをPythonで使う
Rで書かれたサンプルコードを扱っていると,入力データの拡張子が.RDataや.rdaのような,R用のデータの拡張子になっていることがある。
.csvや.txtであればPythonでもすぐに扱えるが,これらR用のデータの拡張子ではひと工夫がいる。
このような場合には,
を用いればよい。
これらのパッケージの利用方法は,以下の過去記事にサンプルコードを示した。
rdataの利用例
import rdata parsed = rdata.parser.parse_file('/content/drive/My Drive/Colab Notebooks/StatModeling/Y.RData') converted = rdata.conversion.convert(parsed) print(converted) import pandas as pd d = pd.DataFrame(converted)
pyreadrの利用例
# ============================================ # データの読み込み # ============================================ # KFASパッケージのboatデータ # https://github.com/helske/KFAS/blob/main/data/boat.rda をダウンロードする import pyreadr result = pyreadr.read_r("boat.rda") print(result.keys()) boat = result["boat"] print(boat.head())
まとめと感想
本記事では,第8.3節を題材とした,RのサンプルデータをPythonで使う方法をまとめた。
サンプルコードとサンプルデータの場所は,見つけてしまえばわかりやすいのだが,見つけるまでが大変だったので,今回記事にまとめてみた。
本書を読み,サンプルコードを動かしてみたい方の参考になれば幸いである。
またCSVやTXTデータを整形することは,元のデータ形式にもよるのでその都度対応することになるが,生成AIを上手く使えばデータ整形もしやすかった。
RのサンプルコードをPythonで変換する作業は,計算手順を理解するうえで重要だと感じているが,.RDataファイルなど使い方に習熟すれば,一層便利になると感じた。
本記事を最後まで読んでくださり,どうもありがとうございました。