
Last chance! 50% off unlimited learning
Sale ends in
Variate Generation for Chi-Squared Distribution
vchisq(n, df, ncp = 0, stream = NULL, antithetic = FALSE, asList = FALSE)
number of observations
Degrees of freedom (non-negative, but can be non-integer)
Non-centrality parameter (non-negative)
if NULL
(default), uses stats::runif
to generate uniform variates to invert via
stats::qchisq
;
otherwise, an integer in 1:25 indicates the rstream
stream
from which to generate uniform variates to invert via
stats::qchisq
;
if FALSE
(default), inverts stats::runif
or
rstream::rstream.sample
; otherwise, uses
if FALSE
(default), output only the generated
random variates; otherwise, return a list with components suitable for
visualizing inversion. See return for details
If asList
is FALSE (default), return a vector of random variates.
Otherwise, return a list with components suitable for visualizing inversion, specifically:
A vector of generated U(0,1) variates
A vector of chi-squared random variates
Parameterized quantile function
Parameterized title of distribution
Generates random variates from the chi-squared distribution.
Chi-Squared variates are generated by inverting uniform(0,1) variates
produced either by stats::runif
(if stream
is
NULL
) or by rstream::rstream.sample
(if stream
is not NULL
).
In either case, stats::qchisq
is used to
invert the uniform(0,1) variate(s).
In this way, using vchisq
provides a monotone and synchronized
binomial variate generator, although not particularly fast.
The stream indicated must be an integer between 1 and 25 inclusive.
The chi-squared distribution with df
=
for
The non-central chi-squared distribution with df
= n degrees of
freedom and non-centrality parameter ncp
for
# NOT RUN {
set.seed(8675309)
# NOTE: following inverts rstream::rstream.sample using stats::qchisq
vchisq(3, df = 3, ncp = 2)
set.seed(8675309)
# NOTE: following inverts rstream::rstream.sample using stats::qchisq
vchisq(3, 3, stream = 1)
vchisq(3, 3, stream = 2)
set.seed(8675309)
# NOTE: following inverts rstream::rstream.sample using stats::qchisq
vchisq(1, 3, stream = 1)
vchisq(1, 3, stream = 2)
vchisq(1, 3, stream = 1)
vchisq(1, 3, stream = 2)
vchisq(1, 3, stream = 1)
vchisq(1, 3, stream = 2)
set.seed(8675309)
variates <- vchisq(1000, 3, stream = 1)
set.seed(8675309)
variates <- vchisq(1000, 3, stream = 1, antithetic = TRUE)
# }
Run the code above in your browser using DataLab