nlxb
fitting()関数がpredict()関数で機能しない理由を理解できなかったので、この質問をしています。私はこの問題を解決するために周りを見ていないが、これまでのところ、運されています:(nlmrtパッケージからnlxbで予測できますか?
私はグループのデータにdplyr
を使用してnlmrt
パッケージからnlxb
を使用して、各グループに合わせてdo
を使用しています。
ここ
は私の試みです
set.seed(12345)
set =rep(rep(c("1","2","3","4"),each=21),times=1)
time=rep(c(10,seq(100,900,100),seq(1000,10000,1000),20000),times=1)
value <- replicate(1,c(replicate(4,sort(10^runif(21,-6,-3),decreasing=FALSE))))
data_rep <- data.frame(time, value,set)
> head(data_rep)
# time value set
#1 10 1.007882e-06 1
#2 100 1.269423e-06 1
#3 200 2.864973e-06 1
#4 300 3.155843e-06 1
#5 400 3.442633e-06 1
#6 500 9.446831e-06 1
* * * *
library(dplyr)
library(nlmrt)
d_step <- 1
f <- 1e9
d <- 32
formula = value~Ps*(1-exp(-2*f*time*exp(-d)))*1/(sqrt(2*pi*sigma))*exp(-(d-d_ave)^2/(2*sigma))*d_step
dffit = data_rep %>% group_by(set) %>%
do(fit = nlxb(formula ,
data = .,
start=c(d_ave=44,sigma=12,Ps=0.5),
control=nls.lm.control(maxiter = 100),
trace=TRUE))
------------------------------------------- -------------
最終的に2つのポイントがあります。
1)まず、各グループのフィッティング係数をdffit
パイプラインに引き継ぐ方法。
2)新しいx値に基づいて予測を行う。例えば
range <- data.frame(x=seq(1e-5,20000,length.out=10000))
は私がnlxb
とソリューションを好むだろうnls
r-minpack-lmnls-lm-failed-with-good-resultsに比べてスムーズに作業しているnlxb
ので(フィット、data.frame(X =レンジ)
Error in UseMethod("predict") :
no applicable method for 'predict' applied to an object of class "nlmrt"
を予測する。しかし、あなたが持っている場合よりよい解決策をお知らせください。
お気軽にお問い合わせください。私は 'wrapnls'を確認した後であなたに知らせます。 – Alexander
'wrapnls'をチェックしましたが、フィッティングが収束せず、特異な勾配エラーが発生しました。あなたは私の最新の投稿を見ましたか?[nls-nlxb-and-wrapnls](http://stackoverflow.com/questions/37133471/failed-to-do-fitting- nls-nlxb-and-wrapnlsを使用したいくつかの試み) – Alexander