Python3ではじめるシステムトレード：線形回帰における確定的現象と相関


2023120400:00

一般の線形単回帰モデルでは、しばしば応答変数（Y）が観測値、説明変数（X）が制御変数（操作可能な変数）、または観察の対象となる変数です。

線形単回帰モデルを考える際、物理現象のような確定的現象のデータと相関現象を含むデータは、分析のアプローチや解釈において異なる考慮が必要です。

### 確定的現象にノイズが加わった場合
- このケースでは、基本的な関係は確定的（つまり、一つの原因に対して一つの結果が決まる）ですが、観測の不確実性によりノイズ（ランダムな誤差）がデータに加わります。
- ここでのモデルは、基本的な関数関係にノイズ項を加えることで表現されます（例：$ Y = f(X) + \epsilon $）。
- 分析の目的は、この基本的な関数関係を特定し、ノイズの影響を考慮してデータを解釈することです。

### 相関現象を含むデータ
- このケースでは、変数間の関係は確率的であり、単なる確定的な関数関係ではなく、変数間には相関関係が存在します。
- モデルは変数間の相関関係を捉えることに焦点を当て、変数間の統計的な関連性を調べます（例：$ Y = \beta_0 + \beta_1X + \epsilon $）。
- ここでは、関係がより複雑であり、説明(予測)変数と応答変数の間の確率的な関連性を理解し、モデリングすることが主な目的となります。



# 確定的現象


## 物理法則と線形単回帰モデル
- 物理学などの自然科学では、特定の物理法則や理論に基づき、一連の実験や観測を行います。その際、説明変数（X）はしばしば制御可能な変数（例えば温度、圧力、濃度など）であり、応答変数（Y）はその結果として観測される変数（例えば反応速度、発生エネルギーなど）です。

確定的な現象は、関数で表現することが適切です。この場合、応答変数（Y）も説明変数（X）も、確率変数である必要はありません。確定的な現象では、Xの特定の値が与えられたときにYの値が一意に決定されるため、関数的な関係性が成立します。

### 応用
- **物理法則**: 物理学における多くの法則は、このような決定的な関数的関係に基づいています。例えば、速度、加速度、距離の関係などです。
- **エンジニアリング**: エンジニアリングの分野でも、特定の入力に対する出力が決定的に決まるシステムが多く存在します。


## 誤差と残差

物理法則を実際にデータに適用する際、得られるのは観測値であり、これには実際に観測誤差や測定誤差が含まれます。このような状況では、以下の二つのアプローチが考えられます：

### 確定的な関数モデルと誤差
1. **関数モデル**: 物理法則自体は確定的な関数で表現されます。たとえば、$ Y = f(X) $ という形式で、ここで $ f $ は物理法則を表す関数です。
2. **誤差の考慮**: 実際の観測値には誤差が含まれるため、モデルは $ Y = f(X) + \epsilon $ と表現されることが多いです。ここで $ \epsilon $ は誤差項を表し、これは観測値が理論値からどの程度ずれているかを示します。

### 統計モデルの利用
- **統計モデル**: 確定的な関数モデルに加えて、統計的な手法を用いて誤差をモデル化することができます。このアプローチでは、観測値に含まれる残差の特性（例えば、分布、標準偏差など）を推定し、より現実に近いモデルを構築します。

# 確率的現象

## 静的な状態における相関の生成構造

相関の性質と生成メカニズムを理解するためには、確率変数間の関係性を考えることが重要です。相関は確率変数間の線形関連性の強さを測る指標であり、さまざまなメカニズムによって生じることがあります。以下に、相関が生じる主なメカニズムを説明します。

### 1. 確率変数の線形結合

- **線形結合による相関生成**:
  この方法では、相関のない確率変数から新たな変数を作成することにより、相関関係を導入します。
  例えば、独立した確率変数 $ X $ と $ Z $ から新しい変数 $ Y = aX + bZ $ を作成すると、$ Y $ と $ X,Z $ の間には相関関係が生じます。

   $$ Y = \alpha + \beta_1X + \beta_2Z + \epsilon $$
  ここで、$ X $ と $ Z $ は独立した確率変数であり、$ Y $ はこれらの線形結合として定義されます。この線形結合により $ Y $ と $ X $、$ Z $ の間に相関が生じます。


