Cách không đau nhất để phù hợp với đường cong tăng trưởng logistic trong R là gì?


19

Điều này không dễ với Google như một số điều khác, rõ ràng, tôi không nói về hồi quy logistic theo nghĩa sử dụng hồi quy để dự đoán các biến phân loại.

Tôi đang nói về việc phù hợp với một đường cong tăng trưởng logistic cho các điểm dữ liệu nhất định. Cụ thể, là một năm nhất định từ năm 1958 đến 2012 và là ppm CO2 toàn cầu ước tính (một phần triệu carbon dioxide) vào tháng 11 năm .xyx

Ngay bây giờ nó đang tăng tốc nhưng đôi khi nó phải chững lại. Vì vậy, tôi muốn một đường cong logistic.

Tôi chưa tìm thấy một cách tương đối đơn giản để làm điều này.


3
Đường cong logistic không phải là đường cong duy nhất 'tắt cấp'. Thật vậy, bội số của bất kỳ cdf liên tục sẽ đáp ứng yêu cầu đó.
Glen_b -Reinstate Monica

2
Sử dụng gói grofit Làm cho việc sử dụng đường cong spline và tăng trưởng.

Nick, cảm ơn bạn rất nhiều vì positng mã của bạn, tôi chỉ tự hỏi làm thế nào để viết nó như một phương trình? trong mã các giá trị C, a và K tham chiếu đến tham số nào?

1
Tôi nghĩ rằng bạn đang đưa tôi trở thành @ user2581681. Tôi chỉ chỉnh sửa câu trả lời của họ.
Nick Cox

Câu trả lời:


19

Xem nls()chức năng. Nó có một chức năng mô hình đường cong logistic tự bắt đầu thông qua SSlogis(). Ví dụ: từ ?nlstrang trợ giúp

> library("nls")
> DNase1 <- subset(DNase, Run == 1)
>      
> ## using a selfStart model
> fm1DNase1 <- nls(density ~ SSlogis(log(conc), Asym, xmid, scal), 
+                  DNase1)

Tôi đề nghị bạn đọc các trang trợ giúp cho các chức năng này và có thể là các tài liệu tham khảo được liên kết nếu có thể để tìm hiểu thêm.


9

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)
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.