我需要解决这个问题:在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的值,例如“填充”,但是在使用中有困难。
有些代码对我有用吗?你能救我吗?
谢谢!
答案 0 :(得分: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
如果你没有统计工具箱,我们需要更加思考 - 让我知道!