R中区间内结果的图表

时间:2016-10-19 06:07:28

标签: r graph linear-interpolation

{{1}}

我使用上面的代码通过固定p的线性插值得到均值(y)。 但是现在,如何更改代码以绘制平均值(y)与p [0:1]的关系图? 我只得到一个意思(y),请帮帮我。 p.s.我只需要大约y,这就是我被困的地方:(

1 个答案:

答案 0 :(得分:0)

我认为最好将您的代码更改为function()并将其与sapply(p.vector, ...)一起使用。

功能
func <- function(p) {
  P = matrix( c(p, 1-p, 0, 0, 0, 0,
                p, 0, 1-p, 0, 0, 0,
                p, 0, 0, 1-p, 0, 0,
                0, p, 0, 0, 1-p, 0,
                0, 0, p, 0, 0, 1-p,
                0, 0, 0, p, 0, 1-p),
              ncol=6, nrow=6, byrow = T)
  X = 2
  for(j in 1:n)
    {Y=runif(1)      
    k=P[X[j],]      
    k=cumsum(k)   
    if(Y<=k[1])     
    {X[j+1]=1}
    else if (Y<=k[2])
    {X[j+1]=2}
    else if (Y<=k[3])
    {X[j+1]=3}
    else if (Y<=k[4])
    {X[j+1]=4}
    else if (Y<=k[5])
    {X[j+1]=5}
    else {X[j+1]=6}}
  return(approx(x, y, xout = mean(X))$y)
}
使用p [0:1]的函数
p.vec <- seq(0, 1, 0.01)                     # preparation of p[0:1] as a vector
n = 50                                       # defining other paramaters
x = c(1, 2, 3, 4, 5, 6)
y = c(0.1, 0.15, 0.22, 0.29, 0.38, 0.45)

y.vec <- sapply(p.vec, func)                 # calculation of the y about p[0:1]

plot(p.vec, y.vec, type="o")   # for example

enter image description here