言語/language

回帰分析を極める!ChatGPT × Excel活用法完全ガイド

スポンサーリンク
AIで重回帰分析 AI chatGPT
AIで重回帰分析
この記事は約21分で読めます。
スポンサーリンク

なぜ今「回帰分析 × ChatGPT」なの?

「回帰分析」は、数値を“予測”するための基本手法です。売上、アクセス数、広告効果、滞在時間、客単価など、ビジネスで使える場面はとても多いです。近年は**AI(Artificial Intelligence/人工知能)**の進化により、ChatGPTが分析ワークの“案内役・自動化パートナー”として使われるようになりました。


数字もコードも苦手…。回帰分析って本当に自分でできる?

 

ChatGPTを活用にすれば、手順の確認・コード生成・結果の説明まで一気に時短できます。この記事の通りに進めればOK!

回帰分析とは?AIとの関係

回帰分析は「入力(説明変数)から数値を予測」する手法です。売上・需要・滞在時間・LTV など連続値に使います。

  • 単回帰:説明変数が1つ(例:広告費→売上)

  • 重回帰:説明変数が複数(例:TV/ラジオ/WEB広告→売上)

  • AI(機械学習)では、線形回帰、Ridge/Lasso、ランダムフォレスト、XGBoostが定番。まずは線形回帰で関係性の向き・強さを掴むのが王道。

用語(最初だけ英語併記)

  • R²(決定係数:Coefficient of Determination)

  • RMSE(二乗平均平方根誤差:Root Mean Squared Error)

  • MAE(平均絶対誤差:Mean Absolute Error)

  • VIF(分散拡大係数:Variance Inflation Factor)

 

回帰分析の詳細は下記の記事を参照願いします。

関連記事:誰でもわかる!回帰分析の基礎と実践法

誰でもわかる!回帰分析の基礎と実践法
はじめての「回帰分析」を、統計が苦手な人でもスラスラ読めるように、基礎から実務レベルの使い方まで一気に解説します。Excel/Googleスプレッドシートで“いますぐ”試せる手順も用意しました。最後まで読めば、明日から自分のデータで回帰分析...

成功する回帰分析の基本フロー

  1. 目的定義:何を予測?(例:翌月売上)評価指標は?

  2. 特徴量候補の洗い出し:広告費、価格、在庫、季節、競合指標、トレンドなど

  3. データ前処理:欠損/外れ値/型/スケーリング/カテゴリのダミー化

  4. 学習(エクセル or Python)

  5. 評価:R²、RMSE、残差、p値、交差検証

  6. 解釈→施策:係数の符号と大きさから改善案へ

  7. 運用:定期更新、自動化、ダッシュボード化

手順(全体像)

  1. 目的の明確化:何を、どれだけ、いつ予測する?
  2. データ確認:欠損・外れ値・単位・期間の整合。
  3. 可視化:散布図・相関(皮相関)で当たりを付ける。
  4. モデル選択:単回帰 → 重回帰 → 正則化の順で段階的に。
  5. 学習・評価:学習データ/検証データの分割、R²やRMSEを見る。
  6. 解釈・改善:重要変数、係数の符号、残差のパターン、共線性。
  7. 共有:結論→根拠→次アクションの順でスライド化。

具体的なChatGPTへのプロンプト文 作成手順

  • 目的を決める(何を予測・改善したい?)

  • データを用意(コピペできる表 or CSV)

  • 分析の指示(回帰/グラフ/精度確認)

  • 結果の解釈(R²・P値・回帰式の意味)

  • 改善アクションを聞く

 

目的定義を手伝ってもらう

あなたはデータアナリストです。目的は「広告費から月間売上を予測する」こと。初心者にもわかる言葉で、必要な列名とデータ前処理(欠損、外れ値、標準化)の方針を箇条書きで提案してください。

 Excelの手順を作ってもらうプロンプト文 事例

Excelで単回帰を行いたいです。列A: ad_cost、列B: sales のとき、
(1) 散布図の作成手順、(2) 近似直線とR²の表示、(3) 予測式のセル参照、
を手順で示し、初心者向けに注意点も書いてください。

