在lines()中使用predict()时究竟发生了什么?

时间:2014-03-20 08:36:13

标签: r line

当我进行线性建模时,我可以在lines()中使用predict()并获得很好的绘图。例如

Year <- 1:15
Sales <- c(301,320,372,423,500,608,721,826,978,1135,1315,1530,1800,2152,2491)
YearSales <- data.frame(Year,Sales)
logYearSales.fit <- lm(log(Sales)~Year)
plot(Year,log(Sales))
lines(Year,predict(logYearSales.fit),col="red",lwd=2)

然而,当我结合使用nls()和lines()时,会发生一些赔率,如下所示:

library(MASS)
survey1<-survey[!is.na(survey$Pulse)&!is.na(survey$Height),c("Pulse","Height")]
expn <- function(b0,b1,x){
            model.func <- b0 + b1*log(x)
            Z <- cbind(1,log(x))
            dimnames(Z) <- list(NULL, c("b0","b1"))
            attr(model.func,"gradient") <- Z
 model.func
}
survey1<-as.data.frame(survey1)
aa=nls(Height~expn(b0,b1,Pulse), data=survey1,start=c(b0=180,b1=2),trace=TRUE)
plot(survey1)
lines(survey1[,1],predict(aa),col="red",lwd=2)

你可以看到红色曲线太厚了,好像还有许多线条。但我无法理解这一点。

1 个答案:

答案 0 :(得分:2)

问题是Pulse值不符合规定。尝试

survey1 <- survey1[order(survey1$Pulse), ]

并重复。