データによって与えられる非線形関数の導関数を計算する簡単な方法はありますか?
例えば:
x = 1 / c(1000:1)
y = x^-1.5
ycs = cumsum(y)
plot (x, ycs, log="xy")
'x' と 'ycs' で与えられる関数から微分関数を計算するにはどうすればよいですか?
データによって与えられる非線形関数の導関数を計算する簡単な方法はありますか?
例えば:
x = 1 / c(1000:1)
y = x^-1.5
ycs = cumsum(y)
plot (x, ycs, log="xy")
'x' と 'ycs' で与えられる関数から微分関数を計算するにはどうすればよいですか?
また、平滑化されたスプライン フィットとそれに続く導関数の予測の例を提案するつもりでした。この場合、結果は @dbaupp によって記述された diff 計算に非常に似ています。
spl <- smooth.spline(x, y=ycs)
pred <- predict(spl)
plot (x, ycs, log="xy")
lines(pred, col=2)
ycs.prime <- diff(ycs)/diff(x)
pred.prime <- predict(spl, deriv=1)
plot(ycs.prime)
lines(pred.prime$y, col=2)
十分に注意しない限り、生データから派生物を生成するのは危険です。このプロセスは「エラー乗数」として知られています。データのノイズの内容を把握しており、微分前にノイズを除去するためのアクション (スプラインなど) を実行しない限り、恐ろしい曲線になってしまう可能性があります。
関数の導関数は dy/dx であり、これは Δy/Δx、つまり「x の変化に対する y の変化」で近似できます。これは R で次のように記述できます。
ycs.prime <- diff(ycs)/diff(x)
ycs.prime
となり、各 で関数の導関数の近似値が含まれます。x
ただし、これは長さ 999 のベクトルであるため、解析やプロットを行うときは短縮するx
(つまり、x[1:999]
またはを使用する) 必要があります。x[2:1000]