jiku log

データサイエンスの核心を掴む : 学びと発見の記録

RのサンプルデータをPythonで使う ~標準ベイズ統計学 第8.3節を題材として~

はじめに

ベイズ統計学の基礎をあらためて学ぶために,ピーター・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.DataFramenumpy.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ファイルなど使い方に習熟すれば,一層便利になると感じた。


本記事を最後まで読んでくださり,どうもありがとうございました。