2011-11-16 10 views
1

私のLazarus/Free Pascalアプリケーションでは、大きな多列数値行列を生成します。このテーブルでPrincipal Component Analysis(PCA)を実行したいが、そうするパッケージを見つけることができないようだ。Free PascalからR関数を呼び出す方法は?

R言語にはPCA functionをエクスポートする.dllライブラリがありますが、クラス "princomp"のオブジェクトを返します。私は、Lazarus/FPC内での使用のために、このクラスから関連情報(変換された行列など)をどのように抽出するかについてはわかりません。

答えて

2

はALGLIBを見てみましょう:

http://en.wikipedia.org/wiki/ALGLIB

http://www.alglib.net/download.php

を私はそれが他の特異値分解や固有値分解の間、多くの数値ルーチンを持っていると思います。したがって、特別なPCAルーチンを持たない場合、PCA平均ベクトルはすべてのデータベクトルの平均であり、PCAベクトルは共分散行列の固有ベクトルであり、対応する固有値はデータの投影の分散であるそれらのベクトル上にある。

+1

大変ありがとうございます。情報がありがとうございます。 PCAベクトルを取得したら、同じプロセスを単一のクエリポイントにどのように適用できますか?ベクトルを固有ベクトルに変換するために使用できる係数がありますか? –

+0

m次元のデータベクトルX_iを持つと仮定すると、PCAはnx1平均ベクトルAとn正規直交PCA nx1ベクトルB_jを与えます。 w_j =(B_j) '*(X_i - A)(ここで、'は転置)で重みw_jを得るために、インデックスjを有する主成分上にデータベクトルX_iを投影することができる。最も重要な主成分を投影することによって、このようにして得られた少数の重みの形のデータが得られる。これが質問に答えたかどうかはわかりません。乾杯。 – Rulle

1

実際には、Rにはprincompとprcompという2つのPCA関数があります。第1はデータの共分散行列の固有値を計算し、第2は特異値分解を実行する。各関数が返す内容(クラス "princomp"または "prcomp"のオブジェクト)の詳細は、「値」セクションの関数のヘルプページで説明しています。典型的には、これらはローディング(すなわち回転行列)、主成分の標準偏差(すなわち、共分散/相関行列の固有値の平方根)、および必要に応じて回転データセットを有する行列である。

関連する問題