Question:
Good afternoon.
It's my first intervention on the stack, I'm new to R
, and my questions are pretty basic.
I need to generate a sample of 1000 observations from a distribution function of W
.
W
is a discrete random variable, which takes the values from 1
to 6
, represented by the sides of a die, given that it is biased and whose probability function is p1=0.25
, p2=0.16
, p3=0.18
, p4=0.17
, p5=0.14
, p6=0.10
.
How can I write this function in R?
Thanks
Answer:
To sample from a discrete variable that takes a finite number of values, one can use the sample
base function.
Before running the sample
function or another function that generates pseudorandom numbers, it is always better to call set.seed
.
set.seed(7228)
W <- 1:6
p <- c(0.25, 0.16, 0.18, 0.17, 0.14, 0.10)
w <- sample(W, 1000, replace = TRUE, prob = p)
head(w, n = 20)
#[1] 4 4 1 3 6 3 5 4 1 1 2 4 4 4 4 2 6 6 5 6
See if the outcome proportions are similar to the given probabilities.
tw <- table(w)
print(tw/sum(tw), digits = 2)
#w
# 1 2 3 4 5 6
#0.23 0.16 0.16 0.19 0.14 0.12
They don't look very different. If necessary, a Kolmogorov-Smirnov test can always be run, since both p
and the sample proportions come from a continuous distribution.
ks.test(p, tw/sum(tw))
With a p-value = 0.8928
it is concluded that yes, the distributions are not significantly different.