用R中的预测nls外推拟合曲线

时间:2018-01-08 11:46:05

标签: r predict nls extrapolation

我试图预测适合R的nls 我的值是强度(y)和激发能量(x)。我的代码如下:

mydata<-read.delim("TrapDepthExcSpec.txt", 
               header = TRUE)

x <- mydata[1:5,1] 
y <- mydata[1:5,2] 

plot(x,y)

k <- 65
Et <- 2.16
m0 <-0.7
test <- k*((x-Et)^(3/2))/(x*((x-(Et*(1-(m0/0.79))))^2))
lines(x,test)

EtFit <- function(x, k, Et, m0) k*((x-Et)^(3/2))/(x*((x-(Et*(1- (m0/0.79))))^2))

FitEt <- nls(y~EtFit(x, k, Et, m0), 
        start = list(k = 65, Et = 2.16, m0 = 0.7), 
        control = list(maxiter = 500),
        algorithm = "port")

res <- coef(FitEt)
RES <- res[1]*((x-res[2])^(3/2))/(x*((x-(res[2]*(1-(res[3]/0.79))))^2))
lines(x,RES,col="red")

xall=mydata[,1]; yall=mydata[,2]
plot(xall,yall, col = "gray48", pch = 20)
lines(x,RES,col="red")

### predict nls ###

NewData <- as.matrix(cbind(x, RES))
colnames <- (NewData)
colnames(NewData) <- c("x", "y")

predict(FitEt, NewData, se.fit = TRUE, scale = NULL, df = Inf, interval =    c("none", "confidence", "prediction"), level = 0.95)

我的问题是,它总是只会导致拟合值,而不会预测新值。

我知道这里已经存在这样的问题了,但它从来没有得到回答,所以它有效。

非常感谢你的帮助!

0 个答案:

没有答案