2

を使用してパラメトリック関数を適合させましnlsたが、学習したパラメーターを代入して関数の式を出力したいと思います。例:

x <- runif(100, 0, 100)
m <- 13 * exp(-0.05 * x^2) + 0.1 + runif(100,0,0.1)
mod <- nls(m ~ a*exp(-b*x^2)+c, start=list(a=10,b=0.1,c=0.1))

次のように式と係数を抽出できます。

formula(mod)
# m ~ a * exp(-b * x^2) + c
coef(mod)
#           a           b           c 
# 13.00029360  0.04975388  0.14457936 

しかし、それらを直接置き換える方法がわかりません。私ができるように見える唯一のことは、式をもう一度書き出すことです。

substitute(m ~ a * exp(-b * x^2) + c, as.list(round(coef(mod), 4)))
# m ~ 13.0003 * exp(-0.0498 * x^2) + 0.1446

ここでの私の最終的な目標は、ディスク上の RDS ファイルから適合nlsオブジェクトを読み取り、その機能表現を組織モードドキュメントで示すことです。

4

1 に答える 1

4

これはあなたが探しているものですか?

do.call(substitute, args=list(formula(mod), as.list(round(coef(mod),4))))
# m ~ 13.0097 * exp(-0.0501 * x^2) + 0.1536

do.call最初に両方の引数を評価し、args次に を使用substitute()して係数を数式に代入するため、機能します。つまり、do.call()最終的に評価される式は、必要に応じて次のようになります。

as.call(list(substitute, formula(mod), as.list(round(coef(mod),4))))
# .Primitive("substitute")(m ~ a * exp(-b * x^2) + c, list(a = 13.0097, 
# b = 0.0501, c = 0.1536))
于 2013-04-16T17:42:43.440 に答える