CHAPTER 5. DISTRIBUTIONS AND DENSITIES

7- Explain how you can generate a random variable whose cumulative distribution function is

F(x) = \[\begin{cases} 0, & \text{if } x < 0, \\ x^2, & \text{if } 0 \leq x \leq 1, \\ 1, & \text{if } x > 1. \end{cases}\]

Solution:

To generate a random variable \(X\) with the given cumulative distribution function (CDF) F(x) we can use the inverse transform sampling method.

Compute the inverse of the cumulative distribution function, denoted as \(F^{-1}(u)\), where \(u\) is a uniform random variable in the range \([0, 1]\). Generate a uniform random variable \(u\) in the range \([0, 1]\). Compute the corresponding value of \(x\) using the inverse CDF, i.e., \(x = F^{-1}(u)\). For the given CDF \(F(x)\), the inverse function can be computed as follows:

For \(0 \leq u < 1\), the inverse CDF \(F^{-1}(u)\) is the solution to the equation \(F(x) = u\). Since \(F(x) = x^2\) for \(0 \leq x \leq 1\), solving \(x^2 = u\) yields \(x = \sqrt{u}\). Therefore, to generate a random variable with the given CDF:

Generate a uniform random variable \(u\) in the range \([0, 1]\). Compute \(x = \sqrt{u}\) to obtain a random variable following the desired distribution.

# Step 1: Generate a uniform random variable u in the range [0, 1]
u <- runif(1)

# Step 2: Compute the corresponding value of x using the inverse CDF, i.e., x = F^(-1)(u)
x <- sqrt(u)

# Print the generated random variable
print(x)
## [1] 0.9645774

This result suggests that for the randomly generated \(u\), the corresponding \(x\) value is approximately 0.964 which follows the distribution defined by the given cumulative distribution function \(F(x)\)

# Define the inverse CDF function
inverse_CDF <- function(u) {
  if (u < 0) {
    return(0)
  } else if (u > 1) {
    return(1)
  } else {
    return(sqrt(u))
  }
}

# Generate a sequence of u values
u_values <- seq(0, 1, length.out = 10000)

# Compute the corresponding x values using the inverse CDF
x_values <- sapply(u_values, inverse_CDF)

# Plot the CDF
plot(u_values, x_values, type = "l", xlab = "u", ylab = "x", main = "Cumulative Distribution Function (CDF)")