Pythonコードを生成してもらうプロンプト文 事例

Pythonで重回帰(説明変数: ad_cost, temp, visits / 目的変数: sales)をしたいです。
scikit-learnで学習・予測し、R², MAE, RMSE を表示、係数を表で出力、
散布図と残差プロットも保存するコードをください。

事例で学ぶ ChatGPT×Excelでの単回帰分析

ChatGPTにデーターを入力し、エクセルでの単回帰分析の手順及び評価を指示するプロンプト文を入力すれば簡単に単回帰分析が作成できる!!

単回帰分析ってなに?

1つの 説明変数(原因) から
1つの 目的変数(結果)数式で予測 する方法です。

例)

目的 使う変数
売上を予測したい 広告費
不良率を予測したい 設備稼働率
アイス重量のばらつきを予測したい 充填温度

→ 「温度を上げると、アイス重量はどう変わる?」みたいな相関を見ます。


 使うサンプルデータ

例えば「充填温度(℃)」と「アイスの重量(g)」の関係

A(温度) B(重量)
2 95
3 96
4 97
5 98
6 100
7 101
8 103
9 104
10 105
11 107

① Excelで分析ツールをONにする(最初だけ)

  1. ファイルオプション

  2. アドイン

  3. 下の管理 → Excelアドイン分析ツール にチェック → OK

*「データ」タブの右端に「データ分析」ボタンが追加されていれば、完了!

エクセル データー分析

エクセル データー分析

 


② 単回帰分析を実行

  1. 上メニューの データデータ分析 をクリック

  2. 回帰分析 を選択 → OK

  3. 入力値をセット

設定項目 入れるもの
Y(目的変数) 重量データ(B2:B11)
X(説明変数) 温度データ(A2:A11)
ラベル ✔(1行目を選んだら)
出力先 新規シート推奨
分析ツール

分析ツール

単回帰分析

単回帰分析

「OK」を押すと、以下のように回帰分析の結果が出力されて完了!

単回帰分析 結果

単回帰分析 結果

 


③ 出てきた結果の読み方

上記画像の4行目に記載されている「重決定 R2」は一般に決定係数といい、分析結果の当てはまりの良さを判断する指標のひとつです。0~1の範囲の値をとり、基本的に決定係数が1に近いほど当てはまりがよく、0に近いほど当てはまりが悪いとされています。

項目 意味
R²(決定係数) 1に近いほど「温度で重量を説明できてる」
重回帰の R 相関の強さ(±1に近いほど強い)
P値 0.05より小さければ「関係あり!」と判断
係数(切片・温度) 予測式を作るパーツ

④ 予測の数式を作る(これが結論)

出力の例としてこう出たとします↓

係数
切片(Intercept)
温度

この場合の回帰式:

重量(g) = 91.855 + 1.3455 × 温度(℃)

つまり…

✅ 温度が1℃上がると、重量は約1.3455g増える傾向


⑤ 散布図+回帰直線グラフも作る(視覚で納得)

  1. AとB列のデータ範囲を選択

  2. 挿入散布図

  3. グラフ上で点を右クリック → 近似曲線の追加

  4. 「線形」を選択

散布図+回帰直線グラフも作る

散布図+回帰直線グラフ

  1. 「グラフに数式を表示」「グラフにR-2乗値を表示する」を

→ さっきの式が表示されます✨

エクセル 単回帰分析

エクセル 単回帰分析 結果


⑥ どう改善アクションにつなげるか

分析結果 現場のアクション
R²が高い 温度管理を強化すれば重量バラつきを減らせる
係数が大きい 温度の微調整で製品が変動しやすい→管理幅を狭くする
R²が低い 温度以外の原因(原料粘度、ポンプ圧力など)も調査

⑦ よくあるNGと回避

NG 理由 対策
相関=因果と思い込む たまたま関係してるだけかも 現場検証で裏取り
外れ値放置 結果が歪む 異常データは原因判定する
データ数が少なすぎ 信頼できない 最低10〜30点は欲しい

