0

いくつかのコミュニティデータで一般化最小二乗回帰のパラメーターを推定しようとしています。あるデータセットに対してこれを正常に実行しましたが、同じ手法を使用して別のグループのパラメーターを推定しようとすると、次のエラーメッセージが表示されます。

Error in gnls(SF ~ a * Site_Code^b, data = data, weights = varPower(form = ~Site_Code),  : 
  Step halving factor reduced below minimum in NLS step

他の人も同じ問題を抱えていることに気づきました。提案された解決策の1つは、gnlsControlを使用してnlsTolを0.001(デフォルト)ではなく0.1に設定することですが、これを行うと、同じ問題が発生します。私のデータは次のようになります。

Site_Code   SF
5   3
5   0
5   2
5   0
5   0
5   0
5   2
5   0
5   0
5   0
5   0
5   3
1   0
1   1
1   29
1   15
1   7
1   0
1   10
1   12
1   55
2   0
2   5
2   0
2   0
2   3
2   24
2   49
2   17
2   1
3   4
3   48
3   7
3   1
3   31
3   0
3   0
3   1
4   8
4   16
4   29
4   0
4   1
4   2
4   1
4   7
4   3
7   2
7   0
7   0
7   0
7   0
7   0
7   2
7   1
7   0
7   1
7   0
7   0
8   1
8   2
8   1
8   2
8   0
8   0
8   3
8   0
8   2
6   0
6   6
6   0
6   0
6   0
6   0
6   0
6   0
6   0
6   2
6   0
6   3
4

1 に答える 1

1

私にとってはうまくいきました。あなたは開始値を与えなかったので、私はいくつかに目を向けました。たぶんあなたはより悪い開始値を持っていますか?

また、ここで問題が発生しているのも当然です。平均をフィッティングするために、2つのパラメーターと4つの独立したx値しかありません...分散推定でも同じです。

dat <- read.table("gnlsdat.txt",header=TRUE)
plot(SF~Site_Code,data=x)

library(nlme)
g0 <- gnls(SF ~ a * Site_Code^b, data = dat,
           weights = varPower(form = ~Site_Code),
           start=list(a=30,b=-0.5))

結果:

Generalized nonlinear least squares fit
  Model: SF ~ a * Site_Code^b 
  Data: dat 
  Log-likelihood: -130.3289

Coefficients:
        a         b 
19.319493 -1.152149 

Variance function:
 Structure: Power of variance covariate
 Formula: ~Site_Code 
 Parameter estimates:
    power 
-0.885528 
Degrees of freedom: 33 total; 31 residual
Residual standard error: 28.10023 

プロット:

plot(SF~Site_Code,data=x)
pframe <- data.frame(Site_Code=seq(1,5,length=41))
lines(pframe$Site_Code,predict(g0,newdata=pframe))

ここに画像の説明を入力してください

于 2012-05-09T02:23:23.013 に答える