### 2. 共通の原因による相関

- **共通因子の影響**:
  確率変数 $ X $ と $ Y $ が共通の原因 $ Z $ によって影響を受ける場合、$ X $ と $ Y $ 間に相関が生じる可能性があります。
  例: $ X $ と $ Y $ がともに気温の変動に影響を受ける場合、気温が高い日に $ X $ と $ Y $ の値が同時に高くなることで相関が生じます。

   $$ X = \gamma Z + \epsilon_1 $$
   $$ Y = \delta Z + \epsilon_2 $$
   ここで、$ Z $は共通の原因（潜在変数）、$ X $と$ Y $は観測される変数、$ \epsilon_1 $と$ \epsilon_2 $はそれぞれの誤差項です。$ Z $が$ X $と$ Y $の両方に影響を与えるため、相関が生じます。


### 3. 相互作用による相関

- **相互作用メカニズム**:
  2つの変数がお互いに影響を及ぼし合う場合、それらの間に相関が生じます。
  例: 経済成長と消費の増加が相互に影響し合う場合、これらの変数間には相関が生じる可能性があります。
   $$ Y = \alpha + \beta_1X_1 + \beta_2X_2 + \gamma(X_1 \times X_2) + \epsilon $$
   ここで、$ \gamma $は$ X_1 $と$ X_2 $の相互作用項を表します。それぞれの要因が$Y$に影響を及ぼすだけではなく、相互作用がある場合、これによって$ Y $に追加的な影響が及びます。


### 4. 介入変数による相関

- **介入変数による間接的な関係**:
  2つの変数が別の変数によって介入される場合に相関が生じることがあります。
  例: $ X $(教育レベル) が $ Z $(就業スキル) に影響を与え、$ Z $ が $ Y $(就業収入) に影響を与える場合、$ X $ と $ Y $ の間には間接的な相関が生じます。
   $$ M = \alpha + \beta X + \epsilon_1 $$
   $$ Y = \gamma + \delta M + \epsilon_2 $$
   ここで、$ M $は介入変数（メディエーター）、$ X $は独立変数、$ Y $は従属変数です。$ X $が$ M $を通じて$ Y $に影響を与えます。


### 5. 選択バイアスによる相関

- **サンプル選択による相関**:
  特定の条件に基づいてサンプルが選択される場合、選択バイアスにより相関が生じることがあります。
  例: 特定の健康条件(例えば、高血圧)を持つ人々だけを対象に調査を行うと、その条件と関連する他の特性との間に相関が見られることがあります。
   $$ Y = \alpha + \beta X + \gamma Z + \epsilon $$
   ここで、例えば、$Y$を心臓病のリスク、$X$を運動習慣の有無、$ Z $は観測されない共通の原因で食生活の質などとします。$Z$は選択バイアスを引き起こす要因で、これが$ X $と$ Y $に同時に影響を与えるため、誤った相関が生じます。なぜなら、高血圧を持つ人々は特定の食生活の傾向（例えば、塩分の高い食事）を共有している可能性があるからです。結果として、運動習慣が健康に与える実際の影響を過大評価したり、過小評価したりする可能性があるため、このような調査では選択バイアスを考慮に入れる必要があります。

