2017-06-26 22 views
1
library(nls2) 
# Investigate singular gradient. 
# Note that this cannot be done with nls since the singular gradient at 
# the initial conditions would stop it with an error. 
DF1 <- data.frame(y=1:9, one=rep(1,9)) 
xx <- nls2(y~(a+2*b)*one, DF1, start = c(a=1, b=1), algorithm = "brute-force") 
svd(xx$m$Rmat())[-2] 

nls2パッケージでは、非線形回帰の非線形最小二乗推定値が決まります。ドキュメンテーションでは、上記の例の1つでは、単一のグラデーションを調べていることに注意しています。私はxxがパラメータ推定を持たないnlsオブジェクトであることが分かります。これは、アルゴリズムが収束しなかったことを意味しますか?どうしてこれなの? svd(xx$m$Rmat())[-2]とは何ですか?R:非線形回帰の特異勾配を調べる

答えて

1

総当たりの概念はありません。これは、与えられた開始値で目的関数を評価し、特定の引数に応じてnlsオブジェクトを返すだけです。詳細は?nls2を参照してください。

通常、それは特異値を調査(nlsは、それらの上にチョークが、nls2ていないので)、または単に既知の値でnls目的関数を評価するために、NLSまたは他の最適化関数に入力するための出発値を取得するために使用されています。

質問に再現されたドキュメントの例は、nls2に1つの開始値を与えたので、その単一値で目的を評価して返しました。パラメータ推定値は、それが評価されたパラメータ値、すなわち開始値である。

> coef(xx) 
a b 
1 1 

xx$m$Rmat()問題が計算点で特異である場合、そのsinglar値ベクトルは、少なくとも1つのゼロを含むような行列です。 R関数svd(...)は、成分dが特異値のベクトルであり、uおよびvがvを固有ベクトルとする次の2つの成分であるリストを返す。私たちはここに興味がないので[ - 2]はそれを省略するために使われました。

この特定のケースでは、我々は第二の特異値がゼロであることがわかる。

s <- sv(xx$m$Rmat) 
s$d 
## [1] 6.708204 0.000000 

と固有ベクトルのみそのスカラー倍まで決定されているので、それは固有ベクトル

v2 <- s$v[, 2]; v2 
## [1] -0.8944272 0.4472136 

とに対応

v2/v2[2] 
## [1] -2 1 

これは歌の方向です。現在の評価時点での尺度。この場合、(1,1)の任意の倍数を(1,1)に加えることにより、(1,1)のRHSと同じ値のRHSを与えるので、その方向は明らかに特異である。この場合、RHSの線形性のために一般的な場合よりも簡単であるが、非線形目的関数については、接線空間に対して、すなわち極限的に無限に働く。