1

我正在尝试使用带有自启动选项 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 估计的参数,所以我迷路了。这就像函数外的冠军一样运行。

4

1 回答 1

1

我无法重现您提到的错误。我建议您更新到最新版本的 R 并确保您使用的任何软件包也是最新的。但是,您的代码中有两个错误:

与(您的数据,行(seq(0,max(ind),1),预测(log.ss,data.frame(ind = seq(0,max(ind),1)))))

p <- (你的数据$in t )

对于第二次更正,请确保您确实要计算 int 变量的经验方差。

于 2013-08-23T18:33:16.197 回答