作者bcs (= ="frailty..gggg XD)
看板Statistics
標題[問題] matlab轉至R的問題
時間Mon May 11 13:10:21 2009
剛試了從matlab的程式轉到R,但是出來的結果很不相同
檢查許多遍覺得應該會是相同(rowsum應該都是1),
但可能有細微的地方沒弄清,請問哪個轉碼的過程弄錯了?
謝謝
%Matlab
function pr = markov(n,rho);
pr=zeros(n,n);
p1=pr;p2=pr;p3=pr;p4=pr;
p=0.5*(1+rho);
pr(1:2,1:2)=[p 1-p;1-p p];
for i = 3:n;
p1(1:i-1,1:i-1)=pr(1:i-1,1:i-1);
p2(1:i-1,2:i )=pr(1:i-1,1:i-1);
p3(2:i ,1:i-1)=pr(1:i-1,1:i-1);
p4(2:i ,2:i )=pr(1:i-1,1:i-1);
pr=p*(p1+p4)+(1-p)*(p2+p3);
pr(2:i-1,1:i)=0.5*pr(2:i-1,1:i);
end;
a=markov(4,.2)
sum(a,2)
#R
markov<-function(n,rho){
pr=matrix(0,n,n);
p1=p2=p3=p4=pr;
p=(1+rho)*0.5;
pr[1:2,1:2]=matrix(c(p,1-p),2,2);
for (i in 3:n){
p1[1:i-1,1:i-1]=pr[1:i-1,1:i-1];
p2[1:i-1,2:i ]=pr[1:i-1,1:i-1];
p3[2:i ,1:i-1]=pr[1:i-1,1:i-1];
p4[2:i ,2:i ]=pr[1:i-1,1:i-1];
pr=p*(p1+p4)+(1-p)*(p2+p3);
pr[2:i-1,1:i]=0.5*pr[2:i-1,1:i];
}
return(pr);
}
a=markov(4,.2);
rowSums(a);
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.86.139
※ 編輯: bcs 來自: 140.112.86.139 (05/11 13:12)
※ 編輯: bcs 來自: 140.112.86.139 (05/11 13:12)
→ clickhere:1:(i-1) 05/11 15:28
推 lin15:b大可以問一下要怎麼轉嗎... 05/11 16:31
→ bcs:用手工調的 05/13 10:50