#!/usr/local/bin/R^M
^M
^M
# Xavier Fernández i Marín^M
# August 2004^M
# http://xavier-fim.net^M
^M
# some code examples for logistic regression^M
^M
# How many cases do you want?^M
n <- 100	# let's start with n=100. You can play and try other values^M
^M
^M
# Create a dummy dependent variable^M
pre.dv <- rnorm(n)^M
dv <- rep(NA, n)^M
^M
dv[pre.dv>0.5] <- 1^M
dv[pre.dv<=0.5] <- 0^M
^M
^M
# Create three independent variables with some NA values^M
pre.var1 <- rep(c(NA, 3, 5, 10, 12), n/5)	# repeat until n is reached^M
pre.var1 <- c(pre.var1, 3, 5, 29, 18)		# just to be sure that are^M
var1 <- pre.var1[1:n]				# exactly n cases^M
^M
var2 <- seq(1,n,1)^M
^M
pre.var3 <- c(NA, 50, NA, 280)^M
pre.var3.b <- rep(pre.var3, n/4)^M
pre.var3.b <- c(pre.var3.b, pre.var3)^M
var3 <- pre.var3.b[1:n]^M
^M
^M
# Create the dataframe with all the values^M
df.with.na <- data.frame(dv, var1, var2, var3)^M
 ^M
^M
# Up to here, we have a fast way or an elegant way:^M
##FAST^M
#df <- subset(df.with.na, subset=(is.na(var1) | is.na(var2) | is.na(var3))^M
^M
##ELEGANT^M
# Now we want to delete from the dataframe all the values that have^M
# NA in at least one of the independent variables ^M
null.indep <- rep(FALSE, n)^M
null.indep[is.na(var1) | is.na(var2) | is.na(var3)] <- TRUE^M
null.indep[is.na(paste("var", 1:3, sep=""))] <- TRUE^M
^M
^M
# attach this newly created variable to de previous dataset^M
df.with.na <- cbind(df.with.na, null.indep) ^M
^M
# Now we know the values that are NA^M
# and we create our main dataframe^M
df <- subset(df.with.na, null.indep==FALSE)^M
^M
^M
^M
#### Logistic regression^M
attach(df)^M
mod1 <- glm(dv ~ var1 + var2 + var3, family=binomial("logit"))^M
^M
# Some information that you can get from^M
# only very temptative ^M
summary(mod1)^M
anova(mod1, test="Chisq")^M
logLik(mod1)^M
^M
# predicition^M
# also very temptative and the output can be improved...^M
fit1.group <- cut(fitted(mod1), c(0,0.5,1))^M
tab1 <- table(fit1.group, df$dv)^M
prop.table(tab1)^M
^M
# model fitting^M
AIC(mod1)^M
^M
# for further development^M
^M
# Diagnostics of the model^M
# library (car) required^M
library(car)^M
Anova(mod1)^M