|
Location : Home > Languages > Perl > Package Title : Statistics::LSNoHistory |
![]() |
Statistics::LSNoHistory - データ履歴なしで最小2乗法で線形回帰を求める
# 点をコンストラクト
$reg = Statistics::LSNoHistory->new(points => [
1.0 => 1.0,
2.1 => 1.9,
2.8 => 3.2,
4.0 => 4.1,
5.2 => 4.9
]);
# 他のコンストラクト方法
$reg = Statistics::LSNoHistory->new(
xvalues => [1.0, 2.1, 2.8, 4.0, 5.2],
yvalues => [1.0, 1.9, 3.2, 4.1, 4.9]
);
# または
$reg = Statistics::LSNoHistory->new;
$reg->append_arrays(
[1.0, 2.1, 2.8, 4.0, 5.2],
[1.0, 1.9, 3.2, 4.1, 4.9]
);
# または
$reg = Statistics::LSNoHistory->new;
$reg->append_points(
1.0 => 1.0, 2.1 => 1.9, 2.8 => 3.2, 4.0 => 4.1, 5.2 => 4.9
);
# 過去の回帰からコンストラクトしてもよい
$reg = Statistics::LSNoHistory->new(
num => 5,
sumx => 15.1,
sumy => 15.1,
sumxx => 56.29,
sumyy => 55.67,
sumxy => 55.83,
minx => 1.0,
maxx => 5.2,
miny => 1.0,
maxy => 4.9
);
# 各ブランチは以下のように初期化
$branch = Statistics::LSNoHistory->new(%{$reg->dump_stats});
$reg->append_point(6.1, 5.9);
$branch->append_point(5.8, 6.0);
# 回帰値を計算していくつか出力
printf("Slope: %.2f\n", $reg->slope);
printf("Intercept %.2f\n", $reg->intercept);
printf("Correlation Coefficient: %.2f\n", $reg->pearson_r);
...
本パッケージは完全なデータ履歴を格納していなくても最小2乗法による線形回帰を行う。他の方法と同様に(最小2乗法の意味で)以下の式を満たす最良の m, k を求める。
y = m*x + k fits data points (x_1,y_1),...,(x_n,y_n).
多くの線形回帰を含むアプリケーションでは新たなデータが追加された場合には過去の回帰に用いた全てのデータを要求することが多い。しかしここでは全データ履歴は必要がなく、中間的な統計量があればよい。その数はガウスのおかげで6つで済む。
ユーザインタフェースはオブジェクトを初期化して生データまたは中間統計量を処理する。
コンストラクタ(またはクラスメソッド new)はいくつかの引数をとる。初期化のシナリオは引数の種類により、以下のカテゴリーがある。
{ num => val,
sumx => val,
sumy => val,
sumxx => val,
sumyy => val,
sumxy => val,
minx => val,
maxx => val,
miny => val,
maxy => val }
言い換えれば最終的なコンストラクタが必要とする全ての統計量を含む。これは回帰履歴の効果的なダンプとなる。
この方法はデータを格納する他の方法よりも丸め誤差について疑わしい。スケールについては処理前に十分配慮が必要である。
John Pliam, <pliam@cpan.org>
CPAN モジュールとしては: Statistics::OLS, Statistics::Descriptive, Statistics::GaussHelmert, Statistics::Regression.
統計に関する本・数学に関するハンドブック・数値解析に関する包括的な本。
Press et al, Numerical Recipes in L [L in {C,Fortran, ...}], Nth edition [N > 0], Cambridge Univ Press.
完全な情報は ファイル COPYING にある。
![]() |
Updated : 2007/07/23 |