チュートリアル: ANOVA と線形回帰によるグループ間比較

このチュートリアルでは製造業の検査データを例に、グラフでパターンを探して ANOVA と線形回帰で定量化し、結果を Report タブに整理するまでの流れを扱います。

ある工場に同一部品を生産する 3 つのライン A, B, C があり、「ライン B の寸法誤差が大きい」という報告が上がっている状況を考えます。温度や湿度などの環境条件も日によって変わるため、ラインの違いと環境条件のどちらが効いているのかを切り分けたいという想定です。

データを読み込む

ランチャー画面の Sample Data セクションから Production Line をクリックすると、300 行 7 列のデータが読み込まれます。

この状態を MIDAS で開く

列名内容
line生産ライン(A / B / C)
shiftシフト(Day / Night)
operatorオペレータ ID(Op1 -- Op5)
temperature作業環境温度(°C)
humidity湿度(%)
cycle_timeサイクルタイム(秒)
dimension_error目標寸法からの誤差の大きさ(mm、非負)

dimension_error が応答変数です。非負の値で、小さいほど目標寸法に近く品質が高いことを意味します。

グラフでパターンを探す

Data Table タブで dimension_error 列をクリックすると、Statistics タブにヒストグラムと統計量が表示されます。全体の平均は約 0.116 mm、標準偏差は約 0.042 mm です。

Statistics タブで dimension_error 全体の統計量を表示

Show stats by ドロップダウンから line を選択すると、ライン別の統計量に切り替わります。ライン B の平均が A や C より高くなっています。

Statistics タブでライン別の dimension_error を表示

Statistics タブではライン別の分布を重ね描きで確認しました。Graph Builder の Faceted 表示で同じ軸に並べると、分布の位置関係が一目で分かります。Analysis > Graph Builder... から Histogram を作成し、dimension_error を Column、line を Group By に設定して FacetedColumns1 にします。

Histogram の Grouping 設定:Faceted、Columns=1

スクロールするとライン A, B, C のヒストグラムが縦に並んでいます。

ライン別の dimension_error ヒストグラム(Faceted 表示、縦 1 列)

ライン B のヒストグラムが右にずれています。A と C は似た位置に分布しています。

次に環境条件との関係を探します。Graph Builder で Scatter Plot を作成し、X に temperature、Y に dimension_error、Color に line を設定します。

temperature × dimension_error の散布図(line で色分け)

温度が高い領域で寸法誤差が大きくなる傾向が見えます。同じ温度帯でもライン B の点が上寄りに位置しています。

ここで「ライン B の誤差が大きいのは、B だけ温度が高いからではないか」という疑問が生じます。散布図の色分けを見ると、どの色の点も温度の同じ範囲に広がっており、特定のラインだけ高温帯に偏っている様子は見られません。

ここまでの探索で 2 つのパターンが見えました。ライン B の誤差が大きいことと、温度と誤差に正の関係がありそうなことです。この 2 つを ANOVA と回帰分析で定量的に評価します。

ANOVA でライン間の差を推定する

グラフではライン B の寸法誤差が大きそうに見えますが、具体的に何 mm 大きいのか、その推定がどの程度確かなのかはグラフからは読み取れません。ANOVA で各ラインの平均差を信頼区間付きで推定します。

データには shiftoperator もありますが、まずはライン間の差に絞って確認します。Analysis > ANOVA... を開き、One-Way で line を Factor、dimension_error を Response に設定して実行します。

Group Statistics テーブル

群ごとの平均と 95% 信頼区間が表示されます。ライン B の平均は約 0.144 mm で、A(約 0.098 mm)や C(約 0.105 mm)より高い値です。

次に、ライン間の差そのものを推定します。平均の引き算で差の値は出せますが、その推定がどの程度確かかは信頼区間で見る必要があります。結果エリアの Pairwise Mean Differences (Tukey HSD) セクションが、全ペアの平均差を同時信頼区間付きで表示します1

Tukey HSD の結果

ペア差(mm)方向
A -- B約 −0.046B が大きい
A -- C約 −0.007ほぼ同じ
B -- C約 +0.039B が大きい

差は表頭のペアの順序で「左のライン − 右のライン」として計算します。負の値は右のラインの方が大きいことを示します。

A -- B と B -- C の信頼区間は 0 をまたがず、データと整合する差の値はいずれも同じ符号です。A -- C の信頼区間は 0 をまたいでおり、差の方向すら確定できません。

ただしライン間の差がすべてではありません。ANOVA Table を見ると、η² は約 0.24 で、このデータでは寸法誤差の全分散のうち約 24% がライン間の違いで説明されます2。残りの約 76% は同じライン内のばらつき——環境条件の違いや測定のばらつきなど——に帰属します。

ANOVA テーブル

ここまで読んだ信頼区間は ANOVA の仮定を前提としているため、大きく逸脱していないかを Assumption Diagnostics セクションで確認します3

正規性は Q-Q プロットで確認します。ANOVA は群ごとの正規性を仮定するため、見るのは群ごとの Q-Q プロットです。各ラインの残差が対角線にほぼ沿っていれば、正規性からの明らかな逸脱はありません。

