共分散分析 (ANCOVA; ANalysis of COVAriance)
解説
共分散分析とは
共分散分析 (Analysis of Covariance; ANCOVA) は、分散分析 (ANOVA) と回帰分析を組み合わせた統計手法です。カテゴリカル変数(群分け変数)の効果を評価する際に、連続変数(共変量)の影響を統計的に制御(調整)します。
例えば、2つの治療法の効果を比較する際、患者の年齢や治療前のスコアなどの連続変数が結果に影響する場合、ANCOVAを用いることで、これらの影響を取り除いた上で治療法間の差を検定できます。
主な用途:
- 治療効果の比較: 治療前の状態を共変量として調整
- 教育研究: 事前テストの成績を制御した上での教育効果の比較
- 臨床試験: ベースライン値を調整した群間比較
- 交絡因子の調整: 群間で偏りのある共変量の影響を制御
本アプリでサポートする機能
| 機能 | 詳細 | 特徴 |
|---|---|---|
| ANCOVA | aov() による分散分析 | 交互作用項を含むモデル |
| 効果量 | η² (イータ二乗)、偏η²、ω² (オメガ二乗) | 3種類の効果量を同時算出 |
| 共変量プロット | 各連続変数×群別の回帰直線 | 回帰直線の平行性の視覚的検証 |
| 残差Q-Qプロット | 残差の正規性診断 | 正規性仮定の確認 |
ANCOVAの前提条件
ANCOVAには分散分析の前提条件に加えて、特有の重要な前提があります:
回帰直線の平行性(最重要前提)
- 各群の共変量と目的変数の回帰直線が平行であること
- つまり、共変量の効果が全ての群で同じであること
- 本アプリでは共変量プロットにより視覚的に確認できます
- 回帰直線が交差している場合、ANCOVAの結果は信頼できません
その他の前提条件
- 正規性: 残差が正規分布に従うこと
- 等分散性: 各群の残差の分散が等しいこと
- 線形性: 共変量と目的変数の関係が線形であること
- 独立性: 各観測値が独立であること
- 共変量の独立性: 共変量が群分け変数(処理)の影響を受けていないこと
データ要件と推奨事項
変数の要件
- 目的変数: 連続変数 1つ
- 説明変数: 連続変数とカテゴリカル変数の両方が必須
- 連続変数のみ、またはカテゴリカル変数のみの場合は適用不可(ANOVAまたは重回帰分析を使用)
サンプルサイズの目安
| 分析の種類 | 最低限 | 推奨 |
|---|---|---|
| 二群+共変量1つ | 各群に15件以上 | 各群に30件以上 |
| 多群+共変量複数 | 各群に共変量数×5件以上 | 各群に共変量数×10件以上 |
効果量の解釈
| 効果量 | 小 | 中 | 大 |
|---|---|---|---|
| η² | 0.01 | 0.06 | 0.14 |
| 偏η² | 0.01 | 0.06 | 0.14 |
| ω² | 0.01 | 0.06 | 0.14 |
ANCOVAとANOVAの使い分け
| 状況 | 推奨手法 |
|---|---|
| 説明変数がすべてカテゴリカル | ANOVA |
| 連続変数(共変量)の影響を制御したい | ANCOVA |
| 説明変数がすべて連続変数 | 重回帰分析 |
| 交絡因子としての連続変数を調整した群間比較 | ANCOVA |
注意事項
- 回帰直線の平行性: 共変量プロットで回帰直線が明らかに平行でない場合、交互作用を含むモデルの検討が必要です
- 共変量の選択: 目的変数と関連があり、かつ処理の影響を受けていない変数を共変量として選択してください
- 共変量の数: 共変量が多すぎると過剰適合のリスクがあります。理論的に意味のある変数のみを含めてください
- 因果推論: ANCOVAによる調整は統計的な調整であり、ランダム化が行われていない場合、未測定の交絡因子の影響を完全には排除できません
他の多変量解析手法
複数の説明変数によるデータ分析 (多変量解析) ページでは、本手法を含む10種類の多変量解析手法の概要と比較をご覧いただけます。
下のアプリでは、入力されたデータの目的変数・説明変数のタイプを自動判定し、適用可能な統計手法をすべて提示します。 そのため、本ページの手法以外の結果も表示されることがあります。これは同じデータ設定で複数の分析を比較検討できる仕組みです。
アプリ
| 分類内容 | 値 | |
| {{ item.tag }} |
データの取り扱い
- データインポート
- データの読み込みは、ブラウザ内で完結し、外部へのデータ送信は発生しません。
- データ保持
- 読み込んだデータはブラウザ内に保持されます。
- ブラウザのセッションが終了または全てのタブが閉じられると、保持していたデータは自動的に破棄されます。
- データの安全性
- ブラウザがクラッシュした場合でも、10分経過すれば次回の起動時にデータは安全に消去されます。
- 共用のPCでの使用も考慮し、データの外部漏洩のリスクを最小化しています。
クラウド R を利用する時のデータ送信
- 最小限のデータ送信
- 外部のRサーバーへ送信されるデータは、数値計算に必要な最小限のセットに制限されています。
- 送信データは解析に必要なサブセットのみに限られます。
- ユーザーコントロール下のデータ送信
- 送信前に、どのデータが外部サーバーへ送信されるのか内容を確認することが可能です。
- データの送信はユーザーの操作により行われ、自動的な送信は行いません。
- クラウド R 出力結果の保持
- クラウド R からの出力結果は、将来の自動翻訳や自動解説の機能実現のため、サーバーがデータベースに保持します。
- その際に、送信者の情報や、計算元となるデータなど、プライバシーに関わる情報は保持しません。
- 通信経路も全て暗号化していますので、たとえプライバシーに関わる情報が含まれていたとしても、通常は漏洩する恐れはありません。
AI による解説を利用する時のデータ送信
- 最小限のデータ送信
- 外部のAIサーバーへ送信されるデータは、クラウド R の出力結果と、用いた統計手法の徐放です。
- ただし、クラウド R の出力結果に連続した数値データが含まれる場合は、AI にデータ形式を認識させる目的で、連続データの最初の行のみを送信します。
- クラウド R 出力結果の保持
- AI による解説内容は、将来の品質向上などのため、サーバーがデータベースに保持します。
- その際に、送信者の情報や、計算元となるデータなど、プライバシーに関わる情報は保持しません。
Reactive stat において、統計データの変数は、通常の数値や文字列として扱われます。 したがって、日付や時間の概念は直接的にはサポートされていません。
統計計算を行う際には、日付や時間の差分を数値として事前に用意しておく必要があります。
チェックされた行が削除対象となります
削除対象の行
データ入力
AI による R コードの解説
R の出力結果
R出力図形
AI による R 出力結果の解説
- データ: カラム名 (列名) をそのまま記述するか、"列名" のようにダブルクォートで挟んで指定
- 算術演算子: +, -, *, /, ()
- 基本関数: abs(), sqrt(), pow(), exp(), log(), log10()
- 三角関数: sin(), cos(), tan(), asin(), acos(), atan()
- 丸め関数: round(), floor(), ceil()
体重 / pow(身長, 2), "体重" / ("身長" * "身長")
{{ column }}
{{title}}
入力されたデータの目的変数・説明変数のタイプを自動判定し、適用可能な統計手法をすべて提示します。 これは同じデータ設定で複数の分析を比較検討できる仕組みです。
{{calledFromSubPage? '本アプリで統合的に実行可能な': ''}}分析法の特徴一覧
| 手法 | 英語名 | 目的変数のタイプ | 説明変数のタイプ | 特徴 | Wikipedia |
|---|---|---|---|---|---|
| {{ method.japaneseName }} | {{ method.englishName }} | {{ method.dependentVariableType }} | {{ method.independentVariableType }} | {{ method.characteristic }} |
データ
設定
統計手法
| 変数名 | 数値 | 連続変数 | カテゴリカル /離散変数 |
|||
|---|---|---|---|---|---|---|
| {{ variable }} | {{ type.numerical ? '〇' : '-' }} | {{ type.originallyContinuous ? '〇' : '-' }} | {{ type.originallyCategorical ? '〇' : '-' }} |
データの分類は以下のルールに従っています
変数タイプは手動で調整できます
- : 有効 / : 無効
- クリックすると切り替わり、各統計手法に渡されるデータ形式を明示できます。
| 手法 | 目的変数のタイプ | 説明変数のタイプ | 適用 |
|---|---|---|---|
| {{ method.japaneseName }} | {{ method.dependentVariableType }} | {{ method.independentVariableType }} | {{ method.reason }} |
結果
{{method.japaneseName}} ({{method.englishName}})
- {{ warning }}