U24. 生成AIとの協働

ユニット概要

分類: 幹(導入 + 全ユニットのAフェイズにAI要素を組み込む)

依存関係: U1(Rの基礎)→ U24

使用データ: なし(AI との対話パターンを扱うため、特定のデータセットは不要)

学習目標:

  • 生成AI(LLM)の得意・不得意を理解し、適切に活用できる
  • 効果的なプロンプトを設計できる
  • AIが生成したコードや説明を批判的に検証できる
  • エラー発生時にAIへ適切に相談できる
  • AIの倫理的な利用方法を理解している

このユニットの特殊性: U24は独立したユニットであると同時に、全ユニットのAフェイズ(ランクA)の基盤となります。各ユニットのAフェイズでは「AIに的確に指示して結果を得る」ことが求められますが、その前提となるスキルをここで学びます。


事前知識: 生成AIとRプログラミング

生成AI(LLM)とは

生成AIとは、大量のテキストデータから学習した大規模言語モデル(Large Language Model, LLM)を基盤としたシステムです。ユーザが入力したテキスト(プロンプト)に対して、文脈に応じたテキストを生成します。代表的なサービスには以下があります:

  • ChatGPT(OpenAI)
  • Claude(Anthropic)
  • Gemini(Google)
  • GitHub Copilot(Microsoft / GitHub)

これらはいずれもRのコード生成や質問応答に利用でき、大学生の学習支援にも有用です。ただし、それぞれの得意分野や回答の傾向が異なるため、複数のサービスを使い比べてみることも大切です。

AIが得意なこと・苦手なこと

AIを効果的に活用するには、その特性を正しく理解する必要があります。

得意なこと:

  • コード生成: 「irisデータで散布図を描いて」のような指示から、動作するRコードを生成する
  • エラー解説: エラーメッセージの意味と対処法をわかりやすく説明する
  • 概念説明: 統計手法の考え方や用語の意味を、例を交えて説明する
  • コードの整理: 煩雑なコードをきれいに書き直す(リファクタリング)
  • 文章校正: 文法の誤りや不自然な表現を指摘する
  • 翻訳: 英語のドキュメントや論文を日本語に翻訳する

苦手なこと:

  • 最新情報: 学習データの時点以降に追加・変更されたパッケージや関数について正確に回答できないことがある
  • 計算の正確さ: 四則演算や統計量の計算を間違えることがある(特に桁数が多い場合)
  • 専門的な統計判断: 「このデータにはどの検定が適切か」のような研究デザインに依存する判断は、文脈を十分に与えないと的外れになる
  • データの直接分析: AIはデータファイルを直接読み込んで分析することが基本的にできない(コードを生成するだけ)
  • 再現性: 同じ質問をしても、毎回同じ回答が返るとは限らない

プロンプトの書き方

AIに指示を出すテキストのことをプロンプトと呼びます。プロンプトの質が、AIの回答の質を大きく左右します。

効果的なプロンプトには、次の要素を含めることが重要です:

  1. 背景(コンテキスト)を与える: 自分が誰で、どのような状況にいるかを伝える
    • 例: 「Rで統計分析をしている大学3年生です」
  2. 目的を明確にする: 何を達成したいのかを具体的に述べる
    • 例: 「irisデータでSpeciesごとのSepal.Lengthの平均を比較したい」
  3. 制約を示す: 使用する道具や条件を指定する
    • 例: 「tidyverseを使って」「日本語でコメントを付けて」
  4. 期待する出力形式を指定する: 回答の形を指定する
    • 例: 「Rコードで」「表形式で」「箇条書きで」

悪いプロンプトの例

散布図を描いて

このプロンプトでは、どのデータを使うのか、どの変数を軸にするのか、どの言語・ツールを使うのかが不明です。AIは推測で回答しますが、意図と異なる結果になる可能性が高くなります。

良いプロンプトの例

Rを使って、irisデータセットのSepal.LengthをX軸、
Petal.LengthをY軸とした散布図を描きたいです。
Speciesごとに色を変えてください。
ggplot2を使い、日本語のコメントを付けてください。

背景(R、irisデータ)、目的(散布図)、制約(ggplot2、日本語コメント)、出力形式(Rコード)がすべて含まれており、AIは意図に沿った回答を返しやすくなります。

