## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(echo = TRUE, collapse = TRUE, comment = "#>")

## ----lib----------------------------------------------------------------------
library(infometrics)

## ----me-die-------------------------------------------------------------------
dice <- data.frame(y = 4.5,
                   s1 = 1, s2 = 2, s3 = 3, s4 = 4, s5 = 5, s6 = 6)
fit_me <- inverse_ce(y ~ s1 + s2 + s3 + s4 + s5 + s6 - 1, data = dice)
round(coef(fit_me), 4)          # p_hat over the six faces

## ----me-check-----------------------------------------------------------------
sum(1:6 * coef(fit_me))          # reproduces the mean 4.5
c(H_phat = shannon_entropy(coef(fit_me)), H_max = log(6))

## ----ce-uniform---------------------------------------------------------------
fit_unif <- inverse_ce(y ~ s1 + s2 + s3 + s4 + s5 + s6 - 1,
                       data = dice, p0 = rep(1 / 6, 6))
max(abs(coef(fit_unif) - coef(fit_me)))     # ~ 0: ME == CE(uniform prior)

## ----ce-prior-----------------------------------------------------------------
p0_load <- c(.05, .05, .10, .15, .25, .40)  # prior beliefs favouring high faces
fit_ce  <- inverse_ce(y ~ s1 + s2 + s3 + s4 + s5 + s6 - 1,
                      data = dice, p0 = p0_load)
round(rbind(ME = coef(fit_me), CE = coef(fit_ce)), 4)
sum(1:6 * coef(fit_ce))                      # still satisfies the mean moment

## ----info-2mom----------------------------------------------------------------
faces  <- 1:6
p_ref  <- c(.10, .12, .15, .18, .20, .25)
Xm     <- rbind(faces, faces^2)                 # 2 moments x 6 states
ym     <- as.numeric(Xm %*% p_ref)              # feasible (mean, 2nd moment)
d2 <- data.frame(y  = ym,
                 s1 = Xm[, 1], s2 = Xm[, 2], s3 = Xm[, 3],
                 s4 = Xm[, 4], s5 = Xm[, 5], s6 = Xm[, 6])
fit2 <- inverse_ce(y ~ s1 + s2 + s3 + s4 + s5 + s6 - 1, data = d2)
summary(fit2)

## ----info-se------------------------------------------------------------------
vcov(fit2)                       # I^{-1}, the T x T dual covariance
fit2$se_lambda                   # sqrt(diag(vcov)) for lambda
fit2$se_p                        # delta-method curvature SEs for p_hat

## ----Sp-----------------------------------------------------------------------
c(ME = fit_me$S, CE = fit_ce$S)

## ----fano---------------------------------------------------------------------
fano_bounds(fit2)

