2012-05-01 8 views
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 

私は、このデータセットへのカーブにフィットして、自分の与えられた点(63,64,65,66 ...)でそれをサンプリングすることができますRに方法はありますか?私はspline()を知っていますが、それが私に「時間」の正確な整数値を与える方法を知らない。

編集:明確にするために、これは私が(「値」のダミーエントリを)持っていたいたデータフレームである

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") 

答えて

1

作業により、滑らかなスプラインから各時間のフィットy値にアクセスしますが、独自の補間関数を作成するためのsplinefunツールを使用することができます。このようにして作成した関数を時間値のベクトル上で実行し、それらの正確な値で補間値を計算します。 ?splinefunページの例はかなり明確です。

+0

自分自身についてのコメント:-) - 正弦関数のセット(データが周期的であると言ったかどうか)に興味を持ったら、コーネルのeureqaアプリケーションを見てみましょう。 (Rの機能ではなく、スタンドアロンのアプリケーションです) –

+0

ありがとうございます。私は最後に となりました。my.function < - splinefun(D $ hours、D $ value) my.function(63:73) – Ina

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) 

または任意のあなたは、p sparのための要因を平滑化

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

を参照してくださいあなたはショーンの答えを

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 
+0

残念ながら、これは単に私に滑らかな線を与えます。 sm $ xと入力すると、正確に65.00 ...または66.00で値がないことがわかります。これが私の必要条件です。 – Ina

関連する問題