[R] How to plot linear, cubic and quadratic fitting curve in a figure?

Frank Harrell f.harrell at vanderbilt.edu
Wed Jun 13 19:00:58 CEST 2012


See also the scripts in http://biostat.mc.vanderbilt.edu/BioMod

Frank
 
William Dunlap wrote
> 
> It is more direct to use predict() instead of reconstructing
> by hand the prediction expression from the formula given
> to lm().  E.g.,
> 
>   > x <- seq(1,6,by=1/4)
>   > y <- sin(x) + rnorm(length(x), 0, 1/4)
>   > plot(x, y)
>   > fits <- lapply(1:3, function(degree)lm(y~poly(x, deg=degree)))
>   > xpred <- pretty(x, n=50)
>   > predictions <- lapply(fits, predict, newdata=list(x=xpred))
>   > invisible(lapply(seq_along(fits), function(i)lines(xpred,
> predictions[[i]], col=i)))
> 
> If you change your fitting function, say to rq, or your formula, say to
> use a
> categorical variable or interaction, you don't have to change anything
> else,
> as the predict method for a model type takes care of the details.
> 
> Bill Dunlap
> Spotfire, TIBCO Software
> wdunlap tibco.com
> 
> 
>> -----Original Message-----
>> From: r-help-bounces@ [mailto:r-help-bounces@] On Behalf
>> Of Robert Baer
>> Sent: Wednesday, June 13, 2012 8:40 AM
>> To: Kristi Glover; R-help
>> Subject: Re: [R] How to plot linear, cubic and quadratic fitting curve in
>> a figure?
>> 
>> 
>> > dput(test)
>> structure(list(sp = c(4L, 5L, 9L, 12L, 14L), env = c(12L, 18L,
>> 20L, 17L, 15L)), .Names = c("sp", "env"), class = "data.frame", row.names
>> =
>> c(NA,
>> -5L))
>> > plot(test$sp~test$env, main = "S vs. temp", xlim=c(0,20), ylim=c(0,14),
>> > ylab="S",xlab="env")
>> > linear<-lm(test$sp~test$env)
>> > quadratic<-lm(test$sp~test$env+I(test$env^2))
>> > #summary(quadratic)
>> > cubic<-lm(test$sp~test$env+I(test$env^2)+I(test$env^3))
>> > #summary(cubic)
>> > #fitting curve
>> > abline(linear)
>> >
>> Thanks and waiting for your suggestions
>> 
>> sincerely,
>> Kristi Glover
>> 
>> Try adding the following lines of code
>> cq = coef(quadratic)
>> cc = coef(cubic)
>> newenv = seq(min(test$env), max(test$env), by = (max(test$env) -
>> min(test$env))/500)
>> sp.quad = cq[1] + cq[2]*newenv +cq[3]*newenv^2
>> lines(newenv,sp.quad, col='red')
>> 
>> sp.cubic = cc[1] + cc[2]*newenv +cc[3]*newenv^2 +cc[4]*newenv^3
>> lines(newenv, sp.cubic, col='blue', lty=2)
>> 
>> ------------------------------------------
>> Robert W. Baer, Ph.D.
>> Professor of Physiology
>> Kirksville College of Osteopathic Medicine
>> A. T. Still University of Health Sciences
>> 800 W. Jefferson St.
>> Kirksville, MO 63501
>> 660-626-2322
>> FAX 660-626-2965
>> 
>> ______________________________________________
>> R-help@ mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
> 
> ______________________________________________
> R-help@ mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
> 

-----
Frank Harrell
Department of Biostatistics, Vanderbilt University
--
View this message in context: http://r.789695.n4.nabble.com/How-to-plot-linear-cubic-and-quadratic-fitting-curve-in-a-figure-tp4633268p4633297.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list