AIの出力を検証する

AIの回答は便利ですが、常に正しいとは限りません。以下の手順で検証する習慣を身につけてください:

  1. コードは必ず自分で実行する: AIが生成したコードをそのまま信用せず、実際にRで動かして結果を確認する
  2. 結果が妥当か確認する: 数値の桁や符号が正しいか、グラフの形状が期待通りか、統計量の方向が理論と合っているかを確認する
  3. 別のソースで裏を取る: 教科書、公式ドキュメント(?関数名)、信頼できるWebサイトで確認する
  4. ハルシネーションに注意する: AIが自信を持って間違えること(ハルシネーションと呼ばれる)がある。存在しない関数名やパッケージ名を提示したり、もっともらしいが誤った説明をすることがある

特に統計分析では、コードが動くことと結果が正しいことは別問題です。コードがエラーなく実行されても、分析手法の選択や解釈が間違っていることがあります。

エラー相談の方法

Rでエラーが出たとき、AIに相談するのは効果的な方法です。ただし、AIが正確に状況を把握できるよう、以下の情報を一緒に伝えてください:

  1. エラーメッセージの全文: 一部だけでなく、表示されたメッセージ全体をコピーする
  2. 実行したコード: エラーが出たコードそのものを見せる
  3. データの構造: str()head()の出力を添えると、AIがデータの状態を把握しやすい
  4. やりたかったこと: 何を目的としたコードだったのかを説明する

エラー相談のプロンプト例

Rで以下のコードを実行したところ、エラーが出ました。

コード:
df %>% group_by(Species) %>% summarise(mean = mean(Sepal.Length))

エラーメッセージ:
Error in `group_by()`:
! Must group by variables found in `.data`.
x Column `Species` is not found.

データの構造:
'data.frame':  150 obs. of  5 variables:
 $ sepal_length: num  5.1 4.9 4.7 ...
 $ sepal_width : num  3.5 3 3.2 ...
 $ petal_length: num  1.4 1.4 1.3 ...
 $ petal_width : num  0.2 0.2 0.2 ...
 $ species    : chr  "setosa" "setosa" ...

原因と修正方法を教えてください。

このように情報を揃えれば、AIは「列名がSpeciesではなくspeciesになっている」ことを即座に指摘できます。

倫理的な使い方

AIを学習や研究に活用する際には、以下の倫理的な原則を守ってください:

  1. AIの出力をそのまま提出しない: AIが生成したコードや文章を、自分の理解を経ずにそのまま提出することは、学習の目的に反します。AIの出力を理解し、自分の言葉で説明できるようにしてください
  2. AIを使ったことを明記する: レポートや論文でAIを利用した場合は、どの部分でどのように使ったかを明記してください(透明性)
  3. 個人情報や機密データをAIに送らない: 調査対象者の個人情報や研究室の未公開データをAIに送信しないでください。AIの学習データに取り込まれる可能性があります
  4. AIの回答を鵜呑みにしない: AIはもっともらしい回答を生成しますが、それが正しいかどうかは自分で判断する必要があります(批判的思考)

各ユニットのAフェイズとの関係

このU24で学んだスキルは、他のすべてのユニットのAフェイズ(ランクA)で活かされます。各ユニットのAフェイズでは、以下のようなAI活用が想定されています:

ユニット Aフェイズでの活用例
U7(dplyr) パイプラインの設計をAIに相談し、最適な処理手順を検討する
U8(tidyr) ワイド型・ロング型の変換をAIに依頼し、結果を検証する
U10(ggplot2) 複雑なカスタマイズ(テーマ、配色、レイアウト)をAIに依頼する
U11(記述統計) 記述統計の結果解釈をAIと議論する
U12(統計的推測) 検出力分析やサンプルサイズ設計をAIと協力して行う
U13(回帰モデル) 回帰モデルの改善案をAIに相談し、モデル選択を検討する

Aフェイズに取り組む際は、このU24に戻って、プロンプトの書き方や検証の手順を復習してください。


ランクC: 基礎知識を確認しよう

24-C-1

生成AI(LLM)は、データファイルを直接読み込んで分析を実行できる。

