У меня есть 3 вектора:
p
[,1]
[1,] 0.002715955
[2,] 0.004460214
[3,] 0.006855524
[4,] 0.007438570
[5,] 0.042657555
q
[,1]
[1,] 0.9972840
[2,] 0.9955398
[3,] 0.9931445
[4,] 0.9925614
[5,] 0.9573424
f
[,1]
[1,] 0.008364157
[2,] 0.013058930
[3,] 0.019131397
[4,] 0.020559785
[5,] 0.090786054
Я хочу выполнить следующую операцию, чтобы получить матрицу var-cov (которая заполняет только верхний треугольник матрица)
v_ij <- p_i*q_j/(n*f_i*f_j); 1<=i<=j<=n
Где n - количество наблюдений (здесь 5). поэтому я написал следующий код для выполнения кода
v_ij <- matrix(nrow=length(p), ncol=length(p))
for(i in 1:nrow(p)){
for(j in 1:nrow(q)){
if(i==j){
diag(v_ij) <- p[i]*q[j]/(f[i]*f[j])
}
}
}
Этот код мог заполнять только диагональ, но я не знал, какая функция может заполнить верхнюю часть матрицы для меня.