我正在尝试使用带有自启动选项 ssLogis 的 nls 编写一个用于拟合逻辑曲线的函数。我有一些数据——实际上将作为一个数据框出现,所以这第一步实际上只是为了获得与我将要使用的数据类似的数据设置......
int <- c(.1, .2, .5, .8, 1.5, 2.5, 4.1, 6.1, 8.8, 13.8, 25.5, 29.2, 35, 37.9, 41.4)
yr2 <- 1:15
newdata <- data.frame(int, yr2)
因此,在 Fox 和 Weisberg 的帮助下,我编写的函数...
log.fit <- function(dep, ind, yourdata){
#Self-starting...
log.ss <- nls(dep ~ SSlogis(ind, phi1, phi2, phi3), data=yourdata)
#C
C <- summary(log.ss)$coef[1]
#a
A <- exp((summary(log.ss)$coef[2]) * (1/summary(log.ss)$coef[3]))
#k
K <- (1 / summary(log.ss)$coef[3])
plot(dep ~ ind, data=yourdata, main = "Logistic Function", xlab=ind, ylab=dep)
with(data, lines(seq(0, max(ind), 1), predict(log.ss, data.frame(ind=seq(0,max(ind),1)))))
p <- (yourdata$ind)
m <- mean(p)
r1 <- sum((p-m)^2)
r2 <- sum(residuals(log.ss)^2)
r_sq <- (r1-r2) / r1
R <- sqrt(r_sq)
return(c(C=C, a=A, k=K, R.value=R))
}
我什至无法摆脱困境,看看我的函数代码的其余部分是否正常......运行函数时出现错误:
log.fit(int, yr2, newdata)
然后,我收到此错误:
Error in SSlogis(ind, phi1, phi2, phi3) : object 'phi2' not found
phi2 是一个用 ssLogis 估计的参数,所以我迷路了。这就像函数外的冠军一样运行。