2016-10-03 2 views
0

私が持っているトラッキングデータに隠れマルコフモデルを適用したいと思います。私は、このモデルが機能するためには、定期的な時間間隔でデータをサンプリングする必要があることを読んだ。しかし、私のトラックは必ずしも正確に規則的ではありません。 Rでデータセットを正規化するにはどうすればよいですか?ここで隠しマルコフモデルのGPSデータに定期的な時間間隔を作成する方法

あなたは

tracks <- read.table(text = 
        "latitude, longitude time 
       52.111122, -10.544271 12:00 
       52.10944, -10.554933 13:00 
       52.108898, -10.558025 14:00 
       52.108871, -10.560946 15:01 
       52.113991, -10.582005 16:22 
       52.157223, -10.626506 17:00 
       52.194977, -10.652878 18:04 
       52.240215, -10.678817 19:09 
       52.26421, -10.720366 20:00 
       52.264015, -10.720642 21:05" 
       , header = TRUE, sep = ",") 

おかげapprox

答えて

1

を操作するための一例として、あなたが定期的に位置を補間することができ、いくつかのモックデータです:

まず、POSIXctまでの時間を変更します:

tracks$time <- as.POSIXct(sprintf("%s %s", Sys.Date(), tracks$time)) 
tracks$type = "original" 

間隔:あなたはggplotとの位置の変化を調べることができ

n <- nrow(tracks) 
tracks2 <- data.frame(
    latitude = approx(x = tracks$time, y = tracks$latitude, n = n)$y, 
    longitude = approx(x = tracks$time, y = tracks$longitude, n = n)$y, 
    time = as.POSIXct(approx(tracks$time, 1:nrow(tracks), n = n)$x, origin = "1970-01-01"), 
    type = "corrected" 
) 

:あなたの答えのための

ggplot(rbind(tracks, tracks2), aes(x = time, y = latitude, color = type)) + 
    geom_line() + 
    geom_point() + 
    scale_x_datetime(breaks = tracks2$time, minor_breaks = NULL, labels = format(tracks2$time, format = "%H:%M")) + 
    theme_minimal() 

enter image description here

+0

感謝。これにはベストプラクティスはありますか?たとえば、元のデータがサンプリングされるよりも、粗い時間分解能で補間すべきですか? –

+1

申し訳ありませんが、わかりません。ただし、異なる解像度で試すことができます。サンプルを更新して、 'n> nrow(トラック)'を可能にすることに注意してください。異なる値の 'n 'で試してください。 – bergant

関連する問題