どうやって実装したもんかな、と思っていたが、Pythonでロジックをそのまま書かなくても、RのオブジェクトをPythonで利用すれば良いので、以下でひとまずイケるっぽい。
#!/usr/bin/env python3.11
# -*- coding: utf-8 -*-
import os
import sys
while True:
try:
import rpy2
import rpy2.robjects as robjects
from rpy2.robjects.packages import importr
from rpy2.robjects.vectors import StrVector
break
except:
os.system(f"{sys.executable} -m pip install rpy2")
# Rのパッケージをインポート
agricolae = importr('agricolae')
# データを準備
y = robjects.FloatVector([1.83, 1.83, 1.83, 2.04, 2.04, 2.04, 2.24, 2.24, 2.24])
trt = robjects.FactorVector(StrVector(['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C']))
# データをRの環境に割り当て
robjects.globalenv['y'] = y
robjects.globalenv['trt'] = trt
# 分散分析を実行
model = robjects.r('aov(y ~ trt)')
# Duncanの新しい多重範囲検定を実行
duncan_result = agricolae.duncan_test(model, "trt", main="Example")
# 結果を表示
print(duncan_result)
ほんま、Pythonは何でもあるなぁ…。