生成AIは基本的に、データファイルを直接読み込んで分析することはできません。AIが行うのは「分析するためのRコードを生成すること」です。生成されたコードを自分のRStudio環境で実行して、はじめて分析が行われます。一部のサービス(例: ChatGPTのAdvanced Data Analysis)ではファイルアップロード機能がありますが、それでも内部でコードを実行しているだけで、AIが「理解して」分析しているわけではありません。


24-C-2

AIが生成したRコードがエラーなく実行できた場合、その分析結果は正しいと判断してよい。

コードがエラーなく動くことと、分析結果が正しいことは別問題です。たとえば、相関分析をすべきところで回帰分析のコードが生成され、エラーなく実行されたとしても、分析手法の選択が不適切であれば結果は信頼できません。また、データの前処理が不十分なまま分析が進むと、数値自体が正しくてもその解釈は誤りになります。コードの動作確認に加えて、分析手法の妥当性と結果の解釈を必ず確認してください。


24-C-3

AIにRのコードを依頼するとき、使用するパッケージ(ggplot2、dplyr等)を指定すると、意図に沿ったコードが得られやすい。

正しいです。AIは文脈に応じて最もふさわしいと判断したパッケージを選びますが、base Rで書くこともあれば、tidyverseで書くこともあります。「tidyverseを使って」「ggplot2で」のように制約を示すことで、授業で学んだスタイルに沿ったコードを得られます。特にプロンプトにおける制約の明示は、AIの出力の質を大きく左右します。


24-C-4

AIが自信を持って間違った情報を生成する現象を何と呼びますか?

ハルシネーション(hallucination, 幻覚)と呼ばれます。AIは「もっともらしいテキストを生成する」モデルであるため、存在しない関数名を提示したり、事実と異なる説明を自信満々に述べることがあります。特に、マイナーなパッケージの関数や最新の仕様変更については、ハルシネーションが起こりやすくなります。AIの回答は常に検証する姿勢が重要です。


24-C-5

AIにエラーの原因を相談する際、最も役に立つ情報の組み合わせはどれですか?

AIがエラーの原因を正確に特定するには、実行したコードエラーメッセージの全文データの構造str()の出力等)の3つが揃っていることが理想です。エラーメッセージだけでは、データの状態に起因する問題(列名の不一致、型の不整合等)を見抜けません。コードだけでは、エラーの内容がわかりません。3つを揃えることで、AIは具体的で的確な修正案を提示できます。


24-C-6

レポートや論文でAIを利用した場合、どのような対応が適切ですか?

AIを利用した場合は、透明性の原則に従い、どの部分でどのように使ったかを明記するのが適切です。たとえば「コードの初期案をChatGPTで生成し、自分で修正・検証した」「エラーの解決にClaudeを利用した」のように、利用の範囲と方法を具体的に記述します。これは学術的誠実さの一部であり、多くの学会や大学がAI利用時の開示を求めるようになっています。AIの回答をそのまま引用として扱うことは、著者の責任があいまいになるため不適切です。


ランクB: 実践スキルを磨こう

ランクBでは、AIとの対話スキルそのものを練習します。以下の課題は「Rのコードを書く」課題ではなく、「AIとどのようにやり取りするか」を考える課題です。実際にChatGPT、Claude、Geminiなどのサービスを使って取り組んでください。


24-B-1: 良いプロンプトを設計する

課題: 「irisデータで散布図を描いて」というリクエストについて、悪いプロンプトと良いプロンプトをそれぞれ書いてください。

事前知識で学んだ4つの要素(背景、目的、制約、出力形式)を意識して、良いプロンプトを設計してください。

設計したら、実際にAIに両方のプロンプトを送り、回答の違いを比較してください。

悪いプロンプトの特徴:

  • 使用するデータが不明確
  • どの変数を使うか指定がない
  • 言語やツールの指定がない
  • 出力の形式が不明

良いプロンプトに含めるべき要素:

  • 自分の状況(Rを学んでいる学生であること)
  • 使用するデータセット(iris)
  • 軸に使う変数(Sepal.Length, Petal.Length等)
  • 色分けの基準(Species)
  • 使用パッケージ(ggplot2)
  • 日本語コメントの有無

悪いプロンプト:

散布図を描きたい

→ AIは「何のデータ?」「どの言語?」「どの変数?」を推測するしかありません。

良いプロンプト:

Rを学んでいる大学3年生です。
irisデータセットを使って、Sepal.LengthをX軸、Petal.LengthをY軸とした
散布図を描きたいです。

条件:
- ggplot2を使ってください
- Speciesごとに点の色を変えてください
- 軸ラベルは日本語にしてください
- コードに日本語のコメントを付けてください

→ 背景・目的・制約・出力形式がすべて含まれており、意図通りの回答が返りやすくなります。

両方を実際にAIに送ってみて、回答の具体性や精度の違いを体感してください。


24-B-2: AIが生成したコードの誤りを見つける

課題: 以下のコードは、AIが生成したものですが、意図的に3箇所の問題が含まれています。問題点を見つけ、修正してください。

# irisデータでSpeciesごとの平均を計算し、棒グラフで表示する
library(tidyverse)

iris %>%
  group_by(species) %>%
  summarize(mean_sl = mean(Sepal.Length),
            mean_sw = mean(Sepal.Width)) %>%
  pivot_longer(-species, names_to = "variable", values_to = "mean") %>%
  ggplot(aes(x = variable, y = mean, fill = species)) +
  geom_bar() +
  labs(title = "Speciesごとの平均値",
       x = "変数", y = "平均値")

実際にRStudioで実行して、エラーメッセージを確認してから修正してください。修正後にAIに自分の修正案を見せて、正しいかどうか確認してもらうのも良い練習になります。

