我对矩阵的转换以及行和列的名称有一些问题。
我的问题如下:
作为输入矩阵,我有一个(对称)相关矩阵,如下所示:
相关向量由下三角矩阵的值给出:
现在,我想计算这些相关性的方差-协方差矩阵,它们与方差-协方差矩阵大致呈正态分布:
方差可以近似为
-> N 是样本大小(在本例中 N = 66)
协方差可以近似为
例如,r_02 和 r_13 之间的协方差由下式给出
现在,我想在 R 中定义一个函数,它将相关矩阵作为输入并返回方差-协方差矩阵。但是,我在执行协方差计算时遇到了问题。我的想法是为相关向量的元素命名,如上所示(r_01,r_02 ...)。然后我想创建一个空的方差-协方差矩阵,它的长度是correlation_vector。行和列应该与correlation_vector 具有相同的名称,因此我可以通过例如[01][03] 来调用它们。然后我想实现一个 for 循环,它设置 i 和 j 以及 k 和 l 的值,如协方差公式所示,我需要作为协方差公式的输入的相关性的列和行。这些必须始终是六个不同的值(ij;ik;il;jk;jl;lk)。这是我的想法,但我不
这是我的代码(不计算协方差):
require(corpcor)
correlation_matrix_input <- matrix(data=c(1.00,0.561,0.393,0.561,0.561,1.00,0.286,0.549,0.393,0.286,1.00,0.286,0.561,0.549,0.286,1.00),ncol=4,byrow=T)
N <- 66 # Sample Size
vector_of_correlations <- sm2vec(correlation_matrix_input, diag=F) # lower triangular matrix of correlation_matrix_input
variance_covariance_matrix <- matrix(nrow = length(vector_of_correlations), ncol = length(vector_of_correlations)) # creates the empty variance-covariance matrix
# function to fill the matrix by calculating the variance and the covariances
variances_covariances <- function(vector_of_correlations_input, sample_size) {
for (i in (seq(along = vector_of_correlations_input))) {
for (j in (seq(along = vector_of_correlations_input))) {
# calculate the variances for the diagonale
if (i == j) {
variance_covariance_matrix[i,j] = ((1-vector_of_correlations_input[i]**2)**2)/sample_size
}
# calculate the covariances
if (i != j) {
variance_covariance_matrix[i,j] = ???
}
}
}
return(variance_covariance_matrix);
}
有谁知道如何使用上面显示的公式实现协方差的计算?
对于这个问题的任何帮助,我将不胜感激!!!