```Python
import numpy as np
import pandas as pd

# 乱数シードの設定
np.random.seed(0)

# 1. 確率変数の線形結合による相関
X1 = np.random.normal(0, 1, 100)  # 確率変数X1
Z = np.random.normal(0, 1, 100)   # 独立した確率変数Z
Y1 = 2 * X1 + Z                  # 線形結合によりX1と相関のあるY1

# 2. 共通の原因による相関
C = np.random.normal(0, 1, 100)   # 共通の原因C
X2 = C + np.random.normal(0, 1, 100)  # Cに影響を受けるX2
Y2 = C + np.random.normal(0, 1, 100)  # Cに影響を受けるY2

# 3. 相互作用による相関
X3 = np.random.normal(0, 1, 100)  # 確率変数X3
Y3 = X3 * Z + np.random.normal(0, 1, 100)  # X3とZの相互作用によるY3

# 4. 介入変数による相関
M = 0.5 * X1 + np.random.normal(0, 1, 100)  # 介入変数M
Y4 = M + np.random.normal(0, 1, 100)         # Mに影響を受けるY4

# 5. 選択バイアスによる相関
data = pd.DataFrame({'X': np.random.normal(0, 1, 1000), 'Y': np.random.normal(0, 1, 1000)})
selected_data = data[data['X'] + data['Y'] > 0]  # 選択バイアスによるサンプリング
X5, Y5 = selected_data['X'], selected_data['Y']

# 各シナリオの相関を計算
correlations = {
    "Linear Combination": np.corrcoef(X1, Y1)[0, 1],
    "Common Cause": np.corrcoef(X2, Y2)[0, 1],
    "Interaction": np.corrcoef(X3, Y3)[0, 1],
    "Mediation": np.corrcoef(X1, Y4)[0, 1],
    "Selection Bias": np.corrcoef(X5, Y5)[0, 1]

}
correlations
```
{'Linear Combination': 0.9006752160894269,  
 'Common Cause': 0.4956349829376436,  
 'Interaction': 0.18331932519183555,  
 'Mediation': 0.41582842959619765,  
 'Selection Bias': -0.47565139836667164}  

   
# 動的な状態における相関の生成構造



### 1. 時間的相関（自己相関）

- **時間的依存関係による相関生成**:
  時系列データにおいて、ある時点の値が過去の値に依存することにより相関が生じることがあります。
  例えば、株価の動きを考える場合、ある日の株価 $ Y_t $ が前日の株価 $ Y_{t-1} $ に依存することが多いです。
  $$ Y_t = \alpha + \beta Y_{t-1} + \epsilon_t $$
  ここで、$ Y_t $ は時点 $ t $ での株価、$ \alpha $ と $ \beta $ はモデルのパラメータ、$ \epsilon_t $ は誤差項です。

### 2. 動的な因果関係

- **時間を通じた因果関係による相関生成**:
  ある変数が他の変数に時間を通じて影響を与えることにより、時間的な相関が生じます。
  例: 政策変更 $ X_t $ が経済指標 $ Y_t $ に時間をかけて影響を及ぼす場合、この影響は時間的に展開されます。
  $$ Y_t = \gamma + \delta X_{t-1} + \epsilon_t $$
  ここで、$ Y_t $ は時点 $ t $ での経済指標、$ X_{t-1} $ は前時点の政策変更、$ \gamma $ と $ \delta $ はモデルのパラメータ、$ \epsilon_t $ は誤差項です。

### 3. マルコフ連鎖

- **マルコフ性による相関生成**:
  現在の状態が直前の状態にのみ依存するプロセスにより相関が生じます。これはマルコフ連鎖として知られています。
  例: 天気の変化を考える場合、ある日の天気 $ Y_t $ が前日の天気 $ Y_{t-1} $ にのみ依存すると仮定します。
  $$ P(Y_t | Y_{t-1}) $$
  ここで、$ P(Y_t | Y_{t-1}) $ は前日の天気 $ Y_{t-1} $ が与えられた時の、ある日の天気 $ Y_t $ の条件付き確率です。

これらの例と式は、動的な状態における相関の生成構造を理解するのに役立ちます。


# 交絡

### 交絡因子の概念

交絡因子とは、研究されている主要な変数以外の変数で、研究結果に誤解を招く可能性がある変数です。この因子は、研究されている変数と結果の変数の両方に影響を与え、誤った因果関係を示唆する可能性があります。

### 静的な状態における交絡因子

静的な状態での相関の生成メカニズムにおいて、交絡因子は以下のように影響を及ぼす可能性があります：

1. **共通の原因による相関**:
   - 共通の原因の例（$ X $ と $ Y $ が共通の原因 $ Z $ によって影響を受ける）では、$ Z $ が交絡因子となる可能性があります。$ Z $ が考慮されない場合、$ X $ と $ Y $ 間の相関は誤って解釈される可能性があります。

2. **選択バイアスによる相関**:
   - 特定の条件に基づいてサンプルが選択された場合、その条件が交絡因子となり得ます。このような状況では、観察された相関が実際の因果関係を反映していない可能性があります。

### 動的な状態における交絡因子

動的な状態での相関の生成メカニズム（文書 "f" で述べられた）では、交絡因子は以下のように作用する可能性があります：

