Courtney Brown, Ph.D.
A Brief Biography
Curriculum Vitae
Career Guidance Videos
Political Music Videos
Political Music Articles
R Tutorial Videos
Data Sets and
Computer Programs
Speculative Nonfiction
The Farsight Institute
Book Reviews
Publicity Photos
Speaking Requests
Farsight Prime
African Television
Music Videos

Follow on Facebook Courtney Brown
Follow on FB
Follow on Twitter Courtney Brown
Follow on Twitter
Courtney Brown on Instagram


Conducting Logistic Regression in R

Below is computer code written in the R programming language that conducts logistic regression analysis. Just copy and paste it into R and watch it rip. The data set for this R program can be found HERE.

# First we get our data.
mydata <- read.table("panel80.txt")
# attach(mydata) # In case you want to work with the variable names directly
names(mydata) # This shows us all the variable names.
# options(scipen=20) # suppress "scientific" notation
options(scipen=NULL) # Brings things back to normal
# Now we want to make a binary response variable that has a vote for Carter=0 and a vote for Reagan=1.
mysubsetdata1 <- subset(mydata, VOTE == 1 | VOTE==2) # This keeps only those respondents who actually voted for Carter or Reagan.
mysubsetdata2<-subset(mysubsetdata1, select=c(VOTE, REAFEEL3, CARFEEL3, INC, AGE, PARTYID)) #This keeps only the variables that we are using.
# In VOTE, a vote for Reagan=1 and a vote for Carter=2. We change that in the loop below when we create the new variable binaryvote.
binaryvote <- 0 # This initializes the binaryvote variable.
for (i in 1:nrow(mysubsetdata2)) {
if (mysubsetdata2$VOTE[i]==2) binaryvote[i]=0 else binaryvote[i]=1
# Here is another way to do the same thing in one line.
binaryvote2 <- ifelse((mysubsetdata2$VOTE == 1), 1, 0)
mysubsetdata3<-cbind(mysubsetdata2, binaryvote, binaryvote2)
# Now we do the logistic regression.
logitvote.model <- glm(binaryvote ~ INC + AGE + PARTYID, family=binomial, data=mysubsetdata3)
# Now we get the individual risk factors (or odds ratios).
round(exp(cbind(Estimate=coef(logitvote.model), confint(logitvote.model))), 2) # The 2 at the end is the number of decimals we want.