0

我正在尝试预测适合 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)

我的问题是它总是只产生拟合值而不预测新值。

我知道这里已经有一个这样的问题,但它从来没有得到回答,所以它起作用了。

非常感谢您的帮助!

4

0 回答 0