library(Hmisc,T) library(Design,T) attach(support[support$totcst > 0 | is.na(support$totcst), ]) length(age) describe(totcst) s <- summary(totcst ~ age + sex + dzgroup + race + meanbp, fun=function(y)c(Mean=mean(y), Median=median(y))) plot(s, which=1:2, pch=1:2) s options(digits=2,width=70) s spear <- spearman2(totcst ~ age + sex + dzgroup + num.co + scoma + race + meanbp + pafi + alb, p=2) plot(spear) table(race) plot(varclus(~age+sex+dzgroup+ num.co+scoma+race+meanbp+ hrt+temp+pafi+alb)) names(support) resize() names(support) nac <- naclus(support[,c(1,3,7,9,12,14, 17,18,20,22:24)]) plot(nac) naplot(nac) library(rpart) f <- rpart(is.na(pafi) ~ age + sex + dzgroup + num.co + scoma + race + meanbp + hrt + temp) plot(f);text(f) race <- impute(race) alb <- impute(alb, 3.5) pafi <- impute(pafi, 333.3) table(race) race <- combine.levels(race,minlev=.1) table(race) dd <- datadist(support) dd <- datadist(dd, race) options(datadist='dd') find(race) f <- ols(totcst ~ rcs(age,3)+sex+ dzgroup+pol(num.co,2)+pol(scoma,2)+ race + rcs(meanbp,4)+rcs(hrt,4)+ rcs(temp,5)+rcs(alb,5)+rcs(pafi,3)) qqnorm(resid(f));qqline(resid(f)) xYplot(resid(f) ~ fitted(f), method='quantile') f$stats totcst <- ifelse(is.na(totcst), exp(.25501+.924418*log(charges)), totcst) f_update(f) f$stats plot(log(charges),log(totcst)) f <- update(f,log(totcst)~.) qqnorm(resid(f));qqline(resid(f)) xYplot(resid(f) ~ fitted(f), method='quantile') g <- areg.boot(totcst ~ dzgroup+ meanbp + temp + alb + pafi, B=20) plot(g) abline(h=0) qqnorm(resid(f));qqline(resid(f)) xYplot(resid(f) ~ fitted(f), method='quantile') abline(h=0) ?xYplot xYplot(resid(f) ~ fitted(f), method='quantile', nx=100) f$stats page(f) an <- anova(f) page(an) options(width=100) page(an) args(print.anova.Design) print(an,'subscripts') coef(f) plot(an) args(plot.anova.Design) ?anova.Design plot(an,'partial') plot(an,'proportion') bwplot(dzgroup ~ resid(f)) par(mfrow=c(3,4)) plot(f, ref.zero=T, ylim=c(-1.5,.7)) dev.off() plot(f, age=NA) scat1d(age) plot(f, age=NA, sex=NA, conf.int=F) specs(f,long=T) plot(f,meanbp=NA,age=NA) plot(f,meanbp=NA,age=NA, method='image') Legend() p <- plot(f,meanbp=NA,age=NA, method='image') Legend(p) f <- update(f,x=T,y=T) validate(f,B=100) cal <- calibrate(f,B=100) page(f) plot(cal) s <- summary(f,antilog=T) plot(s, log=T) nomogram(f, fun= function(x)exp(x)/1000, funlabel='Cost ($/1000)') #summary(f, age=c(40,60)) nomogram(f, fun= function(x)exp(x)/1000, funlabel='Cost ($/1000)', cex.var=.6, cex.axis=.5) g <- Function(f) page(g) page(g) w <- latex(f,fi='/windows/temp/fit.tex') args(g) g() g(age=30) g(age=40) g(age=c(30,40,50)) options(digits=4) g(age=c(30,40,50)) g(age=c(30,40,50,80)) g(age=c(30,40,50,80),sex='female') sascode(g) names(f) dim(f$x) page(f$x[1:5,]) # f$x <- f$y <- NULL # f <- update(f, x=T,y=T) page(val) f$stats gamma.hat <- (677.8-31)/677.8 gamma.hat 31/983 1/15 search() objects(1) page(an) options(width=90) page(an) formula(f) page(an) plot(an) objects() resize() objects() v <- Cs(pclass, survived, age, sex, sibsp, parch) v dd <- datadist(titanic3[,v]) options(datadist='dd') attach(titanic3[,v]) masked() plot(age, survived, group=interaction(pclass, sex), col=1:6, datadensity=T) plsmo(age, survived, group=interaction(pclass, sex), col=1:6, datadensity=T) f1 <- lrm(survived ~ sex*pclass*rcs(age,5)+ rcs(age,5)*(sibsp + parch)) f <- lrm(survived ~ (sex + pclass + rcs(age,5))^2 + rcs(age,5)*sibsp) page(f) plot(f, age=NA, pclass=NA, sex='male', fun=plogis) plot(f, age=NA, pclass=NA, sex='male', fun=plogis, conf.int=F) plot(f, age=NA, pclass=NA, sex='female', fun=plogis, conf.int=F) an <- anova(f) page(an) plot(an) f$stats (554.9 - 26)/554.9 f <- update(f, x=T, y=T) validate(f, B=15) find(rpart) who.na <- rpart(is.na(age) ~ sex + pclass + survived + sibsp + parch, minbucket=15) plot(who.na); text(who.na) m <- lrm(is.na(age) ~ sex*pclass+survived+sibsp+parch) plot(anova(m)) set.seed(17) xtrams <- transcan(~I(age) + sex + pclass + sibsp + parch + xtrans <- transcan(~I(age) + sex + pclass + sibsp + parch + survived, n.impute=5, trantab=T, imputed=T, transformed=F) attr(xtrans,'imputed')$age[1:10,] f.mi <- fit.mult.impute(survived ~ (sex + pclass + rcs(age,5))^2 + rcs(age,5)*sibsp, lrm, xtrans) page(f.mi) an <- anova(f.mi) page(an) page(f.mi) combos <- expand.grid(age=c(2,21,50),sex=levels(sex), pclass=levels(pclass), sibsp=0) dim(combos) data.frame(combos, predict(f.mi, combos, type='fitted')) data.frame(combos, phat=predict(f.mi, combos, type='fitted')) ?predict.lrm pred.logit <- Function(f.mi) plogis(pred.logit(age=c(2,21,50),sex='male',pclass='3rd')) args(pred.logit) nomogram(f.mi, fun=plogis, funlabel='Prob(survive)') drep <- dataRep(~ roundN(age,10)+sex+pclass+roundN(sibsp, clip=0:1)) page(drep) Dialog(fitPar('f.mi', lp=F, fun=list('Prob[Survival]'=plogis)), limits='data', basename='Titanic', vary=list(sex=c('female','male')), datarep=drep) page(CallBack.Titanic) runmenu.Titanic() lrm(cut2(totcst,g=2) ~ dzgroup, data=support)$stats lrm(cut2(totcst,g=3) ~ dzgroup, data=support)$stats lrm(cut2(totcst,g=4) ~ dzgroup, data=support)$stats lrm(cut2(totcst,g=5) ~ dzgroup, data=support)$stats lrm(cut2(totcst,g=6) ~ dzgroup, data=support)$stats lrm(cut2(totcst,g=7) ~ dzgroup, data=support)$stats lrm(cut2(totcst,g=10) ~ dzgroup, data=support)$stats lrm(cut2(totcst,g=100) ~ dzgroup, data=support)$stats g <- areg.boot(totcst ~ dzgroup + meanbp, B=30, data=support) plot(g) page(g) page(summary(g)) h <- Function(g) names(h) page(h$totcst) plot(h$totcst(support$totcst), log(support$totcst)) ?summary.areg.boot summary(g, statistic='mean') search() detach(3) detach(2) search() objects() rm(alb,pafi,race) acute <- support$dzclass %in% c('ARF/MOSF','Coma') table(acute) ecdf(support[acute,c(1,12,14,18,19:31,35)], group=support$dzclass, col=c(1,.35), label.curves=F, subtitles=F) ecdf(support[acute,c(1,12,14,18,19:31,35)], group=support$dzclass[acute], col=c(1,.35), label.curves=F, subtitles=F) dd <- datadist(support[acute,]) options(datadist='dd') attach(support[acute,]) length(age) years <- d.time/365.25 units(years) <- 'Year' S <- Surv(years, death) dim(S) S[1:10,] class(S) names(attributes(S)) attr(S,'type') ?Surv help(Surv) find(Surv) survplot(survfit(S ~ dzgroup), conf='none') survplot(survfit(S ~ dzgroup), conf='none',fun=qnorm, logt=T) f <- psm(S ~ dzgroup + rcs(age,5) + rcs(meanbp,5), dist='gauss', y=T) r <- resid(f) survplot(r) r[1:10] survplot(r, dzgroup, label.curve=F) survplot(r, age, label.curve=F) survplot(r, meanbp, label.curve=F) survplot(r, runif(length(age)), label.curve=F) shortest.follow.up <- min(d.time[death==0], na.rm=T) shortest.follow.up d.timet <- pmin(d.time, shortest.follow.up) ecdf(d.timet) w <- spearman2(d.timet ~ age+num.co+scoma+meanbp+ hrt+resp+temp+crea+sod+adlsc+wblc+pafi+ph+dzgroup+race, p=2) plot(w) args(nlme) wblc <- impute(wblc, 9) describe(wblc) pafi <- impute(pafi, 333.3) ph <- impute(ph, 7.4) race2 <- race levels(race2) <- list(white='white',other=levels(race)[-1]) table(race2) race2[is.na(race2)] <- 'white' dd <- datadist(dd, race2) f <- psm(S ~ rcs(age,3)+sex+dzgroup+pol(num.co,2)+ pol(scoma,2)+pol(adlsc,2)+race2+rcs(meanbp,5)+ rcs(hrt,3)+resp+rcs(temp,3)+rcs(crea,5)+sod+ rcs(wblc,3)+rcs(pafi,3), dist='gau') page(f) an <- anova(f) page(an) plot(an) s <- summary(f) page(s) options(width=100) page(s) plot(s) h <- Hazard(f) page(h) surv <- Survival(f) page(surv) w <- latex(f) g <- update(f, x=T, y=T) validate(g, B=10, dxy=T) f$stats (271.1 - 30)/271.1 cal <- calibrate(f, u=1, m=60, B=30) cal <- calibrate(g, u=1, m=60, B=30) Z <- predict(f) summary(Z) summary(exp(Z)) ?update a <- ols(Z ~ rcs(age,3)+sex+dzgroup+pol(num.co,2)+ pol(scoma,2)+pol(adlsc,2)+race2+rcs(meanbp,5)+ rcs(hrt,3)+resp+rcs(temp,3)+rcs(crea,5)+sod+ rcs(wblc,3)+rcs(pafi,3), sigma=1 ) page(a) fastbw(a, aics=10000) f.approx <- ols(Z ~ dzgroup+rcs(meanbp,5)+ rcs(crea,5)+pol(scoma,2)+rcs(age,3)+ rcs(hrt,3)+rcs(pafi,3)+pol(adlsc,2)+ pol(num.co,2), x=T) f.approx$stats expected.surv <- Mean(f) page(expected.surv) quantiles.surv <- Quantile(f) quantile.surv quantiles.surv median.surv <- function(x) quantiles.surv(lp=x) nomogram(f.approx, fun=list('Median Survival Time'=median.surv, 'Mean Survival Time'=expected.surv))