radiusOfGyrationDT {topdowntimeratio} | R Documentation |
Radius of Gyration
Description
Calculates the time-weighted radius of Gyration provided a data.table containing latitude, longitude and a timestamp. This is the root-mean-square time-weighted average of all locations. Weighting by time is provided to adjust for unequal frequency of data collection.
Usage
radiusOfGyrationDT(lat_col, lon_col, timestamp, dist_measure = "geodesic")
Arguments
lat_col |
Time-ordered vector of latitudes |
lon_col |
Time-ordered vector of longitudes |
timestamp |
Timestamps associated with the latitude/longitude pairs |
dist_measure |
Passed through to geodist::geodist_vec, One of "haversine" "vincenty", "geodesic", or "cheap" specifying desired method of geodesic distance calculation. |
Details
Time-weighted RoG is defined as
\sqrt{\frac{\sum_i{w_j \times dist([\overline{lon}, \overline{lat}], [lon_j, lat_j]})}{\sum_i{w_j}}}
Where
\overline{lon} = \frac{ \sum_j w_j lon_j}{\sum_j w_j} \quad \textrm{and} \quad \overline{lat} = \frac{ \sum_j w_j lat_j}{\sum_j w_j}
And the weighting element w_j
represents half the time interval during which a location was recorded
w_j = \frac{t_{j+1} - t_{j - 1}}{2}
Value
Time-weighted radius of gyration
Examples
# Inside a data.table
dt <- data.table::data.table(
lat = c(1, 1, 1, 1, 1),
lon = c(1, 1.5, 4, 1.5, 2),
timestamp = c(100, 200, 300, 600, 900)
)
dt[, radiusOfGyrationDT(lat, lon, timestamp)]
# As vectors
radiusOfGyrationDT(
c(1, 1, 1, 1, 1),
c(1, 1.5, 4, 1.5, 2),
c(100, 200, 300, 600, 900)
)