Loglinear GLMs

web.stanford.edu/class/stats305b

Jonathan Taylor

Winter 2022

Loglinear models (Chs. 9 & 10)

Two-way tables

Model for joint law

\[ P(X=i,Y=j) = \frac{\mu_{ij}}{\sum_{ab} \mu_{ab}}. \]

\[ \begin{aligned} \lambda^X_I &= 0 \\ \lambda^Y_J &= 0 \\ \lambda^{XY}_{iJ} &= \lambda^{XY}_{Ij} = 0 \end{aligned} \]

Three way tables (9.3)

\[ \begin{aligned} \log(\mu_{ijk}) &= \lambda + \lambda^X_i + \lambda^Y_j + \lambda^Z_k \\ & \qquad + \lambda^{XY}_{ij} +\lambda^{YZ}_{jk} +\lambda^{XZ}_{ik} \\ & \qquad + \lambda^{XYZ}_{ijk} \end{aligned} \]

Mutual independence

\[ \log(\mu_{ijk}) = \lambda + \lambda^X_i + \lambda^Y_j + \lambda^Z_k \]

\[ \mu_{ijk} \propto e^{\lambda^X_i} \cdot e^{\lambda^Y_j} \cdot e^{\lambda^Z_k}. \]

Joint independence: \(Y\) independent of \((X,Z)\)

\[ \log(\mu_{ijk}) = \lambda + \lambda^X_i + \lambda^Y_j + \lambda^Z_k + \lambda^{XZ}_{ik} \]

\[ \mu_{ijk} \propto e^{\lambda^Y_j} \cdot e^{\lambda^X_i + \lambda^{Z}_k + \lambda^{XZ}_{ik}}. \]

Conditional independence of \(Y\) and \(X\) given \(Z\)

\[ \log(\mu_{ijk}) = \lambda + \lambda^X_i + \lambda^Y_j + \lambda^Z_k + \lambda^{XZ}_{ik} + \lambda^{YZ}_{jk} \]

\[ \mu_{ijk} \propto e^{\lambda^Y_j + \lambda^{YZ}_{jk}} \cdot e^{\lambda^X_i + \lambda^{Z}_k + \lambda^{XZ}_{ik}}. \]

Test of conditional independence

\[ H_0: \lambda^{XY}_{ij} \equiv 0, \lambda^{XYZ}_{ijk} \equiv 0 \]

\[ H_a: \lambda^{XYZ}_{ijk} \equiv 0 \]

# Table 9.1 of Agresti
library(vcdExtra) # for `DaytonSurvey` data
## Loading required package: vcd
## Loading required package: grid
## Loading required package: gnm
data(DaytonSurvey)
Dayton.aggregated = aggregate(Freq ~ cigarette + alcohol + marijuana, 
                              data=DaytonSurvey, FUN=sum)
Dayton.aggregated
##   cigarette alcohol marijuana Freq
## 1       Yes     Yes       Yes  911
## 2        No     Yes       Yes   44
## 3       Yes      No       Yes    3
## 4        No      No       Yes    2
## 5       Yes     Yes        No  538
## 6        No     Yes        No  456
## 7       Yes      No        No   43
## 8        No      No        No  279
full.model = glm(Freq ~ .^2, data=Dayton.aggregated, family=poisson)  # homogeneous association: only up to 2way interactions
summary(full.model)
## 
## Call:
## glm(formula = Freq ~ .^2, family = poisson, data = Dayton.aggregated)
## 
## Deviance Residuals: 
##        1         2         3         4         5         6         7         8  
##  0.02044  -0.09256  -0.33428   0.49134  -0.02658   0.02890   0.09452  -0.03690  
## 
## Coefficients:
##                         Estimate Std. Error z value Pr(>|z|)    
## (Intercept)              6.81387    0.03313 205.699  < 2e-16 ***
## cigaretteNo             -3.01575    0.15162 -19.891  < 2e-16 ***
## alcoholNo               -5.52827    0.45221 -12.225  < 2e-16 ***
## marijuanaNo             -0.52486    0.05428  -9.669  < 2e-16 ***
## cigaretteNo:alcoholNo    2.05453    0.17406  11.803  < 2e-16 ***
## cigaretteNo:marijuanaNo  2.84789    0.16384  17.382  < 2e-16 ***
## alcoholNo:marijuanaNo    2.98601    0.46468   6.426 1.31e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 2851.46098  on 7  degrees of freedom
## Residual deviance:    0.37399  on 1  degrees of freedom
## AIC: 63.417
## 
## Number of Fisher Scoring iterations: 4
reduced.model = glm(Freq ~ alcohol + marijuana + cigarette + 
                    alcohol:marijuana + 
                    cigarette:marijuana, 
                    data=Dayton.aggregated, family=poisson)
