将95%的置信度限制添加到累积图

问题描述

|| 我想在R硬币投掷图中添加一条表示95%置信范围的抛物线:
x  <- sample(c(-1,1),60000,replace = TRUE)
plot.ts(cumsum(x),ylim=c(-250,250))
这是我要寻找的示例: 更新:@ bill_080 \的答案很好。但是我已经计算了100,000次抛硬币:
str(100ktoss)
num [1:100000] -1 1 1 1 -1 -1 1 -1 -1 -1 ...
我真的只想在该图上添加95%的限制:
plot.ts(cumsum(100ktoss))
计算我的100K硬币抛掷花了几个小时,当我尝试使用@ bill_080 \的代码进行复制时,我的内存不足(100,000个)。 最后更新:好的。最后一个问题。我在一张图表上有几轮累积命中的图,每轮的开始都固定在零(实际上是1或-1,取决于是赢还是输)。
>str(1.ts)  
Time-Series [1:35] from 1 to 35: 1 2 1 2 3 4 5 4 5 6 ...  
>str(2.ts)  
Time-Series [1:150] from 36 to 185: -1 0 1 0 -1 -2 -1 0 1 2 ...  
我想像这样向每个细分市场添加相同的95%限制。现在解决: @ bill_080非常感谢。这是最终产品:     

解决方法

        尝试这个。所有循环均为
for
循环,因此您可以轻松添加更多计算。
#Set the number of bets and number of trials and % lines
numbet <- 6000 #6000 bets
numtri <- 1000 #Run 1000 trials of the 6000 bets
perlin <- 0.05 #Show the +/- 5% lines on the graph
rantri <- 60 #The 60th trial (just a random trial to be drawn)

#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(-1,1),numbet,replace = TRUE)
  xcum[,i] <- cumsum(x)
}

#Plot the trials as transparent lines so you can see the build up
matplot(xcum,type=\"l\",xlab=\"Number of Bets\",ylab=\"Cumulative Sum\",main=\"Cumulative Results\",col=rgb(0.01,0.01,0.02))
grid()

#Sort the trials of each bet so you can pick out the desired %
xcumsor <- xcum
for (i in 1:numbet) {
  xcumsor[i,] <- xcum[i,order(xcum[i,])]
}

#Draw the upper/lower limit lines and the 50% probability line     
lines(xcumsor[,perlin*numtri],lwd=2,col=rgb(1,0.0,0.0)) #Lower limit
lines(xcumsor[,0.5*numtri],lwd=3,col=rgb(0,1,0.0)) #50% Line
lines(xcumsor[,(1-perlin)*numtri],0.0)) #Upper limit

#Show one of the trials
lines(xcum[,rantri],lwd=1,0.8,0)) #Random trial

#Draw the legend
legend(\"bottomleft\",legend=c(\"Various Trials\",\"Single Trial\",\"50% Probability\",\"Upper/Lower % Limts\"),bg=\"white\",lwd=c(1,3,2),col=c(\"darkgray\",\"orange\",\"green\",\"red\"))
编辑1 =============================================== ========== 如果您只是想画出+/- 5%的线,那只是平方根函数。这是代码:
#Set the bet sequence and the % lines
betseq <- 1:100000 #1 to 100,000 bets
perlin <- 0.05 #Show the +/- 5% lines on the graph

#Calculate the Upper and Lower limits using perlin
#qnorm() gives the multiplier for the square root
upplim <- qnorm(1-perlin)*sqrt(betseq)
lowlim <- qnorm(perlin)*sqrt(betseq)

#Get the range for y
yran <- range(upplim,lowlim)

#Plot the upper and lower limit lines
plot(betseq,upplim,ylim=yran,xlab=\"\",ylab=\"\")
lines(betseq,lowlim)
编辑2 =============================================== == 要在正确的位置添加抛物线,定义函数可能会更容易。请记住,由于新函数(
dralim
)使用
lines
,因此在调用
dralim
之前必须存在该图。使用与Edit 1中的代码相同的一些变量:
#Set the bet sequence and the % lines
betseq <- 0:700 #0 to 700 bets
perlin <- 0.05 #Show the +/- 5% lines on the graph

#Define a function that plots the upper and lower % limit lines
dralim <- function(stax,endx,perlin) {
  lines(stax:endx,qnorm(1-perlin)*sqrt((stax:endx)-stax))
  lines(stax:endx,qnorm(perlin)*sqrt((stax:endx)-stax))
}

#Build the plot area and draw the vertical dashed lines
plot(betseq,rep(0,length(betseq)),ylim=c(-50,50),main=\"\",xlab=\"Trial Number\",ylab=\"Cumulative Hits\")
abline(h=0)
abline(v=35,lty=\"dashed\") #Seg 1
abline(v=185,lty=\"dashed\") #Seg 2
abline(v=385,lty=\"dashed\") #Seg 3
abline(v=485,lty=\"dashed\") #Seg 4
abline(v=585,lty=\"dashed\") #Seg 5

#Draw the % limit lines that correspond to the vertical dashed lines by calling the
#new function dralim.
dralim(0,35,perlin) #Seg 1
dralim(36,185,perlin) #Seg 2
dralim(186,385,perlin) #Seg 3
dralim(386,485,perlin) #Seg 4
dralim(486,585,perlin) #Seg 5
dralim(586,701,perlin) #Seg 6
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...