# November 22, 2005 Nonlinear fitting example ## airline data eg1 <- function() { yr <- seq(1949+1/24,by=1/12,length=96) airline <- scan("airline.dat") year <- yr-1949 airline.log <- log10(airline) air.eg <- data.frame(year,airline.log) attach(air.eg) plot(year, airline.log, pch=16, main="log airline passengers" ) air.st <- c(b1=2.0733, b2=.058117, b3=.1, b4=0) ans <- nls( airline.log ~ b1 + b2*year + b3*sin(2*pi*year+b4), data=air.eg, start=air.st, trace=T ) summary(ans) -> tmp; print(tmp); bb <- coef(tmp)[,1] xx <- seq(0,8,l=401) xx <- year yy <- bb[1] + bb[2]*xx + bb[3]*sin(2*pi*xx+bb[4]) lines(xx,yy,lwd=2,col=2); abline(bb[1:2],col=2,lwd=2,lty=2); browser() } # logistic regression eg2 <- function() { ua <- read.table("APPENC04.txt") good <- ifelse( ua$gpa > 3.0 ,1, 0 ); pairs( cbind(ua, good) ) poor <- ifelse( ua$gpa < 2.0 ,1, 0 ); pairs( cbind(ua, poor) ) a1 <- glm(formula = good ~ rank + act + class, family = gaussian, data = ua) a2 <- glm(formula = good ~ rank + act + class, family = binomial, data = ua) print(summary(a1)); print(anova(a1)) print(summary(a2)); print(anova(a2)) browser() } ## Poisson regression (book example) eg3 <- function() { lumber <- read.table("CH14TA14.txt", header=T ) pairs(lumber) ls.print(lsfit( scale(lumber[,-1]),scale(lumber[,1]))) a1 <- glm( num ~ . , data=lumber, family = poisson ) print(a1); print(summary(a1)); print(anova(a1)) browser() }