1. **時間的依存関係**:
   - 時系列データにおいて、過去のデータが現在のデータに影響を与える場合（自己相関）、過去のデータが交絡因子となることがあります。これは、時間的な遅れを考慮しない場合、誤った因果関係が推測される可能性があるためです。

2. **動的な因果関係**:
   - 時間を通じた因果関係において、過去の状態や変数が現在の状態に影響を与える場合、これらの過去の状態が交絡因子として作用することがあります。




# パラメータからみた視点

線形単回帰モデルは、応答変数 $ Y $ と説明変数 $ X $ 間の線形関係をモデル化します。モデル式は 
$$ Y = \beta_0 + \beta_1X + \epsilon $$
です。ここで、$ \beta_1 $（傾き）は、$ X $ が1単位変化したときの $ Y $ の平均的な変化量を示します。

#### 傾き（回帰係数）と相関係数
- 傾き（$ \beta_1 $）は、相関係数と $ X $ の標準偏差と $ Y $ の標準偏差の比に等しいです。数式では、$ \beta_1 = \rho \times \frac{\sigma_Y}{\sigma_X} $ と表されます。ここで、$ \rho $ は $ X $ と $ Y $ の相関係数、$ \sigma_Y $ と $ \sigma_X $ はそれぞれ $ Y $ と $ X $ の標準偏差です。

#### 実験と制御変数

説明変数が制御変数である場合、変動の大きさを考慮する必要が通常はありません。その理由は以下の通りです。

- **制御された環境**: 制御変数は実験や観察において研究者が意図的に設定する変数であり、自然発生する変動は限定的です。
- **変動の重要性**: 研究者が制御変数を操作する目的は、その変数の変化が応答変数に与える影響を観察することです。このため、変数自体の自然な変動よりも、変数の操作による効果が重要になります。

#### 統計モデリングからの視点

- **統計モデリングの目的**: 統計モデリングは、観測されたデータからパターンを見つけ出し、それを数学的モデルで表現することです。

- **線形単回帰モデルにおけるモデリング**: 線形単回帰モデルでは、二つの変数間の線形関係を見つけ出し、その関係を数値（回帰係数）で表現します。モデルの適合度は、残差の分析や決定係数によって評価されます。

#### 各種変数と分布

- **応答変数 $ Y $ の扱い**: 応答変数 $ Y $ は確率変数として扱われ、その条件付き分布は通常、正規分布に従うと仮定されます。
- **説明変数 $ X $ の扱い**: 説明変数 $ X $ は、確率変数として扱われることもありますが、多くの場合、非確率的な制御変数として扱われます。$ X $

 の分布形態に関する特定の仮定は通常設けられません。

#### 2変量正規分布と条件付き確率

- **モデルの定義**: 2変量正規分布は、$ X $ と $ Y $ が共に正規分布に従う場合の状況をモデル化します。

- **条件付き確率**: 一方の変数 $ X $ が与えられたときのもう一方の変数 $ Y $ の条件付き確率分布は正規分布に従います。

- **同一性の理由**: 2変量正規分布の条件付き確率を用いて求めた回帰係数と、最小二乗法を用いた回帰係数は、数学的に同じ結果を導きます。これは、両方の方法が $ X $ の変動に対する $ Y $ の平均的な応答を捉えているためです。

# 線形関係

線形単回帰分析の適用においては、応答変数と説明変数の間に存在する関係が原因やメカニズムに基づくものであるかどうかは必ずしも重要ではありません。重要なのは、これらの変数間に結果として線形関係が存在するかどうかです。

### 線形単回帰分析の適用
- **線形関係の存在**: 線形単回帰分析は、応答変数と説明変数の間に線形関係があると仮定した場合に適用されます。つまり、一方の変数が変化すると、他方の変数も一定の割合で変化するという関係がある場合です。
- **原因と結果の関係**: 線形単回帰は、説明変数が応答変数に対して原因となるか、あるいはただの相関関係にあるかにかかわらず適用されます。重要なのは、変数間に線形のパターンが観察されるかどうかです。

### モデルの仮定
- **線形性**: 応答変数 \( Y \) は説明変数 \( X \) の線形関数であると仮定されます。
- **誤差項の仮定**: 誤差項 \( e \) は平均がゼロで、独立かつ等分散（ホモスケダスティ）を持つと仮定されます。
- **独立性**: 説明変数と誤差項は互いに独立であると仮定されます。
- **正規分布の誤差**: 理想的には、誤差項は正規分布に従います。