以下の点に注目してください:

  1. irisデータの列名は大文字で始まるか、小文字で始まるか? (Species vs species
  2. geom_bar()はデフォルトで何をするか? 既に集計済みのデータに対して適切か?
  3. summarize()summarise()はどちらも使えますが、列名の不一致が他にないか確認してください

問題点と修正:

  1. 列名の不一致: irisデータの列名はSpecies(大文字始まり)ですが、コード中ではspecies(小文字)になっています。 → speciesSpeciesに修正

  2. geom_bar()の使い方: geom_bar()はデフォルトでstat = "count"(個数の集計)を行います。既にsummariseで平均値を計算済みのデータにはgeom_bar(stat = "identity")またはgeom_col()を使う必要があります。 → geom_col()に変更

  3. pivot_longer()の列名: group_by(species)group_by(Species)に修正した場合、pivot_longer(-species, ...)pivot_longer(-Species, ...)に修正が必要です。

修正後のコード:

iris %>%
  group_by(Species) %>%
  summarise(mean_sl = mean(Sepal.Length),
            mean_sw = mean(Sepal.Width)) %>%
  pivot_longer(-Species, names_to = "variable", values_to = "mean") %>%
  ggplot(aes(x = variable, y = mean, fill = Species)) +
  geom_col(position = "dodge") +
  labs(title = "Speciesごとの平均値",
       x = "変数", y = "平均値")

position = "dodge"を追加すると、Speciesごとの棒が横並びになり見やすくなります。


24-B-3: エラーメッセージをAIに相談する

課題: 以下のコードを実行すると、エラーが発生します。

library(tidyverse)
result <- iris %>%
  filter(Species = "setosa") %>%
  summarise(mean_length = mean(Sepal.Length))
  1. まず自分でRStudioで実行し、エラーメッセージを確認してください
  2. エラーメッセージ、コード、データの構造(str(iris)の出力)をまとめて、AIに相談してください
  3. AIの回答が正しいか、自分で実行して検証してください

filter()の中で =(代入演算子)と ==(等値比較演算子)を取り違えていないか確認してください。

エラーの原因: filter()の中で =(引数への代入)を使っていますが、条件式では ==(等しいかどうかの比較)を使う必要があります。

修正後:

result <- iris %>%
  filter(Species == "setosa") %>%
  summarise(mean_length = mean(Sepal.Length))

AIに相談する際のプロンプト例:

Rで以下のコードを実行したところ、エラーが出ました。

コード:
iris %>%
  filter(Species = "setosa") %>%
  summarise(mean_length = mean(Sepal.Length))

エラーメッセージ:
(ここに実際のエラーメッセージを貼り付ける)

データ:
str(iris)の出力:
'data.frame': 150 obs. of 5 variables:
 $ Sepal.Length: num 5.1 4.9 4.7 ...
 $ Sepal.Width : num 3.5 3 3.2 ...
 $ Petal.Length: num 1.4 1.4 1.3 ...
 $ Petal.Width : num 0.2 0.2 0.2 ...
 $ Species    : Factor w/ 3 levels ...

原因と修正方法を教えてください。

このように情報を揃えることで、AIは的確な回答を返しやすくなります。


24-B-4: AIにコードのリファクタリングを依頼する

課題: 以下の冗長なコードを、AIにきれいに書き直してもらってください。

setosa <- iris[iris$Species == "setosa", ]
versicolor <- iris[iris$Species == "versicolor", ]
virginica <- iris[iris$Species == "virginica", ]

mean_setosa_sl <- mean(setosa$Sepal.Length)
mean_versicolor_sl <- mean(versicolor$Sepal.Length)
mean_virginica_sl <- mean(virginica$Sepal.Length)

mean_setosa_sw <- mean(setosa$Sepal.Width)
mean_versicolor_sw <- mean(versicolor$Sepal.Width)
mean_virginica_sw <- mean(virginica$Sepal.Width)

result <- data.frame(
  Species = c("setosa", "versicolor", "virginica"),
  mean_Sepal.Length = c(mean_setosa_sl, mean_versicolor_sl, mean_virginica_sl),
  mean_Sepal.Width = c(mean_setosa_sw, mean_versicolor_sw, mean_virginica_sw)
)

以下の手順で進めてください:

  1. AIに「このコードをtidyverseスタイルで書き直してください」と依頼する
  2. AIが返したコードを自分で実行し、元のコードと同じ結果が得られるか確認する
  3. 元のコードとリファクタリング後のコードを比較し、何が改善されたかを言語化する
result <- iris %>%
  group_by(Species) %>%
  summarise(
    mean_Sepal.Length = mean(Sepal.Length),
    mean_Sepal.Width = mean(Sepal.Width)
  )

このように、group_by() + summarise()を使えば、3行で同じ結果が得られます。元のコードでは種ごとにデータを分割し、変数ごとに平均を計算し、手動でデータフレームを組み立てていました。tidyverseスタイルでは、これらの操作が宣言的に記述でき、種が増えてもコードの変更が不要です。


24-B-5: 同じ質問を異なる方法で聞く

課題: 「irisデータで、Speciesごとにすべての数値変数の平均と標準偏差を求めたい」という目的を、AIに3通りの異なるプロンプトで質問してください。

例:

  • プロンプト1: 短く簡潔に(1文で)
  • プロンプト2: 背景・制約を含めて丁寧に
  • プロンプト3: 期待する出力の形(表の形式など)を具体的に指定して

3つの回答を比較し、以下の点を記録してください:

  • どのプロンプトが最も意図に近い回答を返したか
  • 回答のコードスタイル(base R / tidyverse)に違いがあったか
  • 出力形式(表の見た目、列名の付け方)に違いがあったか

この課題のポイントは、「プロンプトの精度が回答の精度を決める」ことを体験することです。

プロンプト例:

1. 短く簡潔に:

irisで種ごとの平均とSDを求めて

2. 丁寧に:

Rを学んでいる大学3年生です。irisデータセットを使って、
Speciesごとにすべての数値変数(Sepal.Length, Sepal.Width,
Petal.Length, Petal.Width)の平均と標準偏差を計算したいです。
tidyverseを使ったコードを、日本語コメント付きで教えてください。

3. 出力形式を指定:

irisデータについて、Species(3種)ごとに4つの数値変数の
平均と標準偏差を計算し、以下の形式の表を出力するRコードを
書いてください。

Species | variable       | mean  | sd
setosa  | Sepal.Length   | 5.006 | 0.352
setosa  | Sepal.Width    | 3.428 | 0.379
...

tidyverseのgroup_by、summarise、pivot_longerを使ってください。

プロンプト3のように出力形式まで指定すると、最も意図通りの結果が得られることが多いです。ただし、プロンプト1のような短い指示でも意外と良い結果が返ることもあります。大事なのは、自分の目的に合った回答を引き出す感覚を掴むことです。


24-B-6: コードにコメント・ドキュメントを書いてもらう

課題: 以下のコメントなしのコードをAIに渡し、「各行に日本語のコメントを付けて、何をしているか説明してほしい」と依頼してください。

library(tidyverse)

iris %>%
  pivot_longer(-Species, names_to = "variable", values_to = "value") %>%
  group_by(Species, variable) %>%
  summarise(
    mean = mean(value),
    sd = sd(value),
    n = n(),
    .groups = "drop"
  ) %>%
  mutate(se = sd / sqrt(n)) %>%
  ggplot(aes(x = variable, y = mean, fill = Species)) +
  geom_col(position = position_dodge(width = 0.8), width = 0.7) +
  geom_errorbar(
    aes(ymin = mean - se, ymax = mean + se),
    position = position_dodge(width = 0.8),
    width = 0.25
  ) +
  labs(title = "Speciesごとの測定値(平均 + 標準誤差)",
       x = "測定変数", y = "平均値") +
  theme_minimal()

AIが付けたコメントを読み、以下を確認してください:

  1. コメントの内容は正確か(各行の処理を正しく説明しているか)
  2. わかりにくい箇所はないか(自分の理解と照らし合わせる)
  3. コメントを読んだだけで、コード全体の目的と流れが理解できるか

AIにコメントを書いてもらう際のプロンプト例:

以下のRコードの各行に日本語のコメントを付けてください。
コードが何をしているかだけでなく、なぜその処理が必要なのかも
簡潔に説明してください。

(コードを貼り付ける)

「何をしているか」だけでなく「なぜ必要か」も聞くと、より教育的なコメントが得られます。AIが付けたコメントを鵜呑みにせず、自分で1行ずつ理解を確認することが大切です。わからない箇所があれば、そこだけを改めてAIに質問してください。


24-B-7: 分析手法の提案を評価する

課題: 以下のような研究上の問いをAIに伝え、分析手法の提案を求めてください。

大学生100名を対象に、SNS使用時間(1日あたりの分数)、
自己肯定感(10項目の尺度得点)、学業成績(GPA)の関係を
調べたいと考えています。
どのような分析手法が考えられますか?
それぞれの手法の長所と短所を教えてください。

AIの回答を受け取ったら、以下の観点で評価してください:

  1. 提案された手法は研究の目的に合っているか
  2. 変数の尺度水準(量的/質的)を正しく考慮しているか
  3. 提案された手法を自分が授業で学んだことがあるか(学んでいない手法が含まれていないか)
  4. 各手法の長所・短所の説明は妥当か
  5. 重要な手法が漏れていないか

この研究の問いに対して、AIが提案しそうな手法:

  • 相関分析: 3変数間の関連を確認する基本的な手法。ただし因果関係は示せない
  • 重回帰分析: SNS使用時間と自己肯定感からGPAを予測するモデル。交絡変数の統制が必要
  • パス分析 / SEM: SNS→自己肯定感→GPAのような媒介モデルの検証。サンプルサイズ(N=100)で適切か要検討
  • 偏相関: 第三変数の影響を統制した上での2変数間の関連

評価のポイント:

  • 提案が多すぎないか(学部レベルで実行可能か)
  • サンプルサイズの制約に触れているか
  • 因果関係の主張に注意を促しているか
  • 横断データの限界に言及しているか

AIの提案をそのまま採用するのではなく、自分の知識と照らし合わせて取捨選択する力を養うことが目的です。


24-B-8: AI生成コードの検証チェックリストを作成する

課題: AIが生成した統計分析のRコードを検証するためのチェックリストを、自分で作成してください。

以下のカテゴリごとに、具体的なチェック項目を考えてください:

  1. コードの実行可能性: コードが正しく動くか
  2. データの整合性: 使用するデータが正しいか
  3. 分析手法の妥当性: 選択された手法が適切か
  4. 結果の解釈: 出力された結果が妥当か
  5. 再現性: コードが再現可能か

作成したチェックリストをAIに見せて、「このチェックリストに抜けている項目はありますか?」と質問し、改善してください。

以下は検証チェックリストの一例です。自分の学習段階や研究分野に合わせてカスタマイズしてください。

1. コードの実行可能性

2. データの整合性

3. 分析手法の妥当性

4. 結果の解釈

5. 再現性


ランクA: AI協働に挑戦しよう

24-A-1: AIと協力して分析サイクルを完遂する

課題: AIをアシスタントとして活用し、以下のデータ分析サイクルを一通り完遂してください。

使用データ: Rに組み込みのデータセット(mtcarsirisToothGrowth等)から1つ選択

分析サイクル:

  1. 研究の問いを設定する: 自分で問いを立てる(例: 「車の燃費は排気量と馬力のどちらに強く影響されるか?」)
  2. データの探索: AIにデータ探索のコードを依頼し、変数の分布や関連を確認する
  3. 分析手法の選択: AIに手法を相談しつつ、自分で最終判断する
  4. 分析の実行: AIにコードを生成してもらい、自分で実行・検証する
  5. 結果の可視化: AIに可視化コードを依頼し、結果をグラフにする
  6. 結果の解釈: AIに結果の解釈を相談しつつ、自分の言葉でまとめる

提出物:

  • AIとの対話ログ(スクリーンショットまたはテキスト)
  • 完成した分析コード
  • 結果のグラフ
  • 300字程度の結果の要約(自分の言葉で)

評価のポイント: コードの正しさだけでなく、AIとの対話の中で自分がどのような判断を行ったか(AIの提案をそのまま受け入れたか、修正したか、なぜそうしたか)を重視します。


24-A-2: 統計手法についてAIと議論する

課題: 以下のシナリオについて、AIと「議論」してください。AIの意見に対して反論や追加質問を行い、対話を通じて理解を深めてください。

シナリオ: あなたは大学生の睡眠時間とテスト成績の関係を調べたいと考えています。100名分のデータ(睡眠時間、テスト成績、学年、性別)があります。

AIに対して、以下のような議論を展開してください:

  1. 「このデータにt検定を使ってよいか?」と質問する
  2. AIの回答に対して「でも睡眠時間は連続変数なので、t検定より相関分析の方が適切ではないか?」と反論する
  3. 「学年や性別の影響を統制するにはどうすればよいか?」と追加質問する
  4. AIの回答(おそらく重回帰分析を提案する)に対して「サンプルサイズ100で重回帰分析は大丈夫か?」と質問する
  5. 最終的に、自分が最も適切だと考える分析方法と、その理由を整理する

提出物:

  • AIとの対話ログ
  • 最終的な分析方法の選択とその理由(200字程度)
  • 対話を通じて自分の考えがどう変わったか(変わらなかった場合はその理由)

24-A-3: 自分の研究テーマでAIを活用する

課題: 自分の卒論テーマ(またはゼミで取り組んでいるテーマ)について、AIに説明し、適切な分析コードを生成してもらってください。

手順:

  1. AIに研究テーマを教える: 研究の背景、目的、仮説、使用データの概要を説明する
  2. 分析の方針を相談する: 「このテーマに対してどのような分析が考えられますか?」と質問する
  3. 分析コードを依頼する: AIの提案の中から適切なものを選び、コード生成を依頼する
  4. コードを検証する: 生成されたコードを実行し、結果を確認する
  5. 改善を繰り返す: 問題があればAIにフィードバックし、コードを修正してもらう

提出物:

  • AIに送った研究テーマの説明文
  • AIとの対話ログ(少なくとも5往復以上)
  • 最終的なコード
  • 「AIに上手く伝えられたこと」「上手く伝えられなかったこと」の振り返り(200字程度)

注意: 実際の調査データをAIに送信しないでください。データの構造(変数名、型、サンプルサイズ等)のみを伝えるか、ダミーデータを使用してください。


まとめ

このユニットでは、生成AIをR学習のパートナーとして活用するための基礎を学びました:

  • AIの特性を理解する: 得意なこと(コード生成、エラー解説)と苦手なこと(計算の正確さ、専門的判断)を知る
  • 効果的なプロンプトを書く: 背景・目的・制約・出力形式を明示する
  • AIの出力を検証する: コードの動作確認だけでなく、分析手法の妥当性と結果の解釈まで確認する
  • 倫理的に利用する: 透明性を保ち、批判的思考を忘れない

AIは強力なツールですが、あくまでもツールです。「何を分析すべきか」「結果をどう解釈するか」は、研究者自身が判断しなければなりません。AIと協働するスキルは、各ユニットのAフェイズで繰り返し実践しながら磨いてください。


進捗: あなたは今 24-C-6 まで完了しました!(と仮定)次は 24-B-1 に進みましょう。