Generates synthetic Relative Humidity (RH) series for multiple climate stations using stochastic hydro-climatic relationships.

simulate_rh(
  stations,
  time_index,
  rainfall = NULL,
  temperature = NULL,
  ar_coeff = 0.7,
  seasonal_strength = 8,
  rain_sensitivity = 0.04,
  temp_sensitivity = 0.6,
  coastal_moisture = 12,
  noise_sd = 3,
  min_rh = 15,
  max_rh = 100,
  seed = NULL
)

Arguments

stations

data.frame from create_stations()

time_index

data.frame from generate_time_index()

rainfall

Optional rainfall data.frame from simulate_rainfall().

temperature

Optional temperature data.frame from simulate_temperature().

ar_coeff

Numeric. AR(1) persistence coefficient. Default = 0.7

seasonal_strength

Numeric. Controls seasonal RH variability. Default = 8

rain_sensitivity

Numeric. RH increase per rainfall unit. Default = 0.04

temp_sensitivity

Numeric. RH decrease per temperature unit. Default = 0.6

coastal_moisture

Numeric. Coastal humidity enhancement factor. Default = 12

noise_sd

Numeric. Standard deviation of stochastic noise. Default = 3

min_rh

Numeric. Minimum allowable RH (%). Default = 15

max_rh

Numeric. Maximum allowable RH (%). Default = 100

seed

Optional numeric seed.

Value

data.frame containing:

Station

Station name

LON

Longitude

LAT

Latitude

ELEV

Elevation

DATE

Simulation timestamp

Year

Calendar year

Month

Calendar month

Season

Climatological season

RH

Relative humidity (%)

Humidity_Anomaly

Humidity anomaly

Details

The simulation incorporates:

  • seasonal humidity cycles,

  • rainfall-humidity coupling,

  • temperature-humidity interaction,

  • coastal moisture effects,

  • elevation drying effects,

  • temporal persistence,

  • stochastic atmospheric variability,

  • physically realistic RH bounds.

Higher rainfall generally increases RH, while higher temperature lowers RH.

Examples

stations <- create_stations(
  n = 5,
  seed = 123
)
#> Generating synthetic station network...
#> Generated 5 synthetic stations within bounding box.
#> Deriving climate-aware station attributes...

time_index <- generate_time_index(
  start_date = "2000-01-01",
  end_date = "2005-12-31",
  frequency = "monthly"
)
#> Generated 72 time steps at monthly resolution.

rain <- simulate_rainfall(
  stations,
  time_index
)
#> Rainfall simulation complete for 5 stations.

temp <- simulate_temperature(
  stations,
  time_index
)
#> Temperature simulation complete for 5 stations.

rh <- simulate_rh(
  stations,
  time_index,
  rainfall = rain,
  temperature = temp
)
#> Relative humidity simulation complete for 5 stations.

head(rh)
#>     Station       LON      LAT  ELEV CLIMATE_ZONE       DATE Year Month  Season
#> 1 Station_1 -2.062112 4.818895 765.5      Coastal 2000-01-16 2000     1     Dry
#> 2 Station_1 -2.062112 4.818895 765.5      Coastal 2000-02-15 2000     2     Dry
#> 3 Station_1 -2.062112 4.818895 765.5      Coastal 2000-03-16 2000     3 Pre-Wet
#> 4 Station_1 -2.062112 4.818895 765.5      Coastal 2000-04-15 2000     4 Pre-Wet
#> 5 Station_1 -2.062112 4.818895 765.5      Coastal 2000-05-16 2000     5 Pre-Wet
#> 6 Station_1 -2.062112 4.818895 765.5      Coastal 2000-06-15 2000     6     Wet
#>      RH Humidity_Anomaly
#> 1 92.66             3.26
#> 2 99.06             6.55
#> 3 98.26             4.75
#> 4 91.19             0.19
#> 5 92.21             2.84
#> 6 89.97             3.26