私は非常に小さなデータセットを特徴付けるためにRで利用可能なさまざまなスプライン関数を試してきました。はるかに大きなデータセットでは、期待どおりの任意の数のカーブが動作すると思いますが、この場合のデータは限られています。以下のコードは、私が働いているデータの種類の例を示しています。これまでのところ小さなデータセット用のスプライン関数R
library(ggplot2); library(stats)
dat <- data.frame(x = c(0.333, 0.5, 1, 2, 3, 4, 5),
y = c(5.875e-03, 1.225e-02, 3.902e-02, 8.942e-03,
4.277e-03, 1.938e-03, 1.131e-03))
mod <- splinefun(dat$x, dat$y, method = "monoH.FC")
mod <- data.frame(x = seq(0.333, 5, by = 0.1), y = mod(seq(0.333, 5, by = 0.1)))
ggplot() + geom_point(data = dat, aes(x = x, y = y)) +
geom_line(data = mod, aes(x = x, y = y))
を、モノトーンエルミートスプラインは最高にフィットするものであるが、それはまだいくつかの問題を抱えています。
直観的に、私はここでどのような曲線が見えるべきかをあなたに教えてくれます。それはx = 1
に最大値を持つ必要があり、そのディップはx = 2.5
にあるべきではありません。再現するのが難しいような曲線は見えません。左のスキューと予測可能なテールが非対称です。
一般的なデータセットに、より適切にフィットするスプライン関数を生成するための「より良い」方法がありますか?小さなデータセットに曲線を当てはめるスプラインよりも良いツールがありますか?
dat2 = data.frame(x = union(dat$x,dat$x - c(0,diff(dat$x)/2)),
y = interp1(dat$x,dat$y,xi = union(dat$x,dat$x - c(0,diff(dat$x)/2))))
(interp1
することがあります何を後にしていることに-間、私はあなたが本当のポイントとして中間点を補間することによってそれを強制することができると思い線形ためにフィット近づけるようにすることですよう
'rms'パッケージをチェックしましたか?フィッティングカーブには使いやすい関数が満載です。 –