Excelでの単回帰分析 まとめ

  1. 回帰分析は 原因→結果の影響の大きさを数式化できる

  2. Excelだけで 予測・可視化・分析・改善までできる

  3. 大事なのは P値・R²・回帰式の3つ

  4. 分析のゴールは「改善アクション」まで結びつけること

 

事例で学ぶPythonで重回帰分析を行う手順

Python(scikit-learn)を使って重回帰分析を実行する方法を、実務で分かりやすい事例とともに解説します。コードテンプレート、ChatGPTへ投げるプロンプト、得られた結果の読み方、そして改善・対策案まで網羅しています。

Pythonライブラリの活用

Pythonで重回帰分析を行う際には、主にscikit-learnstatsmodelsという2つのライブラリがあります。scikit-learnは、機械学習の重回帰分析を含むアルゴリズムが豊富に実装されており、scikit-learnLinearRegressionクラスを使うことで、簡単に重回帰モデルを構築し、学習させることができます。

一方、statsmodelsは、統計モデルの分析に特化したライブラリであり、より詳細な統計的分析を行うことが可能です。例えば、回帰係数の有意性検定や、モデルの適合度を評価するための指標などを算出することができます。

scikit-learnは、機械学習の初心者や、迅速にモデルを構築したい場合に適しています。一方、statsmodelsは、統計的な解釈を重視する場合や、より詳細な分析を行いたい場合に適しています。

*下記の記事にGoogle Colab を使って、Pythonを実行する方法を、初心者向けにわかりやすく解説します。

関連記事:AI chatGPTによるグラフ作成 Google Colabとの連携

 


事例で学ぶ 重回帰分析 事例:アイス販売の売上予測

下記のデーターを基にPythonでの重回帰分析の進め方の手順を解説します。

目的はアイス販売の売上予測 sales(売上)ad_cost(広告費)temp(気温)visits(来店客数) で予測します。

サンプルデーター(試料数:300件)⇒エクセルファイル ダウンロード

売上は「広告費」「気温」「来客数」の影響を受けると仮定する

日付 ad_cost(広告費) temp(気温) visits(来店客数) sales(売上)
1日目 18,302 27 137 36,528
2日目 7654 19.6 134 32,107
3日目 9619 21.2 146 38,406

Pythonコード(テンプレート)


# --- ライブラリ ---
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score, mean_absolute_error, mean_squared_error
import seaborn as sns
import matplotlib.pyplot as plt
from google.colab import files

# グラフ表示をきれいに
plt.rcParams['figure.figsize'] = (6, 4)

# --- ColabにExcelファイルをアップロード ---
# 実行すると「ファイルを選択」が出るので .xlsx を選ぶ
uploaded = files.upload()
file_name = list(uploaded.keys())[0]   # 例: "sample_month_300.xlsx"

# --- データ読み込み(Excelファイル)---
# シート名を指定したい場合は sheet_name="Sheet1" などを追加
df = pd.read_excel(file_name)
print("データ読み込み完了:", df.shape)
print(df.head())

# --- 必要列チェック ---
required_cols = ['ad_cost', 'temp', 'visits', 'sales']
missing = [c for c in required_cols if c not in df.columns]
if missing:
    raise ValueError(f"必要列が見つかりません: {missing}")

# --- データの行順を固定(任意:再現性を高めたい場合)---
df = df.sort_values(by=['ad_cost', 'temp', 'visits']).reset_index(drop=True)

# --- 説明変数(X)と目的変数(y)---
X = df[['ad_cost', 'temp', 'visits']]
y = df['sales']

# --- 学習データとテストデータに分割(テスト20%)---
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42, shuffle=True
)

# --- 学習(モデル作成) ---
model = LinearRegression()
model.fit(X_train, y_train)

# --- 予測 ---
pred = model.predict(X_test)

# --- モデル評価(MSE→RMSEへ変換)---
r2 = r2_score(y_test, pred)
mae = mean_absolute_error(y_test, pred)
mse = mean_squared_error(y_test, pred)   # squared=False は使わない
rmse = mse ** 0.5                        # RMSE に変換

print("=== 評価指標 ===")
print(f'R2   : {r2:.3f}')
print(f'MAE  : {mae:.2f}')
print(f'RMSE : {rmse:.2f}')

