0

これは簡単だと思っていましたが、本当に難しいです。Excel や R など、何でも使用できます。これらの曲線がいつ特定の値を通過するかを知る必要があるだけです。

グラフに余分な行を追加して、交差関数があるかどうかを確認しようとしましたが、ありませんでした。

Years    Y
10      0
20      0
50      5.54
100     21.81
200     46.24
500     71.96
1000    84.74
1500    89.63
2000    91.94

この曲線が 90 と交差する場所を知る必要があります

Years   Y
10      1
20      0.96
50      0.28
100     0
200     0
500     0
1000    0
1500    0
2000    0

この曲線が 0.01 と交差する場所を知る必要があります

役立つ場合に備えて編集します(OPからではありません):

SO19006597 質問例

4

3 に答える 3

2

逆モデル $x = f (y)$ を設定することが適切な場合、たとえばYears ~ Y、それを構築して評価することができます。(ただし、逆モデリングの結果について考えてみてください。)

  • 線形近似については、 をご覧ください?approx
  • 特定のタイプのモデルが必要な場合は、逆モデルを要求した依存関係に設定できるかもしれません ?predict

これは、最初のデータセットの従来のモデリングと逆モデリングの違いの例です ( を使用loess):

クラシック:
古典的なモデル

逆:
逆モデル

逆モデルは、年の誤差 >> Y の誤差を想定しているため、Y = 90 の線は、モデル適合の 95% 信頼区間を約 1 で横切ります。逆モデルの年 = 1375 年と 1900 年。古典的なモデルでは、Y の誤差が支配的であると想定されます。その場合、ca を超えるすべての年。800 は当てはめの 95% 信頼区間内にあり、信頼区間は Y = 90 線にすでにほぼ接しており、Years = 350 あたりで初めてです。
点推定値も異なることに注意してください。1435 であるのに対し、逆フィットは 1635 で交差しています。

(もちろん、より制限的なモデルを使用することもできます)

于 2013-09-25T14:34:44.907 に答える
1

最初に行う必要があるのは、曲線をデータに適合させる方法を決定することです。これを行うには多くの方法があり、明らかに答えはあなたの選択によって異なります。「曲線」が単純に線形補間 (つまり、「点をつなぐ」) を意味する場合、次のような関数は、しきい値を最初に超えた時間を検出します。

findCross<-function(years, y, value){
  over <- y > value
  w <- which(over != over[1])[1]
  frac <- (value - y[w-1]) / (y[w] - y[w-1])
  years[w-1] + (years[w] - years[w-1]) * frac
}
于 2013-09-25T14:17:10.350 に答える
1

データと目的に最適な線形、多項式、または非線形のいずれかを使用してデータを適合させます。次に、作成したフィット関数を使用して実行します

uniroot(fit_fun-90,upperbound,lowerbound)

編集者 Thomas のコメント:Rなどのフィッティング ツールの結果には、フィッティング関数のすべての項の係数が含まれますlmnlsたとえば、単純な線形フィットの場合、勾配と切片が提供されます。この情報を使用して、新しい を作成しますfit_fun<-function(x) {intercept + slope*x}

減算する理由は、「ルート」、つまりゼロ値90を探すためです。そのため、基本的に関数にオフセットを適用しました。uniroot詳細については、を参照?unirootしてください。

于 2013-09-25T14:23:13.673 に答える