housing {MASS} | R Documentation |
The housing
data frame has 72 rows and variables.
Sat |
Satisfaction of householders with their present housing circumstances, (High, Medium or Low). |
Infl |
Perceived degree of influence householders have on the management of the property (High, Medium, Low). |
Type |
Type of rental accommodation, (Tower, Atrium, Apartment, Terrace). |
Cont |
Contact residents are afforded with other residents, (Low, High). |
Freq |
Frequencies: the numbers of residents in each class. |
Madsen, M. (1976) Statistical analysis of multiple contingency tables. Two examples. Scand. J. Statist., 3, 97-106.
Cox, D. R. and Snell, E. J. (1984) Applied Statistics, Principles and Examples, Chapman & Hall.
data(housing) options(contrasts=c("contr.treatment", "contr.poly")) # Surrogate Poisson models house.glm0 <- glm(Freq ~ Infl*Type*Cont + Sat, family=poisson, data=housing) summary(house.glm0, cor=FALSE) addterm(house.glm0, ~. + Sat:(Infl+Type+Cont), test="Chisq") house.glm1 <- update(house.glm0, . ~ . + Sat*(Infl+Type+Cont)) summary(house.glm1, cor=FALSE) 1 - pchisq(deviance(house.glm1), house.glm1$df.resid) dropterm(house.glm1, test="Chisq") addterm(house.glm1, ~. + Sat:(Infl+Type+Cont)^2, test = "Chisq") hnames <- lapply(housing[, -5], levels) # omit Freq house.pm <- predict(house.glm1, expand.grid(hnames), type = "response") # poisson means house.pm <- matrix(house.pm, ncol=3, byrow=TRUE, dimnames=list(NULL, hnames[[1]])) house.pr <- house.pm/drop(house.pm %*% rep(1, 3)) cbind(expand.grid(hnames[-1]), round(house.pr, 2)) # Iterative proportional scaling loglm(Freq ~ Infl*Type*Cont + Sat*(Infl+Type+Cont), data=housing) # multinomial model library(nnet) house.mult<- multinom(Sat ~ Infl + Type + Cont, weights=Freq, data=housing) house.mult house.mult2 <- multinom(Sat ~ Infl*Type*Cont, weights=Freq, data=housing) anova(house.mult, house.mult2) house.pm <- predict(house.mult, expand.grid(hnames[-1]), type = "probs") cbind(expand.grid(hnames[-1]), round(house.pm, 2)) # proportional odds model house.cpr <- apply(house.pr, 1, cumsum) logit <- function(x) log(x/(1-x)) house.ld <- logit(house.cpr[2, ]) - logit(house.cpr[1, ]) sort(drop(house.ld)) mean(.Last.value) house.plr <- polr(Sat ~ Infl + Type + Cont, data = housing, weights = Freq) house.plr house.pr1 <- predict(house.plr, expand.grid(hnames[-1]), type = "probs") cbind(expand.grid(hnames[-1]), round(house.pr1, 2)) Fr <- matrix(housing$Freq, ncol = 3, byrow=TRUE) 2*sum(Fr*log(house.pr/house.pr1)) house.plr2 <- stepAIC(house.plr, ~.^2) house.plr2$anova