6

y=a^(b^x)以下のデータに合わせて使用​​したいのですが、

y <- c(1.0385, 1.0195, 1.0176, 1.0100, 1.0090, 1.0079, 1.0068, 1.0099, 1.0038)
x <- c(3,4,5,6,7,8,9,10,11)
data <- data.frame(x,y)

非線形最小二乗法を使用すると、

f <- function(x,a,b) {a^(b^x)}
(m <- nls(y ~ f(x,a,b), data = data, start = c(a=1, b=0.5)))

エラーが発生します:初期パラメーター推定値での特異勾配行列。結果はおおよそ a = 1.1466、b = 0.6415 であり、a=1、b=0.5 と定義しているため、最初のパラメーター推定値に問題はないはずです。

他のトピックで、曲線を変更すると便利であると読みました。みたいなことを考えていたのですlog y=log a *(b^x)が、関数指定の扱いがわかりません。何か案が?

4

1 に答える 1

7

コメントを回答に展開します。

以下を使用する場合:

y <- c(1.0385, 1.0195, 1.0176, 1.0100, 1.0090, 1.0079, 1.0068, 1.0099, 1.0038)
x <- c(3,4,5,6,7,8,9,10,11)
data <- data.frame(x,y)

f <- function(x,a,b) {a^b^x}

(m <- nls(y ~ f(x,a,b), data = data, start = c(a=0.9, b=0.6)))

また

(m <- nls(y ~ f(x,a,b), data = data, start = c(a=1.2, b=0.4)))

私は得る:

Nonlinear regression model
  model: y ~ f(x, a, b)
   data: data
     a      b 
1.0934 0.7242 
 residual sum-of-squares: 0.0001006

Number of iterations to convergence: 10 
Achieved convergence tolerance: 3.301e-06

1の開始値としてを使用すると、常にエラーが発生a1ます1

開始値の自動生成に関しては、それを行う手順に慣れていません。私が読んだ 1 つの方法は、曲線をシミュレートし、データを近似しているように見える曲線を生成する開始値を使用することです。

次のコードを使用して、上記のパラメーター推定値を使用して生成されたプロットを次に示します。行の右下部分がもう少しうまく収まる可能性があることは認めます。

setwd('c:/users/mmiller21/simple R programs/')

jpeg(filename = "nlr.plot.jpeg")

plot(x,y) 
curve(1.0934^(0.7242^x), from=0, to=11, add=TRUE)

dev.off()

ここに画像の説明を入力

于 2014-02-17T00:59:45.553 に答える