行列が負の半限定であるかどうかを調べようとしています。このため、すべての固有値がゼロより小さいか等しいかどうかをチェックします。一例行列である:STATAによって算出行列計算の精度R対Stata
[,1] [,2] [,3] [,4]
[1,] -1.181830e-05 0.0001576663 -2.602332e-07 1.472770e-05
[2,] 1.576663e-04 -0.0116220027 3.249607e-04 -2.348050e-04
[3,] -2.602332e-07 0.0003249607 -2.616447e-05 3.492998e-05
[4,] 1.472770e-05 -0.0002348050 3.492998e-05 -9.103073e-05
固有値が1.045e-12、-0.00001559、-0.00009737、-0.01163805あります。しかしながら、Rによって計算される固有値は、-1.207746e-20、-1.558760e-05、-9.737074e-05、-1.163806e-02である。したがって、最後の3つの固有値は非常に似ていますが、ゼロに非常に近い最初の固有値はありません。 stataで得られた固有値では、行列は半定理ではないが、Rで得られた固有値は半定理である。どの計算がより正確であるかを知る方法はありますか?または、無限に小さい固有値を避けるために、行列を再スケーリングすることも可能でしょうか?
は事前にありがとうございました。すべてのヒントは高く評価されます。
(0.000000000003696385 )。 Rは有限精度演算を使用しているため、小数点以下15桁または16桁を超える回答は正確ではありません。 – user108363
私はRで別の結果を得ています。行列に 'dput'の結果を与えて、あなたが使っているRのバージョンと固有値を計算する関数を教えてください。 – James
お二人のおかげで!ジェームス、dputは '構造(C(-1.18182990902922e-05、0.000157666259977248、-2.60233161187324e-07、 1.47276984589202e-05、0.000157666259977248、-0.0116220026732496、 0.000324960673501042、-0.000234805002079655、-2.60233161187324e-07、 0.000324960673501042、あります-2.61644706608917e-05、3.49299778208411e-05、 1.47276984589202e-05、-0.000234805002079655、3.49299778208411e-05、 -9.10307332256831e-05)、.Dim = C(4L、4L)) ' IはRStudioを使用していバージョン1.0.44であり、固有値を計算する関数はeigen()です。 – SWimmer8