Tôi đã có cùng một câu hỏi một chút trước đây. Đây là những gì tôi tìm thấy:
Fox và Weisberg đã viết một bài viết bổ sung tuyệt vời bằng cách sử dụng chức năng nls (cả có và không có tùy chọn tự khởi động được đề cập bởi Gavin). Nó có thể được tìm thấy ở đây:
http://socserv.mcmaster.ca/jfox/Books/Compmate/appcill/Appends-Nonlinear-Regression.pdf
Từ bài viết đó, cuối cùng tôi đã viết một hàm cho lớp của mình sử dụng khi khớp đường cong logistic với dữ liệu của chúng:
###Log fit - be sure to use quotes around the variable names in the call
log.fit <- function(dep, ind, yourdata){
#Self-starting...
y <- yourdata[, dep]
x <- yourdata[, ind]
log.ss <- nls(y ~ SSlogis(x, phi1, phi2, phi3))
#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(y ~ x, main = "Logistic Function", xlab=ind, ylab=dep)
lines(0:max(x), predict(log.ss, data.frame(x=0:max(x))), col="red")
r1 <- sum((x - mean(x))^2)
r2 <- sum(residuals(log.ss)^2)
r_sq <- (r1 - r2) / r1
out <- data.frame(cbind(c(C=C, a=A, k=K, R.value=sqrt(r_sq))))
names(out)[1] <- "Logistic Curve"
return(out)
}