summary(reduced.model)
## 
## Call:
## glm(formula = Freq ~ alcohol + marijuana + cigarette + alcohol:marijuana + 
##     cigarette:marijuana, family = poisson, data = Dayton.aggregated)
## 
## Deviance Residuals: 
##       1        2        3        4        5        6        7        8  
##  0.0584  -0.2619  -0.8663   2.2287   4.5702  -4.3441  -9.7716   6.8353  
## 
## Coefficients:
##                         Estimate Std. Error z value Pr(>|z|)    
## (Intercept)              6.81261    0.03316 205.450   <2e-16 ***
## alcoholNo               -5.25227    0.44837 -11.714   <2e-16 ***
## marijuanaNo             -0.72847    0.05538 -13.154   <2e-16 ***
## cigaretteNo             -2.98919    0.15111 -19.782   <2e-16 ***
## alcoholNo:marijuanaNo    4.12509    0.45294   9.107   <2e-16 ***
## marijuanaNo:cigaretteNo  3.22431    0.16098  20.029   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 2851.46  on 7  degrees of freedom
## Residual deviance:  187.75  on 2  degrees of freedom
## AIC: 248.8
## 
## Number of Fisher Scoring iterations: 5
anova(reduced.model, full.model) # null: conditional independence of alcohol & cigarette | marijuana
## Analysis of Deviance Table
## 
## Model 1: Freq ~ alcohol + marijuana + cigarette + alcohol:marijuana + 
##     cigarette:marijuana
## Model 2: Freq ~ (cigarette + alcohol + marijuana)^2
##   Resid. Df Resid. Dev Df Deviance
## 1         2    187.754            
## 2         1      0.374  1   187.38

Homogeneous association

\[ \theta_{ij(k)} = \frac{\mu_{ijk} \mu_{i+1,j+1,k}}{\mu_{i+1,j,k} \mu_{i,j+1,k}}. \]

\[ \log \theta_{ij(k)} = \lambda^{XY}_{ij} + \lambda^{XY}_{i+1,j+1} - \lambda^{XY}_{i+1,j} - \lambda^{XY}_{i,j+1} \]

Why homogeneous association?

These models can be described by an undirected graph.

Mutual independence of \(Y\) and \((X,Z)\)

Conditional independence of \(Y\) and \(X\) given \(Z\)

Higher dimensional tables (9.4)

\[ \begin{aligned} \log(\mu_{ijkl}) &= \lambda + \lambda^X_i + \lambda^Y_j + \lambda^Z_k + \lambda^W_l \\ & \qquad + \lambda^{XY}_{ij} + \lambda^{XZ}_{ik} + \lambda^{XW}_{il} \\ & \qquad + \lambda^{YZ}_{jk} + \lambda^{YW}_{jl} + \lambda^{ZW}_{kl} \end{aligned} \]

Connection with logistic regression (9.5)

\[ \begin{aligned} \log \left(\frac{P(Y=1|X=i,Z=k,W=l)}{P(Y=0|X=i,Z=k,W=l)}\right) &= \log\left(\frac{\mu_{i1kl}}{\mu_{i0kl}}\right) \\ &= \lambda^Y_1 - \lambda^Y_0 + \\ & \qquad \lambda^{XY}_{i1} - \lambda^{XY}_{i0} + \\ & \qquad \lambda^{YZ}_{1k} - \lambda^{YZ}_{0k} + \\ & \qquad \lambda^{YW}_{1l} - \lambda^{YW}_{0l} \end{aligned} \]

\[ \begin{aligned} \log \left(\frac{P(Y=1|X=i,Z=k,W=l)}{P(Y=0|X=i,Z=k,W=l)}\right) &= \log\left(\frac{\mu_{i1kl}}{\mu_{i0kl}}\right) \\ &= \lambda^Y_1 - \lambda^Y_0 + \\ & \qquad \lambda^{XY}_{i1} - \lambda^{XY}_{i0} + \\ & \qquad \lambda^{YZ}_{1k} - \lambda^{YZ}_{0k} \end{aligned} \]

