1

minpack.lm で nls.lm 関数を使用して、非線形モデルを精神物理学実験のデータに適合させようとしています。

私は周りを検索しましたが、パッケージに関する多くの情報を見つけることができないため、基本的に nls.lm ヘルプ ページにある例の形式をコピーしました。残念ながら、私のスクリプトはまだ実行に失敗しており、R は次のエラーをスローしています。

Error in fn(par, ...) : 
unused argument (observed = c(0.1429, 0.2857, 0.375, 0.3846, 0.4667, 0.6154))

スクリプトは、モデルを当てはめたいデータが無関係であると考えているようですが、これは間違いです。

モデルに適合し、予備パラメーター (w) の値が 0.5403 になることを期待しています。

どんな助けでも大歓迎です。私は Matlab から R に移行しているので、コードがお粗末に見える場合は申し訳ありません。

これがスクリプトです。

  install.packages("pracma")
  require(pracma)
  install.packages("minpack.lm")
  require(minpack.lm)

  # Residual function, uses parameter w (e.g. .23) to predict accuracy error at a given ratio [e.g. 2:1]
  residFun=function(w,n) .5 * erfc( abs(n[,1]-n[,2])/ ((sqrt(2)*w) * sqrt( (n[,1]^2) + (n[,2]^2) ) ) )

  # example for residFun
  # calculates an error rate of 2.59%
  a=matrix(c(2,1),1,byrow=TRUE)
  residFun(.23,a)

  # Initial guess for parameter to be fitted (w)
  parStart=list(w=0.2)

  # Recorded accuracies in matrix, 1- gives errors to input into residFun
  # i.e. the y-values I want to fit the model
  Acc=1-(matrix(c(0.8571,0.7143,0.6250,0.6154,0.5333,0.3846),ncol=6))

  # Ratios (converted to proportions) used in testing
  # i.e. the points along the x-axis to fit the above data to
  Ratios=matrix(c(0.3,0.7,0.4,0.6,0.42,0.58,0.45,0.55,0.47,0.53,0.49,0.51),nrow=6,byrow=TRUE)

  # non-linear model fitting, attempting to calculate the value of w using the Levenberg-Marquardt nonlinear least-squares algorithm 
  output=nls.lm(par=parStart,fn=residFun,observed=Acc,n=Ratios)

  # Error message shown after running
  # Error in fn(par, ...) : 
  #   unused argument (observed = c(0.1429, 0.2857, 0.375, 0.3846, 0.4667, 0.6154))
4

1 に答える 1