Skip to contents

あなたが統計解析を行う作業領域と、AIエージェントがアクセスする領域を、簡単に分けたいと思ったことはありませんか?あるいは、RStudioとChatGPTを何度も往復する作業に疲れていませんか?このサイトでは、AI支援型Rワークフローを紹介しています。

フォルダ構造を整えるだけで

  • AIエージェントがワークフローとコンテキストを理解しやすくなり、
  • AIのアクセス権限をユーザーが管理しやすくなり、
  • 決まった場所に品質管理結果やログが残るようになる
# パッケージを読み込んで、パスを指定するだけ
library(airsetup)
airsetup("C:/demo")
`airsetup()`が生成するフォルダ構造

重要なのは、AIにいきなり解析を頼まないことです。このワークフローはいくつかのシンプルな原則に従っています。

  • AIエージェントとRStudioの作業空間を分離する
  • プランニングとコーディングを分離する
  • 統計解析ワークフローに品質管理(QC)を組み込む
  • 統計解析ワークフローの作業記録を支援する
  • ユーザーは意思決定、結果解釈、アウトプットについて責任を持つ

これから紹介するairsetupパッケージは、AIエージェントが支援するRワークフローのためのフォルダを生成します。統計解析のための関数は提供されませんが、その代わりフォルダ構造、最小限のAGENTS.mdQC_STATUS.mdトラッカー、そしてオプションとしてQCスキルテンプレートが用意されています。

Rコードの正確性を確認し、QCを行う方法は1つではありません。あるプロジェクトではダブルプログラミングを採用するかもしれませんし、別のプロジェクトでは目視チェックを行うかもしれません。AI & Rワークフローにおける自己QCを支援するために、CONTEXT QC、PLAN QC、SAP QC、RESULT QC、M11 SEMANTIC QCの5種類の軽量なQCスキルテンプレートを利用できます。

チュートリアル1. セットアップ

3つのチュートリアルに従って、AI & Rワークフローを体験してみてください。最初のチュートリアルでは、AIエージェントにタスクを依頼する前の環境設定までを扱います。ここではCodexアプリを用いていますが、AIエージェントツールに関する制約は特にありません。

ステップ1. R、RStudio、airsetupパッケージ、Codexアプリをインストール

  • R本体をインストール
  • RStudioインストーラーをPositサイトからダウンロード
  • CodexアプリインストーラーをOpenAIサイトからダウンロード
  • airsetupパッケージをGitHubからインストール
# install.packages("pak")
pak::pak("gestimation/airsetup")

ステップ2. プロジェクトフォルダ作成(airsetup)

  • airsetup()を実行してフォルダとマークダウンファイルを作成する
    • AGENTS.md
    • QC_STATUS.md
  • AGENTS.mdを通じて、AI作業領域とR作業領域を分離し、品質管理を行うようにAIに指示する
library(airsetup)

root_dir <- "C:/demo"
airsetup(root_dir)
AIエージェントとRStudioの作業空間
AIエージェントとRStudioの作業空間

ステップ3. ダミーデータ・コンテキスト情報の準備

  • R実行用の実データとは別に、AIがアクセスできるダミーデータを用意します
  • AIに参照させる統計解析に関連する資料を用意します。研究計画書やデータベース定義書はコンテキストとして与えた方がよいでしょう

チュートリアル2. プランニング

二つ目のチュートリアルでは、実際にCodexに指示を与えて、統計解析やRコード作成の計画を立てさせます。これ以降はデモ専用の関数airsetup_demo()を用いて、airsetupパッケージに含まれているprostateデータを解析します。ステップ1では、既存のプロジェクトフォルダがあれば、その中にデモ用のファイル一式を追加します。

ステップ1. プロジェクトフォルダへのファイル格納

  • AIがアクセスできるダミーデータとR実行用データを、対応するフォルダ構造に配置する
  • このデモでは、ダミーデータとして、prostateデータから抽出した最初の3行を用いる
  • コンテキストとしてprostate.Rdの情報を用いる
  • 以下のRコードによって、コンテキスト・ダミーデータ・実データがプロジェクトフォルダに格納されるはずである

# データの冒頭と構造を確認
data(prostate, package = "airsetup")
head(prostate)
str(prostate)

# フォルダ作成・ファイル格納(コンテキスト・ダミーデータ・実データ)
root_dir <- "C:/demo"
airsetup_demo(root_dir)

ステップ2. Codexプロジェクトの開始

Codexのインターフェース
Codexのインターフェース
  • Codexを起動し、プロジェクトフォルダとしてai_projectフォルダを指定する
  • Codexにプロンプトを入力する
プロンプト「ai_projectフォルダ内のファイルを確認してください」

ステップ3. ユーザーとCodexによるコーディングプランの確認

  • Codexにプロンプトを入力する
  • Rスクリプトのコーディングプランを立てさせ、チャットを通じてプランが適切かどうか確認する
  • 確認して問題がなければ、承認し、コーディングに進む
