Files
GraphonSimulation/scripts/plot_densities.R
2026-01-20 15:13:27 +01:00

178 lines
5.3 KiB
R

# 1. Load functions and Libraries ----------------------------------------------
source("./R/graphon_distribution.R")
# 2. Set constants -------------------------------------------------------------
withr::with_seed(42) # set seed in a local environment
a0 <- c(0, 0)
a1 <- c(1.0)
a2 <- c(0.5, -0.3)
N <- 400 # number of samples for X
X1 = matrix(rnorm(N))
X2 = matrix(rnorm(2 * N), ncol = 2)
# 3. Normally distributed v's --------------------------------------------------
## 3.1 Plot a = 0 ==============================================================
# In this section we plot the conditional density p(u | x) for v ~ N(0,1) and
# a = (0, 0)
p1 <- create_cond_density(a0, dnorm, pnorm, X2)
givenX <- c(0, 0)
p1_plot <- \(x) p1(x, givenX)
plot.function(p1_plot, xlab="u", ylab="p(u |x) ")
title(main=expression("Conditional density for" ~ v %~% N(0, 1)), line=2)
title(
main = bquote(
a == (.(paste(a0, collapse = ", "))) ~ "," ~
N == .(N) ~ "," ~
x == (.(paste(givenX, collapse = ", ")))
),
line = 1,
cex = 0.65
)
## 3.2 Plot a != 0, X != 0 =====================================================
p2 <- create_cond_density(a2, dnorm, pnorm, X2)
givenX <- c(-0.5, 0.5)
p2_plot <- \(x) p2(x, givenX)
plot.function(p2_plot, xlab="u", ylab="p(u |x) ")
title(main=expression("Conditional density for" ~ v %~% N(0, 1)), line=2)
title(
main = bquote(
a == (.(paste(a2, collapse = ", "))) ~ "," ~
N == .(N) ~ "," ~
x == (.(paste(givenX, collapse = ", ")))
),
line = 1,
cex = 0.65
)
## 3.3 Plot one dimensional X_i ================================================
p3 <- create_cond_density(a1, dnorm, pnorm, X1)
givenX <- c(-0.5)
p3_plot <- \(x) p3(x, givenX)
plot.function(p3_plot, xlab="u", ylab="p(u |x) ")
title(main=expression("Conditional density for" ~ v %~% N(0, 1)), line=2)
title(
main = bquote(
a == (.(paste(a1, collapse = ", "))) ~ "," ~
N == .(N) ~ "," ~
x == (.(paste(givenX, collapse = ", ")))
),
line = 1,
cex = 0.65
)
## 3.4 Plot v ~ N(0, 2) ========================================================
dens_func <-\(x) dnorm(x, sd=sqrt(2))
cdf <- \(x) pnorm(x, sd=sqrt(2))
p4 <- create_cond_density(a1, dens_func, cdf, X1)
givenX <- c(-0.5)
p4_plot <- \(x) p4(x, givenX)
plot.function(p4_plot, xlab="u", ylab="p(u |x) ")
title(main=expression("Conditional density for" ~ v %~% N(0, 2)), line=2)
title(
main = bquote(
a == (.(paste(a1, collapse = ", "))) ~ "," ~
N == .(N) ~ "," ~
x == (.(paste(givenX, collapse = ", ")))
),
line = 1,
cex = 0.65
)
# 4. Expontial distribution for v's --------------------------------------------
## 4.1 One dimensional X_i =====================================================
# This example has a jump in [0.14, 0.15].
# The zero can not be explained and it's not a probability as:
# integrate(p5_plot, 0.15, 1, subdivisions = 500)
# => 0.952492 with absolute error < 0.00011
lambda <- 1.0
p5 <- create_cond_density(a1, dexp, pexp, X1)
givenX <- c(-0.5)
p5_plot <- \(x) p5(x, givenX)
plot.function(p5_plot, xlab="u", ylab="p(u |x) ")
title(main=expression("Conditional density for" ~ v %~% Exp(1)), line=2)
title(
main = bquote(
a == (.(paste(a1, collapse = ", "))) ~ "," ~
N == .(N) ~ "," ~
x == (.(paste(givenX, collapse = ", ")))
),
line = 1,
cex = 0.65
)
## 4.2 Two dimensional X_i =====================================================
lambda <- 1.0
p6 <- create_cond_density(a2, dexp, pexp, X2)
givenX <- c(-0.5)
p6_plot <- \(x) p6(x, givenX)
plot.function(p6_plot, xlab="u", ylab="p(u |x) ")
title(main=expression("Conditional density for" ~ v %~% Exp(1)), line=2)
title(
main = bquote(
a == (.(paste(a2, collapse = ", "))) ~ "," ~
N == .(N) ~ "," ~
x == (.(paste(givenX, collapse = ", ")))
),
line = 1,
cex = 0.65
)
## 4.3 Higher Rate of exponential distribtion ==================================
lambda <- 2.0
dens_func <- \(x) dexp(x, rate=lambda)
cdf <- \(x) pexp(x, rate=lambda)
p7 <- create_cond_density(a2, dens_func, cdf, X2)
givenX <- c(-0.5, 0.5)
p7_plot <- \(x) p7(x, givenX)
plot.function(p7_plot, xlab="u", ylab="p(u |x) ")
title(main=expression("Conditional density for" ~ v %~% Exp(2.0)), line=2)
title(
main = bquote(
a == (.(paste(a2, collapse = ", "))) ~ "," ~
N == .(N) ~ "," ~
x == (.(paste(givenX, collapse = ", ")))
),
line = 1,
cex = 0.65
)
# 5. Uniform Distribution ------------------------------------------------------
## Two dimensional X_i =========================================================
p8 <- create_cond_density(a2, dunif, punif, X2)
givenX <- c(-0.5, 0.5)
p8_plot <- \(x) p8(x, givenX)
plot.function(p8_plot, xlab="u", ylab="p(u |x) ")
title(main=expression("Conditional density for" ~ v %~% U(0,1)), line=2)
title(
main = bquote(
a == (.(paste(a2, collapse = ", "))) ~ "," ~
N == .(N) ~ "," ~
x == (.(paste(givenX, collapse = ", ")))
),
line = 1,
cex = 0.65
)
## 5.2 One dimensional X_i =====================================================
p9 <- create_cond_density(a1, dunif, punif, X1)
givenX <- c(-0.5)
p9_plot <- \(x) p9(x, givenX)
plot.function(p9_plot, xlab="u", ylab="p(u |x) ")
title(main=expression("Conditional density for" ~ v %~% U(0,1)), line=2)
title(
main = bquote(
a == (.(paste(a1, collapse = ", "))) ~ "," ~
N == .(N) ~ "," ~
x == (.(paste(givenX, collapse = ", ")))
),
line = 1,
cex = 0.65
)