0

正確な時間ではない間隔でサンプリングされた値のdata.frameがあります。サンプルは、振幅と周期が不明な振動波を形成します。正確な時間ごとに値を見積もりたいと思います。

      hours value
60 63.06667 22657
61 64.00000 21535
62 64.93333 20797
63 65.86667 20687
64 66.80000 20129
65 67.73333 19671
66 68.66667 19066
67 69.60000 19534
68 70.53333 19994
69 71.46667 19575
70 72.40000 21466

RIでこのデータセットに曲線を適合させ、指定されたポイント(63,64,65,66 ...)でサンプリングする方法はありますか?私は知ってspline()いますが、「時間」の正確な整数値を取得する方法がわかりません。

編集:明確にするために、これは私が欲しい結果のデータフレームです('value'のダミーエントリを含む)

   hours value
63.00000 22800
64.00000 21535
65.00000 20780
66.00000 20500
67.00000 20011
68.00000 ...
69.00000 ...
70.00000 ...
71.00000 ...
72.00000 ...
73.00000 ...

データを再作成するコード:

structure(list(hours = c(63.06666647, 63.9999998, 64.93333313, 
65.86666646, 66.79999979, 67.73333312, 68.66666645, 69.59999978, 
70.53333311, 71.46666644, 72.39999977), value = c(22657L, 21535L, 
20797L, 20687L, 20129L, 19671L, 19066L, 19534L, 19994L, 19575L, 
21466L)), .Names = c("hours", "value"), row.names = 60:70, class = "data.frame")
4

2 に答える 2

1

ショーンの答えを使用しますが、splinefunツールを使用して独自の補間関数を作成します。時間値のベクトルに対してこのように作成された関数を実行して、それらの正確な値で補間された値を計算します。このページに示されている例?splinefunは非常に明確です。

于 2012-05-01T20:05:10.460 に答える
0

スプラインフィットを使用した簡単なアプローチは次のとおりです。

D <- structure(list(hours = c(63.06666647, 63.9999998, 64.93333313, 
65.86666646, 66.79999979, 67.73333312, 68.66666645, 69.59999978, 
70.53333311, 71.46666644, 72.39999977), value = c(22657L, 21535L, 
20797L, 20687L, 20129L, 19671L, 19066L, 19534L, 19994L, 19575L, 
21466L)), .Names = c("hours", "value"), row.names = 60:70, class = "data.frame")

sm <- smooth.spline(D$hours, D$value, spar = 0.5)

sparまたはあなたが好むどんな平滑化係数でも

plot(D$hours, D$value)
lines(sm, col = "red")

平滑スプラインから、各時間の近似y値にアクセスできます。

sm$y
[1] 22421.54 21682.93 21023.05 20469.70 19998.72 19634.10 19448.09 19506.52 19783.97
[10] 20251.24 20891.14
于 2012-05-01T17:49:09.247 に答える