On Mar 12, 2009, at 11:14 AM, Michael Denslow wrote:


Dear R help,

This seems to be a commonly asked question and I am able to run examples that have been proposed, but I can't seems to get this to work with my own data. Reproducible code is below. Thank you in advance for any help you can provide.

It is commonly asked ... and commonly answered.



The main problem is that I can not get the confidence lines to plot correctly. The secondary problem is that predict is not able to find my object when
I include a model object.

## THE DATA
wt.data <- data.frame(code = factor(LETTERS[1:24]),
area = c(60865,480,656792,92298,1200,1490,8202,4000,220,245,4000,390,325,
        16,162911,20235,68800,3389,7,696,4050,1498,1214,99460),
species = c(673,650,1353,1026,549,536,782,734,516,580,673,560,641,443,1105,
        871,789,575,216,407,942,655,582,1018))

# TRANSFORM AND ADD TO DATAFRAME
wt.data$logA <- log10(wt.data$area)
wt.data$logS <- log10(wt.data$species)

wt.mod <- lm(logS~logA, data = wt.data)

# PLOT THE DATA
with(wt.data,plot(logA,logS, ylim = c(2.3,3.2),xlim = c(0,6)))
abline(wt.mod, lwd = 2)


# create a prediction dataframe the same length as data
pred.frame <- data.frame(a = seq(0,6, length.out = 24))

# error ' object "logA" not found'

I suspect you omitted the actual call that produced this error. I suspect it was something along the lines of:
> predwt <- predict(wt.mod, newdata=pred.frame)
Error in eval(expr, envir, enclos) : object "logA" not found

# I am not sure why object is not found, I assume this has to do with
# the way I added the transformed variables to the dataframe

Because you didn't give the arguments the same name(s) as were used in the model formula.


pp <- predict(wt.mod, int = "p", newdata=pred.frame)

# runs ok?
pp <- predict(lm(wt.data$logS~wt.data$logA), int = "p", newdata=pred.frame)

# lines are jagged??

Lines? What lines? If predict does not find a newdata object that satisfies its requirements, it uses the original data.


# I am not sure how to get the lines to draw correctly here
matlines(pred.frame$a,pp, lty=c(1,2,2),col="black")

The x values are your sequence whereas the y values are in the sequence from the original data. They are not correctly associated with each other.

Try:
pp <- predict(lm(wt.data$logS~wt.data$logA), int = "p", newdata= data.frame(logA=seq(0,6, length.out = 24)) )
 plot(pp)

--
david winsemius

______________________________________________
R-help@r-project.org 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.

Reply via email to