ホームページ  >  記事  >  php教程  >  PHP で実装された単純な線形回帰 (2)

PHP で実装された単純な線形回帰 (2)

WBOY
WBOYオリジナル
2016-06-21 09:14:441486ブラウズ

出力と確率関数の欠点を解決するデータ調査ツール

このシリーズのパート 1 は、単純線形回帰クラスの 3 つの要素が欠けている状態で終了しました。この記事では、著者 Paul Meagher が PHP ベースの確率関数を使用してこれらの欠点に対処し、出力メソッドを SimpleLinearRegression クラスに統合し、グラフィカル出力を作成する方法を示します。彼は、小規模から中規模のデータ セットに含まれる情報を深く調査するように設計されたデータ調査ツールを構築することで、これらの問題を解決しました。 (パート 1 では、著者は実装言語として PHP を使用して、単純な線形回帰アルゴリズム パッケージのコア部分を開発および実装する方法を示します。)


この 2 部構成シリーズのパート 1 (「PHP を使用した単純な線形の実装」)回帰」)で、数学ライブラリが PHP に役立つ理由を説明しました。また、実装言語として PHP を使用して、単純な線形回帰アルゴリズムのコア部分を開発および実装する方法も示しました。

この記事の目的は、パート 1 で説明した SimpleLinearRegression クラスを使用して重要なデータ調査ツールを構築する方法を示すことです。

簡単なレビュー: 概念
単純な線形回帰モデリングの背後にある基本的な目標は、X 値と Y 値のペア (つまり、X と Y の測定値) で構成される 2 次元平面から最適な直線を見つけることです。最小分散法を使用して線が見つかったら、さまざまな統計テストを実行して、その線が観察された Y 値からの偏差とどの程度一致しているかを判断できます。

線形方程式 (y = mx + b) には、提供された X および Y データから推定する必要がある 2 つのパラメーターがあります。それらは、傾き (m) と y 切片 (b) です。これら 2 つのパラメーターが推定されると、観測値を線形方程式に入力し、方程式によって生成された Y 予測を観測できます。

最小分散法を使用して m および b パラメーターを推定するには、すべての X 値に対する Y の観測値および予測値を最小化する m および b の推定値を見つける必要があります。観測値と予測値の差は誤差 (yi - (mxi + b)) と呼ばれ、各誤差値を 2 乗してこれらの残差を合計すると、結果は数値と呼ばれる予測の 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 [/url] Probability Functions』という書籍です。いくつかの確率関数コード (gammln.c 関数と betai.c 関数) を PHP で再実装しましたが、まだ結果に満足していません。他の実装よりもコードが少し多いようです。さらに、逆確率関数も必要です。

幸いなことに、私は John Pezullo の対話型統計計算に出会いました。確率分布関数に関する John の Web サイトには、学習を容易にするために必要な関数がすべて JavaScript で実装されています。

Student T 関数と Fisher F 関数を PHP に移植しました。 Java 命名スタイルに準拠するように API を少し変更し、すべての関数を Distribution というクラスに埋め込みました。この実装の優れた機能は、このライブラリ内のすべての関数で再利用される doCommonMath メソッドです。わざわざ実装しなかった他のテスト (正規性テストとカイ 2 乗テスト) も doCommonMath メソッドを使用します。

この移植の別の側面も注目に値します。 JavaScript を使用すると、ユーザーは動的に決定された値をインスタンス変数に割り当てることができます。例:

var PiD2 = pi() / 2


これは PHP では実行できません。インスタンス変数には単純な定数値のみを割り当てることができます。この欠陥が PHP5 で解決されることを願っています。

リスト 1 のコードではインスタンス変数が定義されていないことに注意してください。これは、JavaScript バージョンでは値が動的に割り当てられるためです。

リスト 1. 確率関数の実装

// Distribution.php

// Copyright John Pezullo
// PHP と同じ条件でリリース
// Paul Meagher による PHP ポートと OO'fying。

クラス分布 {

function doCommonMath($q, $i, $j, $b) {

$zz = 1;
$k = $i; k <= $j) {
$zz = $zz * $q * $k / ($k - $b);
$z = $z + $zz;
$z を返す
}

関数 getStudentT($t, $df) {
$w = $t / sqrt($df); w );

if ($df == 1) {
return 1 - $th / (pi() / 2)
}

$sth = sin($th); ) ;

if( ($df % 2) ==1 ) {
return
1 - ($th + $sth * $cth * $this->doCommonMath($cth * $cth, 2, $df - 3 , -1))
/ (pi()/2);
} else {
return 1 - $sth * $this->doCommonMath($cth * $cth, 1, $df - 3, -1) ;
}

}

関数 getInverseStudentT($p, $df) {
$dv = 0.5;
$t = 0;
$t = (1 / $v) - 1;
$dv = $dv / 2;
if ( $this->getStudentT($t, $df) > $p) {
$v = $v - $dv;
} else {
$v = $v + $dv;
}
}
return $t;


function getFisherF($f, $n1, $n2) {
//表示されていません
}

function getInverseFisherF($p, $n1, $n2) {
// 実装されていますが、表示されていません
}

}
?> これで、確率を実装しました。 PHP の機能を理解した後、PHP ベースのデータ調査ツールを開発する際に残る唯一の課題は、分析結果を表示する方法を設計することです。

簡単な解決策は、必要に応じてすべてのインスタンス変数の値を画面に表示することです。最初の記事で、バーンアウト研究の線形方程式、T 値、および T 確率を示すときに、まさにそれを行いました。特定の目的で特定の値にアクセスできると便利であり、SimpleLinearRegression はこの使用法をサポートしています。

ただし、結果を出力する別の方法は、出力の一部を体系的にグループ化することです。回帰分析に使用される主要な統計ソフトウェア パッケージの出力を調査すると、それらの出力が同じ方法でグループ化される傾向があることがわかります。多くの場合、要約テーブル、分散分析テーブル、パラメータ推定テーブル、および R 値が含まれます。同様に、次の名前でいくつかの出力メソッドを作成しました:

showsummaryTable()
showAnalysisOfVariance()
showParameterEstimates()
showRValues()

線形予測式を表示するメソッド (getFormula()) もあります。多くの統計ソフトウェア パッケージは式を出力しませんが、ユーザーが上記のメソッドの出力に基づいて式を構築することを期待しています。これは、データのモデル化に最終的に使用する式の最終形式が、次の理由によりデフォルトの式と異なる可能性があることが理由の 1 つです:

1. Y 切片には意味のある解釈がない
2.変換されている可能性があり、最終的な解釈を得るには変換を解除する必要がある場合があります。

これらのメソッドはすべて、出力媒体が Web ページであることを前提としています。これらの集計値を Web ページ以外の媒体に出力したい場合があることを考慮して、これらの出力メソッドを SimpleLinearRegression クラスを拡張したクラスでラップすることにしました。リスト 2 のコードは、出力クラスの一般的なロジックを示すことを目的としています。共通ロジックをより目立たせるために、さまざまな show メソッドを実装するコードが削除されました。

リスト 2. 出力クラスの共通ロジックを示します

// HTML.php

// Copyright 2003, Paul Meagher
// GPL に基づいて配布

include_once "slr/SimpleLinearRegression.php" ;

class SimpleLinearRegressionHTML は SimpleLinearRegression を拡張します {

function SimpleLinearRegressionHTML($X, $Y, $conf_int) {
SimpleLinearRegression::SimpleLinearRegression($X, $Y, $conf_int)
}

function showTablesummary($x_name, $); y_name) { }

function showAnalysisOfVariance() { }

function showParameterEstimates() { }

function showFormula($x_name, $y_name) { }

function showRValues() {}
}

?>




このクラスのコンストラクターは、SimpleLinearRegression クラス コンストラクターの単なるラッパーです。つまり、SimpleLinearRegression 分析の HTML 出力を表示したい場合は、SimpleLinearRegression クラスを直接インスタンス化するのではなく、SimpleLinearRegressionHTML クラスをインスタンス化する必要があります。利点は、SimpleLinearRegression クラスを多くの未使用メソッドで乱雑にすることがなく、他の出力メディアのクラスをより自由に定義できることです (おそらく、異なるメディア タイプに同じ API を実装します)。

グラフィック出力
これまでに実装した出力メソッドはすべて、要約値を HTML 形式で表示します。これらのデータの散布図や線図を GIF、JPEG、または PNG 形式で表示するのにも適しています。

自分で折れ線グラフと分布図を生成するコードを書くよりも、JpGraph という PHP ベースのグラフィック ライブラリを使用する方が良いと思いました。 JpGraph は、Johan Persson によって積極的に開発されており、彼のプロジェクト Web サイトでは次のように説明されています:


最小限のコードによる「速いが不適切な」グラフであっても、非常にきめ細かい制御を必要とする複雑でプロフェッショナルなグラフであっても、JpGraph All は描画を作成します。簡単。 JpGraph は、科学グラフにもビジネス タイプのグラフにも同様に適しています。

JpGraph ディストリビューションには、特定のニーズに合わせてカスタマイズできる多数のサンプル スクリプトが付属しています。 JpGraph をデータ調査ツールとして使用するのは、必要なことと同様の処理を実行するサンプル スクリプトを見つけて、それを特定のニーズに合わせて調整するだけで簡単です。

リスト 3 のスクリプトは、サンプル データ探索ツール (explore.php) から抽出されたもので、ライブラリを呼び出して、Line クラスと Scatter クラスに SimpleLinearRegression 分析からのデータを設定する方法を示しています。このコードのコメントは、Johan Persson (JPGraph コードベースの文書化に優れた仕事をしています) によって書かれました。

リスト 3. サンプル データ調査ツール、explore.php の関数の詳細
//explore.php スクリプトから抽出されたスニペット

include ("jpgraph/jpgraph.php"); /jpgraph_scatter.php");
include ("jpgraph/jpgraph_line.php");

// グラフを作成する
$graph = new Graph(300,200,'auto');
$graph->SetScale( "linlin ");

// タイトルの設定
$graph->title->Set("$title");
$graph->img->SetMargin(50,20,20,40);
$グラフ->xaxis->SetTitle("$x_name","center");
$graph->yaxis->SetTitleMargin(30);
$graph->yaxis->title->Set ("$y_name");

$graph->title->SetFont(FF_FONT1,FS_BOLD);

// X 軸がプロットの
// だけではなく常に下にあることを確認します。 Y=0 で、これはデフォルトの位置です
$graph->xaxis->SetPos('min');

// 素敵な色で散布図を作成します
$sp1 = new ScatterPlot( $slr ->Y, $slr->X);
$sp1->mark->SetType(MARK_FILLEDCIRCLE);
$sp1->mark->SetFillColor("red"); ;SetColor("blue");
$sp1->SetWeight(3);

// 回帰直線を作成します
$lplot = new LinePlot ($ slr->PredictedY, $slr->X);
$lplot->SetWeight(2);$lplot->SetColor('navy');

// plto を行に追加します
$graph->Add($sp1);

// ... ストローク
$graph_name = "temp/test.png";
$graph->Stroke($graph_name)
?>


?>


データ調査ツール
データ調査ツールは、SimpleLinearRegressionHTML クラスと JpGraph ライブラリのメソッドを呼び出す単一のスクリプト (explore.php) で構成されます。

このスクリプトは単純な処理ロジックを使用します。スクリプトの最初の部分では、送信されたフォーム データに対して基本的な検証を実行します。このフォーム データが検証に合格すると、スクリプトの 2 番目の部分が実行されます。

スクリプトの 2 番目の部分には、データを分析し、概要結果を HTML およびグラフィック形式で表示するコードが含まれています。リスト 4 は、explore.php スクリプトの基本的な構造を示しています。 = 爆発(",", $x_values);
$numX = カウント($X);

if (!empty($y_values)) {
$Y = 爆発(",", $y_values); $numY = count($Y);
}

// 変数が設定されていない場合はエントリデータ入力フォームを表示

if ( (empty($title)) OR (empty($x_name)) OR (empty($x_values) ) OR
(empty($y_name)) OR (empty($conf_int)) OR (empty($y_values)) OR
($numX != $numY) ) {

// 入力フォームを表示するためのコードを省略しました

} else {

include_once "slr/SimpleLinearRegressionHTML.php";
$slr = new SimpleLinearRegressionHTML($X, $Y, $conf_int)

echo "

$title

"; slr->showTablesummary($x_name, $y_name);
echo "

";

$slr->showAnalysisOfVariance();

$slr->showParameterEstimates($x_name, $y_name);
echo "
";

$slr->showFormula($x_name, $y_name); br>";

$slr->showRValues($x_name, $y_name);
echo "
";

include ("jpgraph/jpgraph.php");
include ("jpgraph/jpgraph_scatter. php");
include ("jpgraph/jpgraph_line.php");

// グラフィックスを表示するためのコードは
//explore.php スクリプトにインラインです。これら 2 つの折れ線グラフのコードは
// で終わりますスクリプト:

// 散布図と折れ線グラフを表示するための省略されたコード
// 残差プロットを表示するための省略されたコード

}