Logistic regression model for \(Y\) allows us to estimate:

Logistic regression model for \(X\) allows us to estimate:

Non-binary data

How to estimate? (Especially if number of variables grow)

Pseudolikelihood

\[ \begin{aligned} \log L_{\text{pseudo}}(\Lambda|X,Y,Z,W) &= \log L_{\text{logistic}}^Y(\Lambda|X,Z) + \\ & \qquad \log L_{\text{logistic}}^X(\Lambda|W,Y) + \\ & \qquad \log L_{\text{logistic}}^Z(\Lambda|Y,W) + \\ & \qquad \log L_{\text{logistic}}^W(\Lambda|X,Z) \end{aligned} \]

Exact likelihood

\[ \log L(\gamma,\Theta|X) = \gamma \cdot 2^k + \text{Tr}(\Theta S) - \text{sum}(N) \cdot \log \left( \sum_{x \in \{0,1\}^k} \exp(\gamma + x^T \Theta x) \right) \]

where

\[ S_{ij} = \begin{cases} \text{(1,1) entry in $X_i \times X_j$ marginal table} & i \neq j \\ \text{the number of 1's in $X_i$ marginal table.} & i=j \end{cases} \]

\[ S = B'B \]

Pseudolikelihood

Downside

Non-binary data

Selecting interactions (i.e. edges)

\[ \log L_{\text{pseudo}}(\Theta) + \lambda \|\Theta_{\text{offdiag}}\|_1 \]

Pseudolikelihood for Ising model

\[ P_{(\alpha,\beta)}(X) \propto \exp\left(\alpha \cdot \sum_{i \in V} X_i + \beta \cdot \sum_{(i,j) \in E} X_i X_j\right) \]

Contribution of a vertex

\[ \begin{aligned} P_{(\alpha,\beta)}(X_i=1|X_{N(i)}) &\propto \exp\left(\alpha + \beta \sum_{j \in N(i)} X_j \right) \\ P_{(\alpha,\beta)}(X_i=0|X_{N(i)}) &\propto 1 \\ \end{aligned} \]

\[ E_{(\alpha^*,\beta^*)} \left[\sum_{i \in V} \left[X_i - \frac{\exp\left(\alpha + \beta \sum_{j \in N(i)} X_j \right)}{1 + \exp\left(\alpha + \beta \sum_{j \in N(i)} X_j \right)} \right] \right] \]

Implications for Gibbs sampling

\[ \begin{aligned} P_{(\alpha,\beta)}(X_i=1|X_{N(i)}) &\propto \exp\left(\alpha + \beta \sum_{j \in N(i)} X_j \right) \\ P_{(\alpha,\beta)}(X_i=0|X_{N(i)}) &\propto 1 \\ \end{aligned} \]

Other uses of pseudolikelihood

OLS regression

\[ \begin{aligned} -\log L(\beta, \sigma^2|X) &= \frac{1}{2 \sigma^2} \|Y-X\beta\|^2_2 + \frac{n}{2} \log(2\pi \sigma^2) \\ &= \frac{1}{2 \sigma^2} \|Y\|^2_2 - \frac{1}{\sigma^2}\beta^T(X^TY) + C(\sigma^2,\beta) \end{aligned} \]

Continuous variables

\[ \log L(\gamma,\Theta|X) = \gamma \cdot 2^k + \text{Tr}(\Theta S) - \sum_{x \in \{0,1\}^k} \exp(\gamma + x^T \Theta x) \]

\[ \log L(\Sigma) = - \frac{n}{2} \log |\Sigma| - \frac{1}{2} \text{Tr}(\Sigma^{-1}S) \]

\[ S = X'X = \sum_{s=1}^n X_sX_s' \]

\[ \log L(\Theta) = \frac{n}{2} \log |\Theta| - \frac{1}{2} \text{Tr}(\Theta S) \]

Selecting edges: graphical LASSO

\[ \hat{\Theta} = \text{argmin}_{\Theta} \left[-\frac{n}{2} \log |\Theta| + \frac{1}{2} \text{Tr}(\Theta S) + \lambda \|\Theta_{\text{offdiag}}\|_1 \right] \]

From discrete to continuous: Lindsey’s method

\[ N_i \sim \text{Poisson}(\lambda_i) = \# \left\{s: X^D_s=i\right\} \]

Continuous

\[ X^{\Delta} = i \iff X \in ((i-1)\Delta, i\Delta] \\ \]

\[ \exp(\lambda_i) \approx \Delta \cdot \exp \left( \gamma_0 + \gamma_1 (i \Delta) \right), \qquad \gamma_1 = \beta_1 / \Delta, \gamma_0 = \beta_0 - \log\Delta \]

\[ f_{\gamma}(x) \propto \exp(\gamma_0 + \gamma_1 \cdot x) \]

\[ \exp(-\gamma_0) = \int_{[0,1]} e^{\gamma_1 x} \; dx \]

Basis expansion

\[ \exp(\lambda_i) = \Delta \cdot \exp \left(\gamma_0 + \sum_j \gamma_j h_j(i \cdot \Delta) \right) \]

\[ f(x) \propto \exp\left(\sum_j \gamma_j h_j(x) \right), \qquad \exp(-\gamma_0) = \int_{[-C,C]} \exp\left(\sum_j \gamma_j h_j(x) \right) \; dx \]

Custom families: Lindsey’s method

\[ \exp(\lambda_i) = \Delta_i \cdot \exp \left(\gamma_0 + \sum_j \gamma_j h_j(t_i) \right) \]

X = rnorm(20000)
bins = unique(c(seq(-4,-2,by=0.2), 
                seq(-2.1,2,by=0.1),
                seq(2.2, 4, by=0.2)))
Y = table(cut(X, breaks=bins))
midpts = (bins[1:(length(bins)-1)] + bins[2:length(bins)])/2
widths = bins[2:length(bins)] - bins[1:(length(bins)-1)]
barplot(Y, widths)

df = cbind(Y, midpts, midpts^2)
colnames(df) = c('N', 'linear', 'quadratic')
df = data.frame(df)
M = glm(N ~ linear + quadratic, 
        family=poisson, 
        offset=log(widths),
        data=df)
## Warning in log(widths): NaNs produced
summary(M)
## 
## Call:
## glm(formula = N ~ linear + quadratic, family = poisson, data = df, 
##     offset = log(widths))
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -7.2651  -0.5705   0.2531   1.0650   2.3851  
## 
## Coefficients:
##              Estimate Std. Error  z value Pr(>|z|)    
## (Intercept)  8.994306   0.008699 1034.000  < 2e-16 ***
## linear       0.024856   0.007170    3.467 0.000526 ***
## quadratic   -0.518815   0.005161 -100.524  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 27240.69  on 59  degrees of freedom
## Residual deviance:   145.03  on 57  degrees of freedom
##   (1 observation deleted due to missingness)
## AIC: 558.3
## 
## Number of Fisher Scoring iterations: 4
M_no_offset = glm(N ~ linear + quadratic, 
        family=poisson, 
        data=df)
summary(M_no_offset)
## 
## Call:
## glm(formula = N ~ linear + quadratic, family = poisson, data = df)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -3.2390  -0.9766   0.1222   1.3073   6.6948  
## 
## Coefficients:
##              Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  6.649725   0.008816 754.252   <2e-16 ***
## linear       0.017415   0.007102   2.452   0.0142 *  
## quadratic   -0.446184   0.005311 -84.017   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 16794.95  on 60  degrees of freedom
## Residual deviance:   199.21  on 58  degrees of freedom
## AIC: 618.79
## 
## Number of Fisher Scoring iterations: 4

Joint distributions

Back to discretization

What about dependence?

\[ \sum_{j'l'} \gamma^{XY}_{j'l'} h^{XY}_{j'l'}(i\Delta,j\Delta). \]

What kind of \(h^{XY}\)?

Mix of discrete and Gaussian

Parameters

Two discrete variables

Parameters

Several continuous and discrete variables

Interactions

Pseudo-likelihoods

Conditional independence

Selecting edges: group LASSO

\[ \begin{aligned} \hat{\beta} &= \text{argmin}_{\beta} \frac{1}{2} \|Z-\beta\|^2_2 + \lambda \|\beta\|_2 \\ &= \begin{cases} 0 & \|Z\|_2 \leq \lambda \\ \frac{Z}{\|Z\|_2} \cdot (\|Z\|_2-\lambda, 0) & \text{otherwise.} \end{cases} \\ &= \max(\|Z\|_2-\lambda, 0) \cdot \frac{Z}{\|Z\|_2} \end{aligned} \]

\[ \|\beta\|_F = \text{Tr}(\beta'\beta)^{1/2} \]