我试图预测适合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)
我的问题是,它总是只会导致拟合值,而不会预测新值。
我知道这里已经存在这样的问题了,但它从来没有得到回答,所以它有效。
非常感谢你的帮助!