?>


Fire Loss Research
データ調査ツールの使用方法をデモンストレーションするために、次のようにします。仮定の火災損失研究からのデータを使用します。この研究は、主要な住宅地の火災被害額と最寄りの消防署からの距離を関連付けています。たとえば、保険会社は保険料を決定する目的でこの関係の研究に興味を持つでしょう。

この研究のデータは、図 1 の入力画面に示されています。

図 1. 研究データを表示する入力画面



データが送信されると、分析され、分析結果が表示されます。最初に表示される結果セットは、図 2 に示すテーブルの概要です。

図 2. テーブル サマリーは、最初に表示される結果セットです



テーブル サマリーは、入力データを表形式で示し、その他の列は予測値を示します Y、観測値に対応する Y 値と予測値の差観測値と、予測された Y 値の信頼区間の下限と上限。

図 3 は、テーブル概要の後の 3 つの高レベルのデータ概要テーブルを示しています。

図 3. テーブル概要の後に 3 つの高レベルのデータ概要テーブルを示します



分散分析テーブルは、Y 値の偏差が 2 つの主な偏差要因、つまりモデルによって説明される分散にどのように起因するかを示します(「モデル」行を参照)、およびモデルでは説明できない分散 (「エラー」行を参照)。 F 値が大きいということは、線形モデルが Y 測定の偏差の大部分を捉えていることを意味します。このテーブルは、各独立変数がテーブル内に行を持つ重回帰環境でより役立ちます。

パラメータ推定テーブルには、推定された Y 軸切片 (Intercept) と傾き (Slope) が表示されます。各行には、T 値と、極値の T 値が観測される確率が含まれています (「確率」>「T」列を参照)。 Prob > T の傾きは、線形モデルを棄却するために使用できます。

T 値の確率が 0.05 より大きい (または同様に小さい確率) 場合、極値がランダムに観測される確率は小さいため、帰無仮説を棄却できます。それ以外の場合は、帰無仮説を使用する必要があります。

火災損失の研究では、サイズ 12.57 の T 値をランダムに取得する確率は 0.00000 未満です。これは、線形モデルが、研究で観察された X 値の範囲に対応する Y 値の有用な予測子 (Y 値の平均よりも優れている) であることを意味します。

最終レポートには相関係数または R 値が表示されます。これらは、線形モデルがデータにどの程度適合しているかを評価するために使用できます。高い R 値は、良好な一致を示します。

各概要レポートでは、線形モデルとデータの関係に関するさまざまな分析上の質問に対する回答が提供されます。回帰分析のより高度な処理については、Hamilton、Neter、または Pedhauzeur の教科書を参照してください (「参考文献」を参照)。

表示される最終的なレポート要素は、図 4 に示すように、データの分布プロットと折れ線プロットです。

図 4. 最終レポートの要素 - 分布プロットと折れ線グラフ



ほとんどの人は折れ線グラフ (このシリーズの最初のグラフなど) の説明に精通しているので、これについてはコメントせず、単に「The JPGraph」とだけ言います。ライブラリは、Web 用の高品質な科学グラフを作成します。分布データや直線データを入力する場合にも優れた機能を発揮します。

2 番目のグラフは、残差 (観測された Y、予測された Y) を予測された Y 値に関連付けます。これは、データ内のパターンを検出して理解するアナリストの能力を最大限に高めるために、探索的データ分析 (EDA) の提唱者によって使用されるグラフの例です。専門家は、このプロットを使用して次の質問に答えることができます:

考えられる非正規値または過剰な影響の例
考えられる曲線関係 (変換を使用?)
非正規残差分布
非定数誤差の分散または差異 分散

このデータ調査ツールは簡単に拡張でき、標準 EDA ツールであるヒストグラム、箱ひげ図、四分位図など、より多くの種類のグラフを作成できます。

数学ライブラリのアーキテクチャ
私の数学の趣味により、ここ数か月間、数学ライブラリに興味を持ち続けています。このような調査を行うことで、コード ベースを整理し、将来の成長を予測する方法を考えるようになります。

リスト 5 のディレクトリ構造を一時的に使用しています。

リスト 5. 拡張しやすいディレクトリ構造
phpmath/

burnout_study.php
explore.php
fire_study.php
navbar.php

dist/
Distribution.php
fisher.php
student.php
source.php

jpgraph/
etc...

slr/
SimpleLinearRegression.php
SimpleLinearRegressionHTML.php

temp/




たとえば、将来の倍数この作業には、行列演算 (より高度な形式の回帰分析に必要) を実行する PHP コードを格納するために使用される行列ディレクトリを含めるためにこのライブラリを拡張することが含まれます。また、重回帰分析の入力メソッド、ロジック、出力メソッドを実装する PHP コードを格納する mr ディレクトリも作成します。

このディレクトリ構造には一時ディレクトリが含まれていることに注意してください。このディレクトリに対する権限は、explorer.php スクリプトが出力イメージをこのディレクトリに書き込むことができるように設定する必要があります。 phpmath_002.tar.gz ソース コードをインストールするときは、この点に注意してください。さらに、JpGraph プロジェクト Web サイトにある JpGraph のインストール手順をお読みください (「参考文献」を参照)。

最後に、次の手順を実行すると、すべてのソフトウェア クラスを Web ルートの外側のドキュメント ルートに移動できます:


Web ルート以外の場所にアクセスできるようにグローバル PHP_MATH 変数を有効にし、
すべてが必要であることを確認しますまたは、含まれるファイル パスには、この定義された定数が接頭辞として付けられます。

将来的には、PHP_MATH 変数の設定は、PHP 数学ライブラリ全体の構成ファイルを通じて行われる予定です。

何を学びましたか?
この記事では、SimpleLinearRegression クラスを使用して小規模から中規模のデータセット用のデータ調査ツールを開発する方法を学びました。その過程で、SimpleLinearRegression クラスで使用するネイティブ確率関数も開発し、そのクラスを HTML 出力メソッドと JpGraph ライブラリに基づくグラフ生成コードで拡張しました。

学習の観点から見ると、単純な線形回帰モデリングは、より高度な形式の統計モデリングを理解する唯一の方法であることが証明されているため、さらに研究する価値があります。重回帰や多変量分散分析などのより高度な手法に取り組む前に、単純な線形回帰をしっかりと理解することが重要です。

単純な線形回帰が、別の変数の偏差を説明または予測するために 1 つの変数のみを使用する場合でも、すべての研究変数間の単純な線形関係を見つけることが、研究データ分析の最初のステップであることがよくあります。データが多変量であるからといって、多変量ツールを使用して調査する必要があるというわけではありません。実際、単純な線形回帰などの基本的なツールから始めることは、データ内のパターンの調査を開始するための優れた方法です。

このシリーズでは、単純な線形回帰分析の 2 つのアプリケーションを検証します。この記事では、「消防署までの距離」と「火災による損失」の間の強い線形関係を調べます。最初の記事では、「社会的集中」と、弱いながらも依然として重要な「消費指数」と呼ばれる指標との間の線形関係に注目しました。 (演習として、この記事で説明したデータ調査ツールを使用して、最初の調査ケースのより乱雑なデータを再調査してみると興味深いかもしれません。y 切片が負であるケースに気づくかもしれません。これは、「社会的集中」が0 の場合、予測される消費指数は -29.50 です。これは意味がありますか? 現象をモデル化するときは、方程式にオプションの y 切片を含めるべきか、含める場合は y 切片がどのような役割を果たすのかを自問する必要があります。線形方程式での切片の再生)

単純な線形回帰のさらなる研究には、次のトピックの研究が含まれる場合があります:


* 方程式や他の計算式から切片を省略したい場合は、いつ行うことができます。
* 単純線形回帰でデータをモデル化するために、べき乗、対数、その他の変換を使用してデータを線形化する時期と方法
* モデリングの前提条件の適切性を評価するために使用でき、パターンに対するより明確な洞察を提供できるその他の視覚化方法を使用できます。データ

