Examples and Tutorials

This section provides detailed examples and tutorials for using movr.

3D Trajectory Visualization

Visualize individual or group mobility patterns in 3D space:

library(movr)
data(movement)

# 3D trajectory plot with color coding by user
plot_traj3d(movement,
            x = "lon", y = "lat", z = "timestamp",
            color_by = "user_id",
            alpha = 0.7,
            size = 2)

# Voronoi tessellation in 3D
voronoi_result <- voronoi3d(movement,
                           x = "lon", y = "lat", z = "timestamp")

Flow Maps

Analyze population movements and migration patterns:

# Create flow map from mobility data
flow_data <- flowmap(movement,
                     from = "origin_cell",
                     to = "destination_cell",
                     weight = "flow_count")

# Visualize with custom styling
plot_flowmap(flow_data,
             node_size = "population",
             edge_width = "flow_strength",
             color_scheme = "viridis",
             alpha = 0.8)

# Flow statistics
flow_stats <- flow.stat(flow_data)

Spatial Analysis

Perform various spatial analyses:

# Calculate radius of gyration for each user
rog <- radius_of_gyration(movement,
                         x = "lon", y = "lat",
                         id = "user_id")

# Spatial correlation analysis
spatial_corr <- spatial.corr(movement,
                            x = "lon", y = "lat",
                            time_window = "daily")

# Point coverage analysis
coverage <- point.coverage(movement,
                          x = "lon", y = "lat",
                          radius = 1000)  # 1km radius

# People occurrence analysis
occurrence <- people.occurrence(movement,
                               x = "lon", y = "lat",
                               id = "user_id")

Temporal Analysis

Analyze temporal patterns in mobility data:

# Time-of-day analysis
tod_data <- hour2tod(movement$timestamp)

# Time-of-week analysis
tow_data <- hour2tow(movement$timestamp)

# Generate mobility sessions
sessions <- gen_sessions(movement,
                        id = "user_id",
                        time_threshold = 3600)  # 1 hour

# Calculate temporal entropy
temp_entropy <- entropy.spacetime(movement,
                                 id = "user_id",
                                 time_bins = 24)

# Spatial entropy
spatial_entropy <- entropy.space(movement,
                                id = "user_id",
                                x = "lon", y = "lat")

# Random entropy
random_entropy <- entropy.rand(movement,
                              id = "user_id")

Statistical Analysis

Perform statistical analyses on mobility patterns:

# Fit power law distribution
power_law <- fit.power.law(movement$distance)

# Fit truncated power law
trunc_power_law <- fit.truncated.power.law(movement$distance)

# Fit polyexponential distribution
polyexp <- fit.polyexp(movement$distance)

# Calculate RMSE
rmse_value <- RMSE(predicted, observed)

Data Quality Assessment

Assess and validate your mobility data:

# Comprehensive trajectory quality check
dq_result <- dq.traj(movement,
                     id = "user_id",
                     time = "timestamp",
                     x = "lon", y = "lat")

# Point-level quality assessment
point_quality <- dq.point(movement,
                         x = "lon", y = "lat",
                         time = "timestamp")

# Iovan distance quality check
iovan_quality <- dq.iovan(movement,
                         x = "lon", y = "lat",
                         time = "timestamp")

Coordinate Transformations

Convert between different coordinate systems:

# Cartesian to geographic coordinates
geo_coords <- cart2geo(x_cart, y_cart)

# Geographic to Cartesian coordinates
cart_coords <- geo2cart(lon, lat)

# Radian conversions
geo_rad <- cart2geo.radian(x_cart, y_cart)
cart_rad <- geo2cart.radian(lon_rad, lat_rad)

# Degree to radian conversion
radians <- deg2rad(degrees)
degrees <- rad2deg(radians)

Utility Functions

Use various utility functions:

# Calculate great circle distance
distance <- gcd(lat1, lon1, lat2, lon2)

# Euclidean distance
euc_dist <- euc.dist(x1, y1, x2, y2)

# Pairwise distances
pairwise_dist <- pairwise.dist(coordinates)

# Find midpoint
mid_point <- midpoint(x1, y1, x2, y2)

# Check if points are in area
in_area_result <- in.area(points, area_polygon)

# Rotate matrix 90 degrees
rotated_matrix <- rot90(matrix_data)

# Repeat each element
repeated <- rep_each(vector, times)

Sequence Analysis

Analyze mobility sequences:

# Approximate sequence
approx_seq <- seq_approximate(sequence, tolerance)

# Collapse sequence
collapsed_seq <- seq_collapsed(sequence)

# Distinct sequence
distinct_seq <- seq_distinct(sequence)

# Sequence distance
seq_distance <- seq_dist(seq1, seq2)

Advanced Examples

For more advanced examples and use cases, see the vignettes:

# View available vignettes
vignette(package = "movr")

# Open specific vignette
vignette("vignette_name", package = "movr")