## ----setup, include=FALSE----------------------------------------------------- knitr::opts_chunk$set(echo = TRUE) library(TKApprox) ## ----------------------------------------------------------------------------- # Define exponential distribution pdf_exp <- function(x, param) dexp(x, rate = param) cdf_exp <- function(x, param) pexp(x, rate = param) # Gamma prior prior_spec <- list(rate = list(family = "gamma", hyperparameters = list(shape = 2, rate = 1))) # Generate data set.seed(123) data <- rexp(20, rate = 1.5) # Construct log-posterior log_post <- tk_posterior(data, "complete", pdf_exp, cdf_exp, prior_spec) # Find posterior mode mode_result <- tk_mode(log_post, initial_values = c(rate = 1)) # Compute Hessian and covariance hessian_result <- tk_hessian(log_post, mode_result$mode) # Compute posterior mean using TK approximation g_fn <- function(param) param[1] # g(θ) = θ for posterior mean tk_result <- tk_expectation(log_post, g_fn, mode_result, hessian_result) # Compare with direct fit fit <- tk_fit(data, "complete", pdf_exp, cdf_exp, prior_spec, initial_values = c(rate = 1), loss_function = "sel") data.frame( TK_approximation = tk_result$expectation, Direct_fit = coef(fit), Posterior_mode = mode_result$mode )