简体   繁体   中英

Multiple curve from a function in one plot

I have this code

N <- 1000
beta1 = runif(N, -1,1);
beta2 = runif(N, -1,1);
x1 = seq(-500, 500, 0.01);

and for each i evaluated from 1 to N, I want to plot this function

z =  beta1[i] + beta2[i]*x1;
pr = 1/(1+exp(-z));
plot (x1,pr);

at the end I would expect 1000 curve of pr vs x1.

for that I've tried this

for (i in 1:N){
z[i]= res[i,1] + res[i,2]*x1
pr[i] = 1/(1+exp(-z[i]));
plot(x1,pr[i])
  }

But it gave list of 50 warnings and it didn't worked out.

Any helps?

This is a great time for some matrix multiplication to simplify and speed up calculation. Your biggest problem was that plot opens a new plot every time it's called. I assume you want all the lines plotted on the same graph.

N <- 1000
beta1 = runif(N, -1, 1)
beta2 = runif(N, -1, 1)

# I changed this to by = 1
# for plotting purposes you really done need 100k points per line
x1 = seq(-500, 500, 1)

z =  cbind(1, x1) %*% rbind(beta1, beta2)
pr = 1 / (1 + exp(-z))

# this is the bug step you were missing
# initialize an empty plot with sufficient range
plot(range(x1), range(pr), type = "n")

# then just add to it in the for loop
for (i in 1:N) {
    lines(x1, pr[, i])
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM