0

この問題に手を貸す必要があります: Excel ワークブックで、過去 15 年間をカバーする 10 のタイトルの 10 の時系列 (毎月の頻度) を報告しました。残念ながら、すべてのタイトルが 15 年の時系列をカバーできるわけではありません。たとえば、タイトルは 2003 年までしかありません。そのタイトルの列には、最初の 5 年間は値の代わりに「利用できません」と表示されています。データをMatlabにインポートすると、明らかに、短いシリーズのタイトルの列に、値のないNaNが表示されます。

>> Prices = xlsread('PrezziTitoli.xls');

>> whos
Name   Size   Bytes  Class   Attributes    
Prices 182x10 6360   double

私の目標は、分散共分散行列を推定することですが、データが不足しているため、計算できません。分散共分散行列の計算の前に、Matlab で NaN を返す値をカバーするために補間を考えました。

私に役立つコードはありますか?手伝って頂けますか?

ありがとう!

4

1 に答える 1

0

統計ツールボックスがインストールされていますか? その場合、解決策は簡単です。

>> x = randn(10,4);         // x is a 10x4 matrix of random numbers
>> x(randi(40,10,1)) = NaN; // set some random entries to NaN
>> disp(x)
   -1.1480       NaN   -2.1384    2.9080
    0.1049   -0.8880       NaN    0.8252
    0.7223    0.1001    1.3546    1.3790
    2.5855   -0.5445       NaN   -1.0582
   -0.6669       NaN       NaN       NaN
       NaN   -0.6003    0.1240   -0.2725
   -0.0825    0.4900    1.4367    1.0984
   -1.9330    0.7394   -1.9609   -0.2779
   -0.4390    1.7119   -0.1977    0.7015
   -1.7947   -0.1941   -1.2078   -2.0518
>> nancov(x)                // Compute covariances after removing all NaN rows
    1.2977    0.0520    1.6248    1.3540
    0.0520    0.5359   -0.0967    0.3966
    1.6248   -0.0967    2.2940    1.6071
    1.3540    0.3966    1.6071    1.9358
>> nancov(x, 'pairwise')    // Compute covariances pairwise, ignoring NaNs
    1.9195   -0.5221    1.4491   -0.0424
   -0.5221    0.7325   -0.1240    0.2917
    1.4491   -0.1240    2.1454    0.2279
   -0.0424    0.2917    0.2279    2.1305

統計ツールボックスをお持ちでない場合は、もっとよく考える必要があります - お知らせください!

于 2013-01-29T18:36:06.470 に答える