matrix - 如何手动将协方差矩阵转换为相关矩阵?
问题描述
我的协方差矩阵函数:
my_covariance <- function (x=my_data[, c(“attdrug”, “atthouse”, “timedrs”, log10.ltimedrs”, “income”, “emplmnt”, “race”, “mstatus”)]){
cm= colMeans(x)
D = as.matrix(t(x) - cm))
D = t(D)
n=nrow(x)
S = 1/(n-1)*crossprod(D,D)}
我的协方差矩阵相关代码:
S = my_covariance()
diag(S)
sqrt(diag(S))
D = 1/sqrt(diag(S))
R = D%*%S%*%D
但不是 R 给我一个相关矩阵,我得到一个数字?我究竟做错了什么?
解决方案
原因
你的 D 是一个向量,而它应该是一个对角矩阵。您可以使用 将其转换为对角矩阵D = diag(D)
。
解决方案
您的最后两行应该如下所示。
D = diag(1/sqrt(diag(S)))
R = D%*%S%*%D
cov2cor(S)
您可以通过将其与from R package给出的结果进行比较来检查您的解决方案是否正常工作stats
。
推荐阅读
- azure-data-factory-2 - 有没有办法在多个映射数据流中重用单个正在运行的 databricks 集群
- c# - 如何更改自定义字段的值(\Areas\Identity\Pages\Account\Manage\Index.cshtml.c)?
- javascript - 如何制作问卷调查机器人?
- keras - 如何一一提供数据以使用 tensorflow 2.0 版本进行训练
- mysql - PHP CodeIgniter for 带有 insert_id 的循环
- python - 将路径字符串解析为 JSON 对象
- iis - IIS 和 MSMQ 的安装在 wix 设置中花费了太多时间
- c# - 返回 IEnumerable 的扩展方法的控制台输出
- javascript - 为什么在 JSFiddle 中引用未声明的变量“name”会返回“result”?
- python - 尝试将 keras 模型转换为 tf saved_model 时出错。- AttributeError:“列表”对象没有属性“dtype”