我本身使用R大概一兩年
目前想要寫出一個小function可以計算出以下的公式
https://imgur.com/supH7mE
d 是要計算出來的向量 長度是m
A 是一個矩陣維度是n*m,裡面的元素都是正的
alpha是A矩陣的元素
p 是一個向量長度為m 其為機率向量 裡面的元素相加等於1
以下是我的程式碼,雖然檢查過很多次,但不確定有沒有算錯
或是有沒有辦法用矩陣的方式去計算之,因為這樣算太慢了
set.seed(1)
m=10
n=7
A <- matrix( rexp(m*n),ncol=m ,nrow=n )
p <- c( 0.05,0.1,0.3,0.05,0.05,0.05,0.07,0.03,0.2,0.1)
sum(p )
length(p )
den <- rep(0,n)
densum <- rep(0,n)
d<- rep(0,m)
for(j in 1:m){
for(i in 1:n){
den[i]<- sum(A[i,]*p)
densum[i]<- A[i,j]*p[j]/den[i]
d[j]<- sum( densum )
}
}
下面是我算出來的
[1] 0.336093550 0.855872710 2.158927311 0.233847299 0.282627585
[6] 0.253739688 0.517757929 0.312419250 0.760612933 1.288101743