簡體   English   中英

在R中以增量形式擬合指數衰減

[英]fit exponential decay in increase form in R

我想以指數衰減(或漸近曲線)的增加形式擬合函數,例如:

Richness = C*(1-exp(k*Abundance))  # k < 0

我已經在此頁面上閱讀了有關expn()函數的信息,但根本找不到它(或nls包)。 我發現的只是一個nlstools軟件包,但沒有expn() 我嘗試使用通常的nlsexp函數,但是我只得到了遞增的指數...

我想像下面那樣擬合圖形(用“ Paint”繪制),但我不知道曲線應該穩定在哪里(Richness = C)。 提前致謝。

漸近曲線

這應該使您入門。 閱讀有關nls(...)的文檔nls(...)在命令提示符下鍵入?nls )。 還查找?summary和? predict

set.seed(1)     # so the example is reproduceable
df <- data.frame(Abundance=sort(sample(1:70,30)))
df$Richness <- with(df, 20*(1-exp(-0.03*Abundance))+rnorm(30))  

fit <- nls(Richness ~ C*(1-exp(k*Abundance)),data=df, 
           algorithm="port",
           start=c(C=10,k=-1),lower=c(C=0,k=-Inf), upper=c(C=Inf,k=0))
summary(fit)
# Formula: Richness ~ C * (1 - exp(k * Abundance))
#
# Parameters:
#    Estimate Std. Error t value Pr(>|t|)    
# C 20.004173   0.726344   27.54  < 2e-16 ***
# k -0.030183   0.002334  -12.93  2.5e-13 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
# Residual standard error: 0.7942 on 28 degrees of freedom
#
# Algorithm "port", convergence message: relative convergence (4)

df$pred <- predict(fit)
plot(df$Abundance,df$Richness)
lines(df$Abundance,df$pred, col="blue",lty=2)

謝謝,jlhoward。 閱讀shujaa發送的鏈接后,我也有類似的事情。

R <- function(a, b, abT) a*(1 - exp(-b*abT))
form <- Richness ~ R(a,b,Abundance)
fit <- nls(form, data=d, start=list(a=20,b=0.01))
plot(d$Abundance,d$Richness, xlab="Abundance", ylab="Richness")
lines(d$Abundance, predict(fit,list(x=d$Abundance)))

不過,我已經通過反復試驗找到了初始值。 因此,您的解決方案看起來更好:)

編輯:結果:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM