bpdata <- read.csv("http://faculty.washington.edu/kenrice/sisg/bpdata.csv", header=T) #additive bpdata$n.minor <- (bpdata$snp3=="TC") + 2*(bpdata$snp3=="TT") lm1 <- lm(sbp~n.minor, data=bpdata) confint.default(lm1) summary(lm1) #dominant bpdata$domvar <- (bpdata$snp3=="TC") | (bpdata$snp3=="TT") lm2 <- lm(sbp~domvar, data=bpdata) confint.default(lm2) summary(lm2) ## some keyboards don't have |, so a trick is bpdata$domvar <- !(!(bpdata$snp3=="TC") & !(bpdata$snp3=="TT")) #recessive bpdata$recvar <- (bpdata$snp3=="TT") lm3<-lm(sbp~recvar, data=bpdata) confint.default(lm3) summary(lm3) ##2df lm4<-lm(sbp~snp3, data=bpdata) confint.default(lm4) summary(lm4) ## question 2 ## lm5<- lm(sbp~n.minor+dbp+bmi, data=bpdata) summary(lm5) # order doesn't matter for fitted model lm5a <- lm(sbp~dbp+bmi+n.minor,data=bpdata) summary(lm5a) # order does matter for ANOVA table anova(lm5) anova(lm5a) ## question 3 ## # doesn't work: confuses + and * with formula notation lm6<- lm(sbp~dbp+bmi+(snp3=="TC")+2*(snp3=="TT"), data=bpdata) # I() insulates the arithmetic computations lm6<-lm(sbp~dbp+bmi+I( (snp3=="TC")+2*(snp3=="TT") ), data=bpdata) ## question 4 ## #additive glm1 <- glm(I(sbp>140)~n.minor, data=bpdata,family=binomial) confint.default(glm1) summary(glm1) round(exp(confint.default(glm1)),2) #dominant glm2 <- glm(I(sbp>140)~domvar, data=bpdata,family=binomial) summary(glm2) #recessive glm3 <- glm(I(sbp>140)~recvar, data=bpdata, family=binomial) summary(glm3) ##2df glm4<-glm(I(sbp>140)~snp3, data=bpdata,family=binomial) summary(glm4) # adjusted effect glm5<- glm(sbp~n.minor+dbp+bmi, data=bpdata, family=binomial) summary(lm5)