等分散性は群ごとの SD を見比べて確認します。各ラインの SD は 0.035 -- 0.038 とほぼ同程度で、最大と最小の比は約 1.1 です。大きな逸脱は見られません。

ANOVA の Q-Q プロット

回帰分析でライン効果と環境要因をまとめて評価する

ANOVA ではラインの違いだけを見ましたが、環境変数の寄与はまだ分かりません。回帰分析でライン効果と環境要因を 1 つのモデルに入れて同時に推定します。

OLS の Predictor は数値列しか受け付けないため、line(A/B/C)を 0/1 の列に変換します。Data > Dummy Coding... を開き、line の Action を Dummy code に設定します。Reference には既定でカテゴリ順序の先頭である A が選ばれ、A を基準に「B かどうか」(line_B)と「C かどうか」(line_C)の 2 列が生成されます4

Dummy Coding の設定

変換後のデータセットで Analysis > Linear Regression (OLS)... を開き、dimension_error を Response、line_Bline_Ctemperaturehumiditycycle_time を Predictor に設定します。

OLS の設定:Dummy Coded データセット、5 変数を Predictor に選択

Run Analysis で実行します。

Model Summary

R-squared は約 0.71 で、ライン効果と環境変数を合わせて dimension_error の分散の約 71% を説明します。

係数の解釈

係数テーブル

line_B の係数は約 +0.046 mm です。温度・湿度・サイクルタイムが同じ観測どうしで比べると、ライン B の寸法誤差はライン A より平均 0.046 mm 大きいと推定されます。このように他の変数を一定に保って比べることを回帰では「制御する」と言います5。この値は Tukey HSD の A -- B 差とほぼ同じで、環境変数を制御してもライン B の効果は残ります。B の誤差の大きさは環境条件の偏りでは説明できません。line_C の係数は約 +0.006 mm で信頼区間が 0 付近をまたいでおり、A との明確な差は見られません。

temperature の係数は約 +0.013 mm/°C です。他の変数が同じなら、モデルが予測する寸法誤差は温度が 1°C 高いごとに 0.013 mm 増えます。

cycle_time の係数は約 −0.003 mm/秒です。サイクルタイムが長い観測ほど、誤差が小さい傾向があります。

humidity の係数は 0.001 と小さく、寄与はわずかです6

診断プロットの確認

これらの係数と信頼区間は、残差の正規性・等分散性・線形性が成り立つことを前提としています。モデルに名前を付けて Save ModelView Diagnostics で診断プロットを確認します。

診断プロット

4 つの診断プロットに、前提の崩れを示すパターンは見えません。Residuals vs Fitted では残差が予測値によらずゼロ付近に散らばり、Scale-Location でも残差の大きさに系統的な傾向はありません。Normal Q-Q では標準化残差が対角線にほぼ沿っています。Residuals vs Leverage では、影響の大きい観測の目安となる Cook's Distance の等高線が表示範囲に現れないほど、どの観測の影響も小さくなっています7

結果を Report タブにまとめる

ここまでの結果を 1 つのレポートに整理します。それぞれの結果は、次の場所にある Add to Report ボタンで追加します。

  • Graph Builder のグラフ: プレビュー下部
  • ANOVA の各テーブル: セクション見出し
  • 線形回帰: 前のセクションで保存したモデルの結果エリア

ボタンを押すと表示されるメニューまたはダイアログで、追加先の既存レポートを選ぶか、新しいレポートを作成します。

追加した要素は Report タブに並びます。レポートヘッダーの メニューから Edit Content を選ぶと Markdown エディタが開き、要素の間に見出しや説明文を書き加えたり、要素の並び順を入れ替えたりできます8

この分析の結果をレポートにまとめるとこのような形になります。

実際の画面を見る

クリックしてMIDASアプリケーションを起動

まとめ

冒頭の報告「ライン B の寸法誤差が大きい」について、分かったことを整理します。

  • ライン B の寸法誤差はライン A より平均 0.046 mm 大きく、環境変数を制御しても残る(回帰の line_B 係数と Tukey HSD がほぼ一致)。A と C の間に明確な差はない
  • ライン間の差は全分散の約 24% にとどまる。残りは温度などライン以外の要因によるもので、温度には正の関連(1°C あたり約 0.013 mm)、サイクルタイムには負の関連がある

脚注

  1. 同時信頼区間は、複数のペアをまとめて見たときに区間全体で指定した信頼度を保つよう、個々の区間を通常より広くとります。手法の詳細は Tukey HSD を参照してください。

  2. テーブルには ω² も表示されます。母集団での分散割合の推定量として η² が持つ上方への偏りを補正したもので、このデータでは両者はほぼ同じ値です。詳細は ANOVA テーブル を参照してください。

  3. 仮定の詳細は ANOVA の仮定 を参照してください。

  4. A の列を作らない理由と基準の選び方は Dummy Coding を参照してください。

  5. 詳細は 偏回帰係数の解釈 を参照してください。

  6. 係数テーブルには標準化係数(Std. Coef.)と多重共線性の指標(VIF)の列もあります。読み方は 係数テーブル を参照してください。

  7. 各プロットの読み方と問題時の対処は Linear Regression の診断プロット を参照してください。

  8. 操作の詳細は レポート を参照してください。