#!/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