# --- 回帰係数を確認 ---
coef = pd.DataFrame({
    'feature': X.columns,
    'coefficient': model.coef_
})
print("\n=== 回帰係数 ===")
print(coef)

print(f"\n切片 (intercept): {model.intercept_:.3f}")

# --- 実測と予測の散布図(画像保存)---
plt.figure()
sns.scatterplot(x=y_test, y=pred)
plt.xlabel('Actual Sales')
plt.ylabel('Predicted Sales')

# y=x の基準線
minv = min(y_test.min(), pred.min())
maxv = max(y_test.max(), pred.max())
plt.plot([minv, maxv], [minv, maxv], linestyle='--', color='red')

plt.tight_layout()
plt.savefig('actual_vs_pred.png')
plt.show()

# --- 残差を確認(画像保存)---
residuals = y_test - pred
plt.figure()
sns.histplot(residuals, kde=True)
plt.title('Residuals Distribution')
plt.xlabel('Residual (Actual - Predicted)')
plt.tight_layout()
plt.savefig('residuals.png')
plt.show()

print("\n実測 vs 予測の散布図: actual_vs_pred.png")
print("残差分布の図           : residuals.png")

 

Google ColabのPytyon実行結果

実測 vs 予測 の散布図

実測と予測の散布図

実測と予測の散布図

 

残差分析

残差分析

残差分析

 

残差(Residual)とは?

残差とは、

実際の値(観測値) − モデルの予測値

で表される「誤差」のことです。

 

残差=y実測y予測\text{残差} = y_{\text{実測}} – y_{\text{予測}}

つまり、モデルがどれだけ当たっているか・外しているかを1件ごとに表したもの。

 残差の理想的な性質(良いモデルの条件)

重回帰分析では、残差が次のような性質を持つと「モデルが健全」と判断されます。

評価項目 理想の状態 問題のサイン
平均 ほぼ0 正の偏り or 負の偏りが大きい
分布形状 正規分布(左右対称の山型) 歪んでいる・極端に広い/尖っている
ばらつき 一定(予測値に関係しない) 残差が予測値に比例して増減(分散不均一)
パターン ランダム 系統的な曲線・クラスタが見える(非線形)
今回の「Residuals Distribution」画像の見方

Colabで出力されたヒストグラムは、残差の分布を表しています。

解釈ポイント:

  1. 中心が0付近で山型
     → モデルの誤差が平均的にゼロで、過剰にも過小にも偏っていない。
     → ✅「バイアスのない良い予測」と言える。

  2. 左右がほぼ対称・滑らかな曲線(kde=Trueで青線)
     → 残差がほぼ正規分布 → ✅ 回帰モデルの前提が成立している。

  3. もし一方に偏っていたら
     → 予測が一方向にずれている(例:常に過大評価 or 過小評価)。

  4. 裾が長い(外れ値)
     → 一部のデータが大きく外れている → ⚠ 外れ値や異常値を疑う。


解釈ポイント

  • R² = 0.89 → 売上(sales)の約89%を説明変数(広告費・気温・来訪者数)で説明できています。精度は高い水準。

  • MAE = 約1523, RMSE = 約2148 → 平均的に実測値との誤差が1500~2000程度あることを意味します。

  • 係数の意味

    • ad_cost(広告費)が1単位上がると、売上は平均 +0.46 増加

    • temp(気温)が1°C上がると、売上は平均 +181.75 増加

    • visits(来訪者数)が1人増えると、売上は平均 +162.59 増加

 

事例で学ぶ 超簡単! ChatGPTだけで重回帰分析をする

有料ChatGPT(Plus版)ならデーターを渡して下記のプロンプト文のように「重回帰分析して」とプロンプト文を宣言すればあっという間に分析結果が表示され、グラフの分析の解釈も教えてくれます。

添付データーの重回帰分析を行ってください。
分析後、以下を出力してください。
1. 回帰式(係数と切片)
2. R2、MAE、RMSE の評価指標
3. 実測 vs 予測 の散布図(PNG)
4. 残差分析(残差の分布図と問題点)
データ列:ad_cost, temp, visits, sales

ChatGPTの有料プランであるChatGPT Plusは、無料版の基本機能に加え、より高度なグラフ作成機能であるAdvanced Data Anataysisという機能が搭載されています。

Advanced Data Anataysisとは?

Advanced Data Analysis(旧称Code Interpreter)はChatGPT-4に統合された機能です。

これを使うことで、プログラミング知識がなくても、日本語の指示だけでデータの読み込みから分析、グラフの作成や複雑な計算といったデータ関連の多岐にわたる作業を行うことが可能になります。

 

ChatGPTの実行結果

1. 回帰式(係数と切片)

説明変数:ad_cost, temp, visits
目的変数:sales

推定された回帰式は:

(小数第3位以降は四捨五入)

  • ad_cost:広告費が1単位増えると、他が同じなら sales は平均 +0.523 増加

  • temp:気温が1°C上がると、sales は平均 +345.63 増加

  • visits:来訪者数が1人増えると、sales は平均 +151.80 増加


2. 評価指標(テストデータ:全体の20%)

  • R²(決定係数): 0.9164

  • MAE(平均絶対誤差): 1363.93

  • RMSE(2乗平均平方根誤差): 2016.02

ざっくり評価
  • R²=0.92 近く → sales の変動の約 92% を 3つの説明変数で説明できている → かなり当てはまり良好

  • MAE ≒ 1364, RMSE ≒ 2016 → 1件あたりの誤差は「おおよそ ±1,500〜2,000」くらいのスケール感。


3. 実測 vs 予測 の散布図(PNG)

テストデータの 実測値 vs 予測値 の散布図を出力しました。

実測 vs 予測 の散布図

実測 vs 予測 の散布図

図の読み方:

  • 斜めの点線(y=x)に点が近いほど「予測が実測に近い」

  • 今回は多くの点が線の近くに集まっていて、外れた点は一部だけ → 予測精度は良好と評価できます。


4. 残差分析(残差の分布図と問題点)

4-1. 残差の分布図

残差 = 実測値 − 予測値 のヒストグラム+正規分布フィットを描きました。

残差の分布図

残差の分布図

残差の基本統計量:

  • 平均: -97.60(ほぼ0に近い、小さな負バイアス)

  • 標準偏差: 2013.66

  • 最小値: -3993.76

  • 最大値: 4344.88

評価・解釈
  • 平均 ≈ 0(-97程度)
    → 予測が体系的に大きくズレているわけではなく、過大・過小のバランスはおおむね良好

  • 分布は大まかに左右対称の山型で、中央付近にピーク → 誤差は概ね正規分布っぽいふるまい。

  • ただし、±4000 近くの残差もあり、やや大きめの外れ値も存在している(ごく一部)。


参考:何故、重回帰分析ではデータを次の2つに分ける?

もし、全データを丸ごと学習に使ってしまうと、

モデルは訓練データを丸暗記してしまい
「本番環境でどれくらい予測できるか」がわからない

という問題が起きます。

だから、

  • 80% → 学習用

  • 20% → 精度チェック用

みたいに分けて、

「このモデルは新しいデータに対してどれくらい当てられるのか?」
を厳密に評価するわけです。

「学習データ80% vs テストデータ20%」の分布比較可視化の図は下記です。

学習データとテストデータの分布

学習データとテストデータの分布

重回帰分析でデータをTrain/Test用に 分割するのはモデルの妥当性を確認するために必要。
ただし、分割の仕方で精度が大きく変わるため慎重に扱う必要がある。

まとめ:小さく始めて、早く学ぶ

Python と scikit-learn を使えば、売上に寄与する要因を数値で把握できます。重要なのは「モデル結果を現場施策に落とし込むこと」。まずはデータを増やしてモデルの信頼性を高め、施策→評価→改善のサイクルを回しましょう。

  • まずは単回帰で当たりを付ける
  • 重回帰→正則化で精度と安定性を高める
  • R²/MAE/RMSEの複数指標で評価
  • ChatGPTは“実行役”ではなく参謀役。プロンプトで明確に指示

コメント

タイトルとURLをコピーしました