0

我需要解决这个问题:在 Excel 工作簿中,我报告了 10 个时间序列(每月频率),包含 10 个应该涵盖过去 15 年的标题。不幸的是,并非所有标题都可以涵盖 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 回答