※本記事のコードや情報は執筆時点の仕様に基づいています。投資は自己責任であり、必ずデモ環境や少額資金でテストした上で運用してください。
回帰分析とは何か
回帰分析は「X(説明変数)からY(目的変数)を予測する」統計手法です。最も基本的な単回帰分析は、2つの変数の関係を直線で表します。
株価分析における代表的な使い方として「時間の経過(X軸)に対して株価(Y軸)がどのように変化しているか」というトレンドラインの算出があります。
| 指標 | 意味 | 目安 |
|---|---|---|
| 傾き(係数) | Xが1増えたときのYの変化量 | 正なら上昇トレンド |
| 切片 | X=0のときのYの値 | 基準点 |
| R²スコア(決定係数) | 回帰式がデータをどれだけ説明できるか | 0〜1、1に近いほど当てはまり良好 |
R²スコアの重要性
R²スコアが0.8以上なら「この直線はデータをよく説明している」と言えます。逆にR²が0.1以下なら、直線関係はほとんどなく、回帰の意味が薄れます。株価のトレンドが強い時期はR²が高く、もみ合い相場では低くなる傾向があります。
Pythonでトレンド分析を実装する
import yfinance as yf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
matplotlib.rcParams['font.family'] = 'Meiryo'
# ==============================
# 設定エリア
# ==============================
SYMBOL = "7203.T" # 分析対象
PERIOD = "1y" # 期間
# ==============================
# データ取得
# ==============================
df = yf.Ticker(SYMBOL).history(period=PERIOD)
df = df.reset_index()
# 日付を数値インデックスに変換(回帰の入力用)
X = np.arange(len(df)).reshape(-1, 1) # 0, 1, 2, ... と連番
y = df["Close"].values
# ==============================
# 線形回帰モデルの学習
# ==============================
model = LinearRegression()
model.fit(X, y)
# 予測値(トレンドライン)
y_pred = model.predict(X)
r2 = r2_score(y, y_pred)
slope = model.coef_[0]
print(f"傾き(1日あたりの変化): {slope:+.2f} 円/日")
print(f"年間変化量(推定): {slope * 252:+.0f} 円")
print(f"R²スコア: {r2:.3f}")
if r2 >= 0.7:
print("→ 強いトレンドあり(回帰の当てはまり良好)")
elif r2 >= 0.4:
print("→ 緩やかなトレンドあり")
else:
print("→ トレンドは弱い(もみ合い相場の可能性)")
# ==============================
# グラフ描画
# ==============================
fig, ax = plt.subplots(figsize=(12, 5))
ax.plot(df["Date"], y, color='steelblue', linewidth=1, label='実際の株価', alpha=0.8)
ax.plot(df["Date"], y_pred, color='red', linewidth=2, linestyle='--',
label=f'トレンドライン(R²={r2:.2f})')
ax.set_title(f"{SYMBOL} 線形トレンド分析")
ax.set_xlabel("日付")
ax.set_ylabel("終値(円)")
ax.legend()
ax.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig("trend_regression.png", dpi=150)
plt.show()
sklearn のインストール
pip install scikit-learn
まとめ
- 回帰分析は変数間の関係を直線(または曲線)で表す手法
- R²スコアが高いほど回帰式がデータに当てはまっている
- 株価への適用では「時間 vs 価格」でトレンドの強さを定量化できる
- R²が低い期間はもみ合い相場で、トレンドフォロー戦略が機能しにくい

