簡體   English   中英

如何為 nls 模型預測給定 y 的 x?

[英]how to predict x given y for nls model?

我正在使用 R 中的 nls SSlogis 函數來制作一個模型來表示植物的吸水率,其中 y = 吸水率(g / m^2),x = 水中的分鍾數。 對於給定的 y 值(在本例中為最大吸水率),我想使用每個模型(我有幾個物種,每個物種都有一個單獨的模型)求解 x(我們達到峰值吸收的那一刻)。

我試過 uniroot() 函數,但我似乎做錯了:

mod1_roots <- uniroot(mod1, lower=0, upper=600, y=max_y_mod1)

其中 lower 和 upper 是分鍾的范圍,mod1 是有問題的 SSlogis 模型

錯誤信息是: Error in f(lower, ...): could not find function "f"

所以我假設我沒有正確使用“功能”部分,它應該是模型以外的東西。 啊。

任何人都可以幫助一個無知的植物學家嗎? 謝謝朋友!

編輯再現性(我希望):

這是一些真實的數據

absorption <- c(297.0470936,262.809483,323.8243166,296.6731868,313.5985664,283.1004567,259.8724386,228.8903642,197.1585476,230.1674857,182.5799195,148.0262402,134.087096,77.98206413)

minutes <- c(195,181,167,157,147,135,105,83,63,45,33,24,10)

cembra <- as.data.frame(cbind(absorption,minutes))

cembra_mod <- nls(absorption ~ SSlogis(minutes, Asym, xmid, scal), cembra)

我的目標是預測吸收 = 100(或任何指定數字)的分鍾數。 謝謝!!

發布到 SO 時,請提供一個完整的自包含可重現示例,其他人可以運行該示例來重現該問題。 這次我們會為大家提供一個可復現的例子來展示它是如何實現的。 下面的ChickWeight帶有 R。這顯示了如何找到對應於 200 的weightTime ,假設該值在輸入Time值的范圍內。 輸出中的目標為零這一事實表明它有效。

Chick.1 <- ChickWeight[ChickWeight$Chick == 1, ]
fm <- nls(weight ~ SSlogis(Time, Asym, xmid, scal), Chick.1)
pred <- function(x) predict(fm, list(Time = x))
optimize(function(x) (pred(x) - 200)^2, range(Chick.1$Time))

給予:

$minimum
[1] 20.34701

$objective
[1] 2.498361e-08
attr(,"gradient")
          Asym      xmid     scal
[1,] 0.2134402 -13.79298 17.99035

暫無
暫無

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

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