2011-07-27 27 views
0

私はR/S /非線形回帰に関連する問題があり、私はRのプログラマーではないので、助けが必要です。R/Sの非線形回帰

私は2つの配列ttとtdを持っています。

私は、最小二乗の合計が非線形関数の最小になるようにa、b、cのパラメータを見つける必要がある:

td/tt - a * exp(b * tt) + c 

私はこれを行うにはどのようには考えています。私はnls()機能を試しました、nls2()ナッドは運がなかった...

ありがとうございます。

EDIT:

マイデータ:

td <-as.array(0.2, 0.4, 0.8, 1.5, 3); 

tt <-as.array(0.016, 0.036, 0.0777, 0.171, 0.294); 

以下の答えからの方法で、私は、ランダムなデータのために[OK]の値を取得しますが、私は戻っに欠落値または生産無限大を使用していたデータモデルメッセージを評価するとき。

すぐにデータを提供しないと申し訳ありません。

+2

質問は、あなたが私たちにあなたがしようとしているサンプルデータ、およびサンプルコードを与えればお答えしやすくなります。 –

+1

質問を編集して再現性があるようにしてください。ありがとうございます、そして、ようこそ。 http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –

答えて

4

あなたのデータ:。

n <- 100 
td <- runif(n) 
tt <- runif(n) 
data <- data.frame(td = td, tt = tt) 

Aは、(実際には、あなたはa、b、cはその後まで何であるかを知ることができませんここでは、それらを使用する機能

a <- 0.5 
b <- 2 
c <- 5 
y <- jitter(td/tt - a * exp(b * tt) + c) 

の結果を作りました答えを比較する)

フィッティング:。

nls(
    y ~ td/tt - a * exp(b * tt) + c, 
    data = data, 
    start = list(a = 1, b = 1, c = 1) 
) 

答え:

Nonlinear regression model 
    model: y ~ td/tt - a * exp(b * tt) + c 
    data: data 
    a  b  c 
0.4996 2.0008 4.9994 
residual sum-of-squares: 0.0001375 

Number of iterations to convergence: 7 
Achieved convergence tolerance: 1.604e-06 
+0

非常に、ありがとう! – Nemanja

+0

は、私は申し訳ありませんが、私はランダムデータで最初の3行を置き換えたら: のn < - 100 TD < - runif(N) TT < - runif(n)は私のデータと : TD < - as.array(0.2、0.4、0.8、1.5、3); tt <-as.array(0.016,0.036,0.0777,0.171,0.294); 私はnumericDerivにメッセージ エラー(フォーム[[3L]]、名前(IND)、ENV)を取得: 欠落値または私は間違っているつもりモデル を評価する際に発生する無限大の? – Nemanja

+2

3つのパラメータの非線形モデルを5つのデータポイントにフィットさせることは、常にバットの中で一種の痛みになるでしょう。あなたは良い出発価値が必要です。 –