You are on page 1of 3

R Notebook

#6.1.5 Example: Belief in Afterlife


rm(list=ls())
library(knitr)
Afterlife <-
read.table("http://users.stat.ufl.edu/~aa/cat/data/Afterlife.dat",
header = TRUE, stringsAsFactors = TRUE)

Afterlife

## race gender yes undecided no


## 1 white female 371 49 74
## 2 white male 250 45 71
## 3 black female 64 9 15
## 4 black male 25 5 13

library(VGAM)

## Loading required package: stats4

## Loading required package: splines

fit <- vglm(cbind(yes, undecided, no) ~ gender + race, family = multinomial,


data = Afterlife)

#get coefficients estimates , p values and standard errors


coef_summary <- coef(summary(fit))

# convert to data frame


coef_summary_df <- as.data.frame(coef_summary)

# display the data frame with kable


kable(coef_summary_df)

Estimate Std. Error z value Pr(>|z|)


(Intercept):1 1.3016026 0.2264944 5.7467323 0.0000000
(Intercept):2 -0.6529450 0.3404608 -1.9178271 0.0551329
gendermale: -0.4185504 0.1712549 -2.4440199 0.0145246
1
gendermale: -0.1050638 0.2465095 -0.4262059 0.6699578
2
racewhite:1 0.3417744 0.2370366 1.4418629 0.1493410
racewhite:2 0.2709752 0.3541265 0.7651933 0.4441564
fit.gender <- vglm(cbind(yes, undecided, no) ~ gender, family = multinomial,
data = Afterlife)

deviance(fit.gender)

## [1] 2.848098

# deviance dif = 2(log-likelihood. diff.)


VGAM::lrtest(fit, fit.gender)

## Likelihood ratio test


##
## Model 1: cbind(yes, undecided, no) ~ gender + race
## Model 2: cbind(yes, undecided, no) ~ gender
## #Df LogLik Df Chisq Pr(>Chisq)
## 1 2 -19.732
## 2 4 -20.730 2 1.9942 0.3689

fit.race <- vglm(cbind(yes, undecided, no) ~ race, family = multinomial,


data = Afterlife)

deviance(fit.race)

## [1] 8.046504

VGAM::lrtest(fit, fit.race) # deviance dif = 2(log-likelihood. diff.)

## Likelihood ratio test


##
## Model 1: cbind(yes, undecided, no) ~ gender + race
## Model 2: cbind(yes, undecided, no) ~ race
## #Df LogLik Df Chisq Pr(>Chisq)
## 1 2 -19.732
## 2 4 -23.329 2 7.1926 0.02742 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

# Estimated response probabilities


data.frame(Afterlife$race, Afterlife$gender, round(fitted(fit), 4))

## Afterlife.race Afterlife.gender yes undecided no


## 1 white female 0.7546 0.0996 0.1459
## 2 white male 0.6783 0.1224 0.1993
## 3 black female 0.7074 0.1002 0.1925
## 4 black male 0.6222 0.1206 0.2573

#display the data frame with kable


kable(data.frame(Afterlife$race, Afterlife$gender,round(fitted(fit),4)))
Afterlife.gen
Afterlife.race der yes undecided no
white female 0.7546 0.0996 0.1459
white male 0.6783 0.1224 0.1993
black female 0.7074 0.1002 0.1925
black male 0.6222 0.1206 0.2573

You might also like