これらは、単純な線形回帰を学習する学生の一部として学習する、より高度なトピックです。リソースには、回帰分析について詳しく学ぶことができる高度なトピックに関する記事へのリンクがいくつか含まれています。

標準の PHP インストールでは、重要な数学ベースのアプリケーションの開発に必要な多くのリソースが提供されます。この一連の記事が他の開発者に、楽しい、技術的な、または学習上の課題のために PHP で数学的ルーチンを実装するきっかけになれば幸いです。


関連添付資料: この記事で使用されているソース コードをダウンロードします

参考文献
1. 詳細については、James T. McClave および Terry Sincich 編集の人気のある大学教科書 Statistics、第 9 版 (Prentice-Hall、オンライン) を参照してください。この記事で使用されているアルゴリズムのステップと「バーンアップ スタディ」の例は、この本から参照されています。
2. 現在、少数の低レベル PHP 数学クラスが含まれている PEAR リポジトリをチェックしてください。最終的には、SimpleLinearRegression、MultipleRegression、TimeSeries、ANOVA、FactorAnalysis、FourierAnalysis などの標準的な高レベルの数値手法を実装するパッケージが PEAR に含まれるようになるとよいでしょう。
3. 作成者の SimpleLinearRegression クラスのすべてのソース コードを表示します。
4. 非常に科学的な配列言語と添え字を確立する成熟した方法で Python を拡張する Numerical Python プロジェクトについて学びます。この拡張機能を使用すると、数学的演算がコンパイル言語に期待されるものに非常に近くなります。
5. Perl の数学モジュールへの CPAN インデックスと CPAN のアルゴリズム セクション、および Perl の次元データの圧縮ストレージと高速操作を提供するように設計された Perl データ言語など、Perl で利用可能な多くの数学的リファレンスを調べます。アレイ機能。
6. John Chambers の S プログラミング言語について詳しくは、彼の出版物と Bell Labs のさまざまな研究プロジェクトへのリンクをご覧ください。 1998 年の ACM 賞言語デザイン賞についてもご覧ください。
7.R は、統計コンピューティングおよびグラフィックスのための言語および環境であり、受賞歴のある S System と同様に、R は線形および非線形モデリング、統計テスト、時系列分析、分類、クラスタリングなどの統計およびグラフィックス技術を提供します。 。 R については、R プロジェクトのホームページで学習してください。
8. PHP を初めて使用する場合は、Amol Hatwar の developerWorks シリーズの記事「PHP を使用した堅牢なコードの開発:」「パート 1: 高水準の入門」(2002 年 8 月)、「パート 2: 効果的な」を読んでください。変数の賢い使用」 (2002 年 9 月) および「パート 3: 再利用可能な関数の作成」 (2002 年 11 月)。
9. John Pezullo の優れたサイトにアクセスしてください。統計計算の実行に特化した Web ページが提供されています。 PHP ベースの確率関数は、John の確率関数ページにあるコードに基づいています。
10. M. Abramowitz と I.A. Stegun による書籍『The Handbook of Mathematical Functions (AMS55 としても知られる)』について詳しく知るには、数学関数のデジタル ライブラリにアクセスしてください。
11. PHP のメイン OO グラフィックス ライブラリに関する豊富な情報については、JpGraph サイトをチェックしてください。
12. National Institute of Standards and Technology (NIST) が発行する「Engineering Handbook of Statistics」を読む。このマニュアルには探索的データ分析に関するいくつかの章があり、非常に優れています。
13. 回帰のトピックについて詳しく知りたい場合は、次の有益な参考文献を読んでみてください:

L. ハミルトン (1992)。グラフィックによる回帰。カリフォルニア州パシフィックグローブ:ブルックス/コール出版社。
J Neter、M.H. Kutner、W Wasserman W (1990)。応用線形回帰モデル (第 3 版)。シカゴ・アーウィン。
E. J. ペダズール (1982)。行動研究における重回帰。ニューヨーク州ニューヨーク州:ホルト、ラインハート、ウィンストン。

14. Cameron Laird の記事「生物科学におけるオープンソース」を読んでください。 PHP には、この成長市場に参加するために、より優れた数学ツールが必要です (developerWorks、2002 年 11 月)。
15. Web ベースの R インターフェイスである RWeb を確認してください。



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:LDAPとは次の記事:LDAPとは