統計ツールボックスで関数 pca を使用する方法を学んでいます。以下の簡単な例を試してみると、エラーが返されましたが、何か問題が見つかりませんか?
pca_test_2=[1 1 1 1 1 ; 1.9 2.1 2 2 1.8]
私はそれらを転置して乗算して取得します:
pca_test_2=pca_test_2*pca_test_2';
>> [coeff,score,latent]=pca(pca_test_2);
??? Undefined function or method 'pca' for input arguments of type 'double'.
私は見ましたが、そのようなエラーを解決する方法を説明するものを見つけることができませんか?
ツールボックスは確実にインストールされています。共分散行列で pcacov を使用すると、(別のデータ セットに対して) 機能しますか?
誰かが私が間違っていることを説明してもらえますか?
同じデータ セットの svd で同じデータを使用すると、それも機能しますか?
[u s v]=svd(pca_test_2)
u =
-0.4537 -0.8912
-0.8912 0.4537
s =
24.2493 0
0 0.0107
v =
-0.4537 -0.8912
-0.8912 0.4537
アドバイスに従って、princomp() を使用して再度実行しました。以下を参照してください。
ただし、結果を scd の結果と比較すると、まだ少し混乱しています。「coeff」の「u」が同じでないのはなぜですか? (しかし、それらは明らかに似ています)。
潜在が s の対角に等しくないのはなぜですか? 明らかにそれらは完全に異なっています (スケーリングのことだと思いますが、latent の 2 番目の固有値がゼロであることを考えると、どのスケーリングが使用されたかを確認するのは難しいですか?)
[usv]=svd(pca_test_3)
あなた=
-0.4537 -0.8912
-0.8912 0.4537
s =
24.2493 0
0 0.0107
v =
-0.4537 -0.8912
-0.8912 0.4537
[係数、スコア、潜在]=princomp(pca_test_2)
係数 =
0.4525 0.8918
0.8918 -0.4525
スコア =
-5.3040 0
5.3040 0
潜在 =
56.2658
0