私はcholcov()
を使ってMatlabで行われているように、Rでコレスキー的な共分散分解を再現しようとしています。例はhttps://uk.mathworks.com/help/stats/cholcov.htmlから取られます。彼らの例のように、元のcholcov()
機能のRの `chol`はMATLABの` cholcov`とは異なります。コレスキーに似た共分散分解を行うには?
結果:私はR.でこのT
を複製しようとしています
T =
-0.2113 0.7887 -0.5774 0
0.7887 -0.2113 -0.5774 0
1.1547 1.1547 1.1547 1.7321
は、私が試した:
C1 <- cbind(c(2,1,1,2), c(1,2,1,2), c(1,1,2,2), c(2,2,2,3))
T1 <- chol(C1)
C2 <- t(T1) %*% T1
マイ結果:
[,1] [,2] [,3] [,4]
[1,] 1.414214 0.7071068 0.7071068 1.414214e+00
[2,] 0.000000 1.2247449 0.4082483 8.164966e-01
[3,] 0.000000 0.0000000 1.1547005 5.773503e-01
[4,] 0.000000 0.0000000 0.0000000 1.290478e-08
C2
リカバーC1
しかし、T1
はMATLABのソリューションとはまったく異なります。私は、多分それは共分散行列のコレスキー組成だろうと思った:
T1 <- chol(cov(C1))
が、私は右のどちらかではない
[,1] [,2] [,3] [,4]
[1,] 0.5773503 0.0000000 0.0000000 2.886751e-01
[2,] 0.0000000 0.5773503 0.0000000 2.886751e-01
[3,] 0.0000000 0.0000000 0.5773503 2.886751e-01
[4,] 0.0000000 0.0000000 0.0000000 3.725290e-09
を取得します。
Matlabのcholcov()
が計算されているので、どのようにしてRで複製できますか?
あなたの「正しい」定義は何ですか?そのような結果は一意ではない可能性が高く、ヘルプページでは、すべて0の行が省略されることが示されます。これらの結果の両方の行4と同様です。 –
母 - ありがとう:)私はどのように - 素晴らしい答えを知っている!本当にあなたの迅速な返答を感謝します。 –