在R中实现矩阵乘法计算投资组合方差时遇维度不匹配错误的解决方法
解决投资组合方差计算的维度不匹配问题
错误原因
你代码里的optimized_weights_t变量未定义,导致矩阵乘法时维度不匹配。已知:
optimized_weights是10×1的列向量sigma是10×10的协方差矩阵
矩阵乘法要求前一个矩阵的列数等于后一个矩阵的行数,只有1×10的行向量才能和10×10的协方差矩阵相乘,再与10×1的列向量运算得到标量方差。
修复方案
用R的t()函数对权重向量做转置,两种简洁写法任选:
写法1:先定义转置变量
# 对权重向量转置得到1×10的行向量 optimized_weights_t <- t(optimized_weights) # 计算投资组合方差 portfolio_variance <- optimized_weights_t %*% sigma %*% optimized_weights
写法2:内嵌转置操作(更精简)
# 直接在计算时完成转置,无需额外变量 portfolio_variance <- t(optimized_weights) %*% sigma %*% optimized_weights
结果提取
执行后portfolio_variance是1×1的矩阵,若要得到纯数值,可通过as.numeric(portfolio_variance)提取。
内容的提问来源于stack exchange,提问作者Deeya
相关产品推荐
相关产品推荐

