Skip to content

Simulation numbers from a probability table

3 messages · Kelvin, Tal Galili, Peter Ehlers

#
Dear friends,

If I have a table like this, first row A B C D ... are different
levels of the variable, first column 0 1 2 4 ... are the levels of the
"numbers", the numbers inside the table are the probabilities of the
"number" occuring.

    A      B      C       D    ...
0  0.2    0.3    0.1    0.05
1  0.1    0.1    0.2    0.2
2  0.02  0.2    0       0.1
4  0.3    0.01  0.01   0.4
...

How can I use R to do the simulation and get a table like this, first
row A B C D ... are different levels of the variable, the numbers
inside the table are the "numbers" simulated from the probailties
table above?

    A  B  C  D ...
    0  4   2   0
    2   2  0   1
    0   1  4   1
    2   2  0   0
    ...


    Thanks for help!


    Kelvin
#
Try this:

dat <- data.frame(x=11:14, pa=1:4/10, pb=4:1/10)
f <- function(numreps, data){
   pmat <- as.matrix(data[-1])
   x <- data[,1]
   result <- matrix(0, nrow=numreps, ncol=ncol(pmat))
   colnames(result) <- c("A", "B")
   for(i in seq_len(numreps)){
     result[i,] <- apply(pmat, 2, function(p) sample(x, 1, prob=p))
   }
   result
}
f(5, dat)

  -Peter Ehlers
Kelvin wrote: