Nothing
## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.width = 7,
fig.height = 5,
warning = FALSE,
message = FALSE
)
library(zmctp)
# Flag: skip slow chunks on CRAN (they time out during R CMD build)
NOT_CRAN <- !identical(Sys.getenv("NOT_CRAN"), "true")
## ----basic-dist---------------------------------------------------------------
# Probability mass function
dctp(0:5, a = 1, b = 0.5, gama = 5)
# Cumulative distribution function
pctp(3, a = 1, b = 0.5, gama = 5)
# Quantile function (inverse CDF)
qctp(c(0.25, 0.5, 0.75), a = 1, b = 0.5, gama = 5)
# Random generation
set.seed(123)
x <- rctp(30, a = 1, b = 0.5, gama = 5)
cat("Sample mean:", mean(x), "\nSample variance:", var(x), "\n")
## ----check-dispersion---------------------------------------------------------
# Generate overdispersed data
set.seed(456)
x_over <- rctp(20, a = 1.2, b = 0.3, gama = 6)
head(x_over)
# Calculate dispersion index
dispersion_index <- var(x_over) / mean(x_over)
cat("Dispersion Index:", dispersion_index, "\n")
if (dispersion_index > 1) {
cat("Data is OVERDISPERSED\n")
} else if (dispersion_index < 1) {
cat("Data is UNDERDISPERSED\n")
} else {
cat("Data is EQUIDISPERSED\n")
}
## ----fit-ctp, eval=FALSE------------------------------------------------------
# # Fit CTP model to moderate-sized data
# set.seed(456)
# x_over <- rctp(200, a = 1.2, b = 0.3, gama = 6)
# fit_ctp <- ctp.fit(x_over)
# print(fit_ctp)
## ----fit-ctp-output, echo=FALSE, comment=""-----------------------------------
cat("CTP Distribution - Maximum Likelihood Estimates
===============================================
Parameter Estimates:
Estimate Std.Error
a 1.4593 0.3585
b 0.0011 0.0000
gama 8.5912 3.1878
Goodness-of-Fit Statistics:
Log-Likelihood: -178.1003
AIC: 362.2006
BIC: 372.0956
Pearson Chi-sq: 19.6799
Wald Chi-sq: 189.8432
Convergence: YES")
## ----plot-ctp, fig.height=6, eval=FALSE---------------------------------------
# plot(fit_ctp, type = "frequency")
# plot(fit_ctp, type = "cdf")
# plot(fit_ctp, type = "qq")
## ----zm-ctp-example, eval=FALSE-----------------------------------------------
# # Generate zero-inflated data
#
# x_zi <- rzictp(300, a = 1, b = 0.5, gama = 6, omega = 0.3)
# cat("Proportion of zeros:", mean(x_zi == 0), "\n")
# cat("Expected P(X=0) under CTP:", dctp(0, 1, 0.5, 6), "\n")
# fit_ctp <- ctp.fit(x_zi)
# fit_zm <- zictp.fit(x_zi)
# summary(fit_zm)
# cat("Standard CTP AIC:", fit_ctp$AIC, "\n")
# cat("ZM-CTP AIC:", fit_zm$AIC, "\n")
# cat("Omega estimate:", fit_zm$estimates["omega"], "\n")
## ----echo=FALSE, comment=""---------------------------------------------------
cat("Proportion of zeros: 0.7966667
Expected P(X=0) under CTP: 0.7570218
=== Zero-Modified CTP Distribution Fit Summary ===
Zero-Modified CTP Distribution - Maximum Likelihood Estimates
=============================================================
Parameter Estimates:
Estimate Std.Error
a 2.5646 NA
b 0.0017 NA
gama 16.8737 NA
omega 0.4656 NA
Goodness-of-Fit Statistics:
Log-Likelihood: -216.5545
AIC: 441.1090
BIC: 455.9241
Pearson Chi-sq: 2.7242
Wald Chi-sq: 287.6122
Convergence: YES
--- Moments ---
Mean: 0.3271 (empirical: 0.3267)
Variance: 0.6467 (empirical: 0.6220)
P(X=0): 0.7967 (empirical: 0.7967)
--- Observed vs Expected Frequencies ---
x Freq expected
1 0 239 239.0001656
2 1 40 38.7105351
3 2 11 13.7597381
4 3 5 5.0633781
5 4 4 1.9722958
6 5 1 0.8143692
Standard CTP AIC: 440.03
ZM-CTP AIC: 441.109
Omega estimate: 0.4656324")
## ----cpd-comparison, eval=FALSE-----------------------------------------------
# # Install cpd if needed
# # install.packages("cpd")
#
# library(zmctp)
#
# # Generate data where cpd struggles
# set.seed(100)
# x_problem <- rzictp(2000, a = 1, b = 0.001, gama = 8, omega = 0.2)
#
# # Compare results
# cpd_fit <- cpd::fitctp(x_problem, astart=1, bstart=0.001, gammastart=8)
# zmctp_fit <- zictp.fit(x_problem)
# cat("cpd b estimate:", cpd_fit$coefficients[2], "\n")
# cat("zmctp b estimate:", zmctp_fit$estimates["b"], "\n")
# cat("zmctp omega estimate:", zmctp_fit$estimates["omega"], "\n")
## ----cpd-comparison-result, echo=FALSE, comment=""----------------------------
cat("
cpd b estimate: 8.072796e-07
zmctp b estimate: 0.0007942037
zmctp omega estimate: 0.04831814")
## ----session-info-------------------------------------------------------------
sessionInfo()
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.