### 適用の制限
- **非線形関係の存在**: 変数間の関係が非線形である場合、線形モデルは適切でない可能性があります。この場合、非線形回帰モデルや他の統計手法が適切です。
- **均一分散の仮定の違反**: 等分散性の仮定が破られると、モデルの推定値や標準誤差が不正確になる可能性があります。
- **外れ値の影響**: 外れ値はモデルの推定値に大きな影響を与える可能性があり、データ分析前にこれらを識別し、適切に処理する必要があります。

これらの条件と原則に基づき、線形単回帰分析はデータに適切に適用され、有用な洞察を提供することができます。

# 相関を持つデータの分析

統計的関数モデルは、データの間に存在する関係やパターンを捉えるために使用されます。これらのモデルは、データの相関関係を分析し、予測や解釈を行う際に役立ちます。以下に、主要な統計的関数モデルとその中での相関の役割について説明します：

## 静的状態

1. **線形回帰モデル**:
   - 線形回帰モデルは、説明変数（独立変数）と応答変数（従属変数）間の線形関係をモデル化します。
   - このモデルでは、相関係数は説明変数と応答変数間の線形関係の強さと方向を示す重要な尺度です。
   - 回帰係数（傾き）は、説明変数が1単位変化するときに応答変数がどれだけ変化するかを示し、変数間の相関関係を量的に表現します。

2. **ロジスティック回帰モデル**:
   - ロジスティック回帰は、応答変数が二項（0または1）の場合に用いられる統計的関数モデルです。
   - このモデルでは、説明変数と応答変数の間の相関関係を、オッズ比（確率の比）としてモデル化します。
   - 相関関係は、応答変数の起こりやすさに関連する説明変数の効果を評価するために使用されます。

3. **多変量回帰モデル**:
   - 多変量回帰では、複数の説明変数と一つの応答変数間の関係をモデル化します。
   - このモデルでは、変数間の相関関係を考慮して、各説明変数が応答変数に与える独立した影響を評価します。
   - 相関係数は、変数間の関連性を評価し、多重共線性などの問題を特定するために役立ちます。


    **統計的関数モデルの中で生存分析モデル、一般化線形モデル (GLM)、混合効果モデルでは、相関の役割はそれぞれのモデルの特性や分析目的に応じて異なります。

4. **一般化線形モデル (GLM)**:
   - GLMでは、応答変数の分布が正規分布に限らず、ポアソン分布や二項分布などに従う場合に用いられます。
   - このモデルでは、説明変数間の相関や、応答変数と説明変数間の相関を分析することがあります。
   - 相関の考慮は、データの特性や分析の目的に応じて変わります。

5. **混合効果モデル**:
   - 混合効果モデルは、データに内在するクラスタリングや階層構造を考慮します。
   - このモデルでは、個体内や群内の相関（例えば、同じグループ内の個体間の相関）を考慮することが一般的です。
   - 相関の役割は、特に群内変動や時間依存性の分析において重要です。

## 動的状態

6. **時間系列分析モデル**:
   - 時間系列分析は、時間に依存するデータのパターンをモデル化します。
   - このモデルでは、相関は時間的な遅れ（ラグ）を持つ変数間の関係を示すために使用されます。
   - 自己相関や相互相関の分析を通じて、時間的なパターンや周期性を把握することができます。

    **統計的関数モデルの中で生存分析モデル、一般化線形モデル (GLM)、混合効果モデルでは、相関の役割はそれぞれのモデルの特性や分析目的に応じて異なります。

7. **生存分析モデル**:
   - 生存分析では、イベント（例えば、病気の回復、機械の故障など）が発生するまでの時間とその発生確率を分析します。
   - 相関は、例えば、異なるグループ（治療群と対照群など）間での生存時間の違いを分析する際に考慮されることがあります。
   - しかし、主な焦点は一般的には時間とイベント発生の関連性にあります。


各モデルにおいて、相関の扱いはそのモデルの設計や使用するデータ、分析の目的に大きく依存します。そのため、一概に相関の役割が小さいとは言えず、分析の文脈に応じて相関を考慮する必要があります。