プロンプト「demodata.rds、definition_demodata.txtを参照してください。
この解析は、アウトカムであるがん死亡を、累積発生曲線を用いて記述することが
目的です。関心イベントはがん死亡です。がん死亡以外の死亡は競合リスクとして
扱います。イベント変数 epsilon のコーディングは、0 = alive/censored、1 = cancer death、
2 = non-cancer deathの予定です。治療ごとにデータを記述してください。ランダム化・
epsilonの内訳を表すフローチャートと累積発生曲線がアウトプットです。フローチャートの
推定方法は、https://gestimation.github.io/cifmodeling/reference/cifflowchart.htmlを
参考にしてください。累積発生曲線の推定方法は、
https://gestimation.github.io/cifmodeling/reference/cifplot.htmlを参考にしてください。
まずCONTEXT QCを使い、コンテキストがRコード作成に進めるほど明確か評価してください」
プロンプト「QCの結果を踏まえて、Rスクリプトのコーディングプランを立ててください」
プロンプト「QCスキルを使い、コーディングプランを評価してください」

チュートリアル3. コーディング

三つ目のチュートリアルでは、先ほどCodexが立て、あなたが承認したコーディングプランに従って、実データを用いた解析結果を出力するためのRスクリプトをCodexに書かせます。

ステップ1. CodexによるRコード作成とQC

  • Codexにプロンプトを入力する
  • Rスクリプトをコーディングさせ、必要に応じてチャットで質問を行い、正しいかどうか確認する
プロンプト「Rスクリプトを書いてください。AI確認用ダミーデータ用のRスクリプトと
R実行用のRスクリプトの両方が必要です。RStudioの作業ディレクトリに注意してください。
手動で指定する必要がない方が望ましいです」

ステップ2. RStudioによるR実行

RStudioのインターフェース
RStudioのインターフェース
  • ai_outputフォルダに生成されたRスクリプトをRStudioに読み込ませて、実行する
  • RStudioの作業ディレクトリに注意すること。作業ディレクトリに依存するコードは、環境によって動かないことがある
  • その場合は、入力するデータセットの場所を指定すると解決するかもしれない(YYYYMMDDは実行日に置き換える)
options(DEMODATA_RDS = "C:/demo/r_project/ai_hidden_data/initial_YYYYMMDD/demodata.rds")
  • または、作業ディレクトリを手動で設定することもできる
setwd("C:/demo/r_project/ai_hidden_data")

ステップ3. ユーザーとCodexによる結果の確認

  • r_outputフォルダに生成された図を確認する
  • Codexのサポートを受けながら、解析結果が正しいか最終レビューを行う
期待される解析結果(フローチャート、指示によってはグループ別の結果が生成されることもある)
期待される解析結果(フローチャート、指示によってはグループ別の結果が生成されることもある)
期待される解析結果(累積発生曲線)
期待される解析結果(累積発生曲線)

最後に

airsetupパッケージはGitHubからインストールできます。

# install.packages("pak")
pak::pak("gestimation/airsetup")

このパッケージはまだアルファ版のためCRANに提出していませんが、testthatを用いた100件以上のテストに合格しています。airsetup()を実行した結果、指定したパス以外に影響を与えることはありません。

airsetup_demo()を用いたこのチュートリアルでは、オプションのQCスキルテンプレートがagent_control/フォルダ内に生成されています。プロンプトで「QCスキル」と指示することで、より質の高い確認作業を行うことができます。

  • QC_SKILL_CONTEXT.md: 計画のドラフトやRコード作成に先立って、コンテキスト情報が明確かどうかを確認します
  • QC_SKILL_PLAN.md: 一般的なコーディング計画または解析仕様が、Rで実装するためにじゅうぶんな情報を持っているかどうかを確認します。
  • QC_SKILL_SAP.md: 55項目のSAPチェックリスト要約と、ICH M11・E9(R1)を参照枠とした補足を用いて、臨床試験SAPを根拠に基づいて確認します。M11SEMANTIC_MAP.mdは利用可能な場合に参照しますが、必須ではありません。
  • QC_SKILL_RESULT.md: 解析結果が内部的に一貫しており、計画に沿ったもので、安全に解釈できるかどうかを確認します
  • QC_SKILL_M11SEMANTIC.md: Rの計画やRコード作成に先立って、解析上重要な意味情報を根拠に基づいて整理します。CONTEXT QCではなく、M11/電子プロトコール関連のタスク、または複雑な臨床試験資料の意味情報の整理に使用してください。

スキルの選び方、判定規則、出力形式、具体的な依頼例については、airsetup QCスキル ユーザーガイドを参照してください。

もし、AIがこのワークフローの中でどのようにふるまうのかに興味を持たれたなら、airsetup_demo()で生成されるAGENTS.md、フォルダ構造、コンテキスト資料をご覧ください。