set.seed(1)
data(occupationalStatus)
## Fit a uniform association model separating diagonal effects
Rscore <- scale(as.numeric(row(occupationalStatus)), scale = FALSE)
Cscore <- scale(as.numeric(col(occupationalStatus)), scale = FALSE)
Uniform <- glm(Freq ~ origin + destination + Diag(origin, destination) +
Rscore:Cscore, family = poisson, data = occupationalStatus)
## Fit an association model with homogeneous row-column effects
RChomog <- gnm(Freq ~ origin + destination + Diag(origin, destination) +
Nonlin(MultHomog(origin, destination)), family = poisson,
data = occupationalStatus)
## Fit an association model with separate row and column effects
RC <- gnm(Freq ~ origin + destination + Diag(origin, destination) +
Mult(origin, destination), family = poisson,
data = occupationalStatus)
## Partition row and column effects
row.and.column.effects <- c(df = Uniform$df.res - RC$df.res,
deviance = Uniform$dev - RC$dev)
homogeneous.row.column.effect <- c(df = Uniform$df.res - RChomog$df.res,
deviance = Uniform$dev - RChomog$dev)
row.column.difference.effect <- row.and.column.effects -
homogeneous.row.column.effect
rbind(homogeneous.row.column.effect,
row.column.difference.effect,
row.and.column.effects)
Run the code above in your browser using DataLab