2011-09-02 84 views
13

這個問題是涉及到兩個不同的問題我以前問:情節加權頻率矩陣

1)Reproduce frequency matrix plot

2)Add 95% confidence limits to cumulative plot

我想重現這一情節R:boringmatrix

我有這麼多,使用下面的圖形代碼:multiplot

#Set the number of bets and number of trials and % lines 
numbet <- 36 
numtri <- 1000 
#Fill a matrix where the rows are the cumulative bets and the columns are the trials 
xcum <- matrix(NA, nrow=numbet, ncol=numtri) 
for (i in 1:numtri) { 
x <- sample(c(0,1), numbet, prob=c(5/6,1/6), replace = TRUE) 
xcum[,i] <- cumsum(x)/(1:numbet) 
} 
#Plot the trials as transparent lines so you can see the build up 
matplot(xcum, type="l", xlab="Number of Trials", ylab="Relative Frequency", main="", col=rgb(0.01, 0.01, 0.01, 0.02), las=1) 

我的問題是:如何在一次通過中重現頂部繪圖,而不繪製多個樣本?

謝謝。

+0

儘管事實上您已經考慮了更多路徑確定性圖形,但我認爲您的透明度加權圖更能說明此問題的統計性質。我想這可以通過:'lines(6:36,6 /(6:36),lty = 3)'來顯示極端的可能性。) –

+0

@DWin有趣的是,我現在正在努力創造我的腦袋某種密度熱圖(或hexbin),所以它更像透明加權版本。如果你有一個好主意如何創建它,我可以問一個新的問題?我在想[像這樣](http://www.actualanalytics.com/density-plot-heatmap-using-r-a58)。 –

+0

那個鏈接目前不適合我,但我從你的問題中學到了很多東西,所以我鼓勵你提出更多問題。 –

回答

6

可以產生這樣的情節......

enter image description here

...通過使用此代碼:

boring <- function(x, occ) occ/x 

boring_seq <- function(occ, length.out){ 
    x <- seq(occ, length.out=length.out) 
    data.frame(x = x, y = boring(x, occ)) 
} 

numbet <- 31 
odds <- 6 
plot(1, 0, type="n", 
    xlim=c(1, numbet + odds), ylim=c(0, 1), 
    yaxp=c(0,1,2), 
    main="Frequency matrix", 
    xlab="Successive occasions", 
    ylab="Relative frequency" 
    ) 

axis(2, at=c(0, 0.5, 1))  

for(i in 1:odds){ 
    xy <- boring_seq(i, numbet+1) 
    lines(xy$x, xy$y, type="o", cex=0.5) 
} 

for(i in 1:numbet){ 
    xy <- boring_seq(i, odds+1) 
    lines(xy$x, 1-xy$y, type="o", cex=0.5) 
} 
+1

這真的有幫助。幾天來,我一直在撞牆,並在最後期限迫近。我現在可以繼續做一些事情。 :) –

3

您還可以使用Koshke的方法,通過值的組合限制在Andrie的請求中添加了Ps $ n和ps $ s之差的條件以獲得「尖銳」配置。

ps <- ldply(0:35, function(i)data.frame(s=0:i, n=i)) 
plot.new() 
plot.window(c(0,36), c(0,1)) 
apply(ps[ps$s<6 & ps$n - ps$s < 30, ], 1, function(x){ 
    s<-x[1]; n<-x[2]; 
    lines(c(n, n+1, n, n+1), c(s/n, s/(n+1), s/n, (s+1)/(n+1)), type="o")}) 
axis(1) 
axis(2) 
lines(6:36, 6/(6:36), type="o") 
# need to fill in the unconnected points on the upper frontier 

Resulting plot (version 2)

+0

非常有趣。謝謝。 –

+0

除了與原始問題相同,試驗次數不限於31次。 (比較右側邊緣圖形的形狀。) – Andrie

+0

哦。好的。將添加邏輯條件來完成。 –

0

加權頻率矩陣也被稱爲位置權重矩陣(生物信息學)。 它可以以sequence logo的形式表示。 這至少是我如何繪製加權頻率矩陣。

library(cosmo) 
data(motifPWM); attributes(motifPWM) # Loads a sample position weight matrix (PWM) containing 8 positions. 
plot(motifPWM) # Plots the PWM as sequence logo.