如何在Matlab中获得方差 - 协方差矩阵?

时间:2016-01-26 23:49:32

标签: matlab matrix covariance variance bsxfun

我试图维持10个资产组合股票的方差 - 协方差矩阵。数据由10个股票的回报列表示。即。

Stock A Stock B

Return 1 Return 1

Return 2 Return 2

Etc Etc

当我上传我的数据时,我尝试了cov(data)功能,但它不起作用。我一直收到这条消息:

  

“未定义函数'sum'用于'dataset'类型的输入参数。

     

cov中的错误(第154行)xc = bsxfun(@ minus,x,sum(x,1)/ m); %删除'数据集'类型的输入参数的meanUndefined函数'sum'。

     

cov中的错误(第154行)xc = bsxfun(@ minus,x,sum(x,1)/ m); %删除意味着“

我的问题是如何继续寻找每只股票的平均收益率和方差 - 协方差矩阵?

1 个答案:

答案 0 :(得分:0)

不推荐使用数据集对象,因此您应该考虑使用表格。但是使用你想要的数据集

>> dataAsMatrix = double(NameOfYourDataSetVariable);
>> cov(dataAsMatrix)
>> mean(dataAsMatrix)

要转换为表,请使用`dataset2table',

>> dataAsTable = dataset2table(NameOfYourDataSetVariable);

然后,对于某些操作,您可以执行

之类的操作
>> varfun(@mean,dataAsTable)

虽然对于cov我认为您仍然需要提取数据

>> cov(dataAsTable{:,:})