コンセプト
単純な線形回帰モデリングの基本的な目標は、X 値と Y 値のペア (つまり、X と Y の測定値) で構成される 2 次元平面から最適な直線を見つけることです。 。 最小分散法を使用して直線が見つかったら、さまざまな統計テストを実行して、その直線が観察されたY値からどの程度逸脱しているかを判断できます。
線形方程式 (y = mx + b) には、提供された X および Y データに基づいて推定する必要がある 2 つのパラメーターがあります。それらは、傾き (m) と y 切片 (b) です。 )。これら 2 つのパラメーターが推定されると、観測値を線形方程式に入力し、方程式によって生成される Y の予測値を観測することができます。
最小分散法を使用してmとbパラメータを推定するには、すべてのYの観測値と予測値を最小化するようなmとbの推定値を見つける必要がありますX の値。観測値と予測値の差は誤差 (y i- (mx i+ b) ) と呼ばれ、各誤差値を 2 乗してこれらの残差を合計すると、結果は次のようになります。 予測二乗差と呼ばれる数値。最小分散法を使用して最適な適合を決定するには、予測分散を最小化する m と b の推定値を見つけることが含まれます。
最小分散法を満たす推定値 m と b を見つけるには、2 つの基本的な方法を使用できます。最初のアプローチでは、数値検索プロセスを使用して、異なる m と b の値を設定して評価し、最終的に分散が最小になる推定値を決定します。 2 番目の方法は、微積分を使用して m と b を推定するための方程式を見つけることです。これらの方程式の導出に関わる微積分には立ち入りませんが、SimpleLinearRegression クラスでこれらの分析方程式を使用して、m と b の最小二乗推定値を求めました (SimpleLinearRegression クラスの getSlope を参照してください)。 getYIntercept メソッド)。
m と b の最小二乗推定値を見つけるために使用できる方程式がある場合でも、これらのパラメーターを一次方程式に代入すると、結果がデータによく適合する直線になるとは限りません。 。この単純な線形回帰プロセスの次のステップは、残りの予測分散が許容できるかどうかを判断することです。
統計的決定プロセスを使用すると、直線がデータに適合するという対立仮説を棄却できます。このプロセスは、確率関数を使用してランダムに大きな観測値の確率を求める T 統計量の計算に基づいています。パート 1 で述べたように、SimpleLinearRegression クラスは多数の集計値を生成します。重要な集計値の 1 つは、線形方程式がデータにどの程度適合しているかを測定する T 統計量です。一致が良好な場合、T 統計量は大きな値になる傾向があります。T 値が小さい場合は、Y 値の平均が最良であると仮定するデフォルトのモデルに線形方程式を置き換える必要があります。予測子 (一連の値の平均が次の観測の有用な予測子となることが多いため)。
T 統計値が Y 値の平均を最良の予測値として使用できないほど十分に大きいかどうかをテストするには、T 統計値をランダムに取得する確率を計算する必要があります。確率が低い場合は、平均が最良の予測子であるという帰無仮定を省くことができるため、単純な線形モデルがデータによく適合していると確信できます。 (T 統計量の確率の計算の詳細については、パート 1を参照してください。)
統計的な意思決定プロセスに戻りましょう。帰無仮説を採用すべきでない場合は教えてくれますが、対立仮説を受け入れるかどうかは教えてくれません。研究環境では、理論的および統計的パラメーターを通じて線形モデルの対立仮説を確立する必要があります。
構築するデータ調査ツールは、線形モデルの統計的意思決定プロセス (t 検定) を実装し、線形モデルの構築に必要な理論的および統計的パラメーターの構築に使用できる概要データを提供します。データ調査ツールは、ナレッジ ワーカーが小規模から中規模のデータ セットのパターンを研究するための意思決定支援ツールとして分類できます。
学習の観点から見ると、単純な線形回帰モデリングは、より高度な形式の統計モデリングを理解する唯一の方法であるため、研究する価値があります。たとえば、単純な線形回帰の多くの中心的な概念は、重回帰 (重回帰)、因子分析 (因子分析)、および時系列 (時系列) を理解するための優れた基礎を確立します。
単純な線形回帰も多用途のモデリング手法です。これを使用して、生データを変換する (通常は対数変換またはべき乗変換を使用) ことによって、曲線データをモデル化できます。これらの変換によりデータが線形化され、単純な線形回帰を使用してモデル化できるようになります。結果として得られる線形モデルは、変換された値に関連する線形式として表されます。
確率関数
前の記事では、R を使用して確率値を見つけ、PHP を使用して確率関数を実装するという問題を回避しました。私はこの解決策に完全には満足できなかったので、「PHP に基づいて確率関数を開発するには何が必要か」という質問について調査を開始しました。
私はオンラインで情報とコードを探し始めました。両方のソースは、書籍 Numerical Recipes in C の Probability Functions です。いくつかの確率関数コード (gammln.c および betai.c 関数) を PHP で再実装しましたが、まだ結果に満足していません。他の実装よりもコードが少し多いようです。さらに、逆確率関数も必要です。
幸いなことに、私は John Pezullo の Interactive Statistical Calculation に出会いました。 John の確率分布関数に関する Web サイトには、学習を容易にするために必要な関数がすべて JavaScript で実装されています。
Student T 関数と Fisher F 関数を PHP に移植しました。 Java 命名スタイルに準拠するように API を少し変更し、すべての関数を Distribution というクラスに埋め込みました。この実装の優れた機能は、このライブラリ内のすべての関数で再利用される doCommonMath メソッドです。わざわざ実装しなかった他のテスト (正規性テストとカイ 2 乗テスト) も doCommonMath メソッドを使用します。
この移植の別の側面も注目に値します。 JavaScript を使用すると、ユーザーは動的に決定された値を次のようなインスタンス変数に割り当てることができます:
PHP ではこれを行うことはできません。インスタンス変数には単純な定数値のみを割り当てることができます。この欠陥が PHP5 で解決されることを願っています。
リスト 1 のコードではインスタンス変数が定義されていないことに注意してください。これは、JavaScript バージョンでは値が動的に割り当てられるためです。
リスト1.確率関数の実装
出力方法
PHP で確率関数を実装したので、PHP ベースのデータ調査ツールの開発で残る唯一の課題は、分析結果を表示する方法を設計することです。
簡単な解決策は、必要に応じてすべてのインスタンス変数の値を画面に表示することです。最初の記事では、バーンアウト研究の一次方程式、
T 値と
T 確率を示すときにまさにそれを行いました。特定の目的で特定の値にアクセスできると便利であり、SimpleLinearRegression はこの使用法をサポートしています。
ただし、結果を出力する別の方法は、出力の一部を体系的にグループ化することです。回帰分析に使用される主要な統計ソフトウェア パッケージの出力を調査すると、それらの出力が同じ方法でグループ化される傾向があることがわかります。これらには、
概要表、
分散分析表、
パラメータ推定表、および
R値が含まれる傾向があります。同様に、次の名前の出力メソッドをいくつか作成しました: