0

私は R の比較的初心者であり、数学者ではなく遺伝学者です。複数のデータポイントのペアのセットが多数あります。それらをプロットすると、ほとんどのデータ ポイントがゼロ マークの近くで終わる平坦な S 曲線が得られます。少数のデータ ポイントは遠く離れて飛んでおり、ほぼ 2 つの J 曲線 (1 つは下、もう 1 つは上) を作成しています。データが急激に上向きまたは下向きになる変曲点を見つける必要があります。これは私の数学の問題かもしれませんが、曲線を滑らかにして線に合わせて方程式を得ることができれば、曲線の2次導関数を取り、2次導関数が変化する変曲点を決定できるように思えますサイン。私はそれをExcelで試し、曲線を使用して近似フィットを得て開始式を取得しましたが、データには少し「揺れ」があります そのため、すべてを手動で行いたい場合でも、1 つの変曲点を特定することはできません (私はしません)。これら 2 つの変曲点を見つけなければならない何百ものデータ セットのそれぞれは、ほぼ同じ曲線を生成しますが、わずかに異なる変曲点を持ち、これらの変曲点を正確に決定することは、問題にとって絶対に重要です。したがって、それを行う必要がある方程式で一度適切に設定できれば。簡単にするために、それらを正の曲線と負の曲線に分けて、それぞれを別々に行いたいと思います。(たぶん、それを悪い考えにするs曲線の簡単な式がいくつかありますか?) これら 2 つの変曲点を見つけなければならない何百ものデータ セットのそれぞれは、ほぼ同じ曲線を生成しますが、わずかに異なる変曲点を持ち、これらの変曲点を正確に決定することは、問題にとって絶対に重要です。したがって、それを行う必要がある方程式で一度適切に設定できれば。簡単にするために、それらを正の曲線と負の曲線に分けて、それぞれを別々に行いたいと思います。(たぶん、それを悪い考えにするs曲線の簡単な式がいくつかありますか?) これら 2 つの変曲点を見つけなければならない何百ものデータ セットのそれぞれは、ほぼ同じ曲線を生成しますが、わずかに異なる変曲点を持ち、これらの変曲点を正確に決定することは、問題にとって絶対に重要です。したがって、それを行う必要がある方程式で一度適切に設定できれば。簡単にするために、それらを正の曲線と負の曲線に分けて、それぞれを別々に行いたいと思います。(たぶん、それを悪い考えにするs曲線の簡単な式がいくつかありますか?)

マニュアルを読んでみましたが、数学が苦手なせいかわかりにくいです。また、研究できる同様の例を見つけることができませんでした。

これは私のデータセットの先頭です: xy [1,] 1 0.00000000 [2,] 2 0.00062360 [3,] 3 0.00079720 [4,] 4 0.00085100 [5,] 5 0.00129020

(X は 1 から多くのデータ ポイントに番号を付けているだけであり、X の数は個々のセットによって少し異なります。)

これは、カーブフィッティング部分を解決するために得た限りです。

pos_curve1 <- nls(curve_fitting ~ (scal*x^scal),data = cbind.data.frame(curve_fitting), + start = list(x = 0, scal = -0.01)) numericDeriv(form[[3L] のエラー], names(ind), env) : モデルの評価時に欠損値または無限大が生成されました。さらに: 警告メッセージ: 1: in min(x) : min に欠損していない引数はありません。Inf 2 を返します: in max(x) : max に欠落していない引数はありません。-Inf を返す

私は数学を難しい方法でやっているだけですか?私はnlsで何が間違っていますか? どんな助けでも大歓迎です。

4

1 に答える 1

0

それを見つけた。曲線はJではなく指数関数的であり、次のように機能しました。

fit <- nls(pos ~ a*tmin^b, 
             data = d, 
             start = list(a = .1, b = .1), 
             trace = TRUE)

2009 年 10 月 26 日 R Help の Jorge I Velez に感謝

また、John Fox と Sanford Weisberg による「An R Companion to Applied Regression の付録、第 2 版」、最終リビジョン 13: Dec 2010 を使用しました。

私にとっての最終的な作業設定は次のとおりです。

フィット <- nls(y ~ a*log(10)^(x*b),pos_curve2,list(a = .01, b = .01), trace=TRUE)

私は、オープン オフィス スプレッド シートを使用して、指数関数が最適であることを示すことができるまで、さまざまな曲線近似オプションをテストすることで、式がどうあるべきかを考え出しました。私はそれから方程式の構造を得ました。Fox & Sanford の記事を使用して、パラメーターの設定方法を理解しました。

これは私だけではないかもしれませんが、パラメーターを理解するのは本当に難しく、参考になる参照や質問はほとんどありませんでした。

于 2013-01-27T15:53:59.583 に答える