2015-10-14 44 views
-1

我想確定百分點位於0.01至0.99之間,產生特定的覆蓋概率o.90。在下面的程序中,變量'm'和'l'的值爲覆蓋概率0.90,然後執行m和l的值。確定具體的分位點

count<-0 
for(m=seq(0.0, 0.05,0.01){ 
for(l=seq(0.50,0.99,0.01){ 
for(j in 1:100){ 
u[j]<-rchisq(1,1,0) 
for(i in 1:100){ 
z[i]<-rnorm(1,0,1) 
} 
a1[j]<-quantile(z,m) 
a2[j]<-quantile(z,l) 
if(a1[j]<u[j] && a2[j]>u[j]){ 
count<-count+1 
} 
} 
} 
} 
if(count==90) 
m 
l 

回答

0

對於R中循環是由作爲for(i in z) {},不與使用的一個等號。但是,無論如何,您不想像編寫Fortran一樣編寫R代碼。目前還不清楚「執行價值」的含義。 (以及這些繪製單正態變量的和單CHISQ變量有助於超出我。)

m=seq(0.0, 0.05,0.01) 
l=seq(0.50,0.99,0.01) 

> (q90.m <- quantile(m, prob=.9)) 
    90% 
0.045 
> (q90.l <- quantile(l, prob=.9)) 
    90% 
0.941 

注意,作爲R中計算出的第90百分位數(與類型= 7)是不實際的數據參數位數,所以這給你另一種可能的「答案」 ::

> m[ which(m >= q90.m) ] 
[1] 0.05 

的位數功能查看幫助頁面:

?quantile