Skip to contents

This function converts observed flights (movements) and survey duration into the "encounter rate" per minute of survey. This value is uncorrected for the observer's effective detection radius.

Usage

encounter_rate(df_obs_summary, wilson_correction = TRUE)

Arguments

df_obs_summary

data.frame; a data.frame with one row per survey containing at least columns size and survey_duration where size is the total number of individuals observed below the maximum height of the turbine in each survey and survey_duration is the duration of each survey. It can also optionally include a column survey_weight if needed to account for stratification etc. The sum of the survey weights must equal the total number of surveys (to avoid artificially inflating or deflating the survey effort). When NULL (the default) will weight surveys equally.

wilson_correction

boolean; Apply Wilson correction (Wilson 1927) if there are no observations. Defaults to TRUE.

Value

numeric; number of flights observed in one unit time of survey. If the Wilson correction was used it will return the (approximate) mid-point of the 95% confidence interval (see https://en.wikipedia.org/wiki/Binomial_proportion_confidence_interval#Wilson_score_interval).

Details

Note: We recommend to desktop truncating the observation data to the maximum height of the turbine in most cases, as this is the simplest way to avoid artificially inflating or deflating the flux through the turbine. However, it is up to the analyst discretion and they may choose another method to account for the effective detection height.

References

Wilson EB (1927). “Probable Inference, the Law of Succession, and Statistical Inference.” Journal of the American Statistical Association, 22(158), 209–212. doi:10.1080/01621459.1927.10502953 . https://www.jstor.org/stable/2276774.

See also

turbine_flights() and flights_per_year() for methods to expand the observer flux into flights through the turbine plane

Examples


## A simple example of calculating flux from a point count and
## using this to generate the number of flights through a turbine 
## in a year
## 
## # Step by step
## 

# four surveys
# Note the observation data should include observations within max rotor swept height
df_obs <- data.frame(
  size = c(0, 2 , 3, 0), #individuals observed per survey (below max rotor swept height)
  survey_duration = c(20, 20, 18, 20), # minutes
  # Optional survey weights to deal with stratification etc
  survey_weight = c(1,1,1,1)
)

rotor_diameter <- 300
hub_height <- 200
edr <- 800 # derive from distance model
max_rsh <- hub_height + rotor_diameter/2

# flights observed per minute of survey
flights_per_min <- encounter_rate(
  df_obs_summary = df_obs,
  wilson_correction = TRUE # Default
)

# observed flights through vertical plane of one metre squared in one minute
flights_per_m2_per_min <- obs_flux(
  encounter_rate = flights_per_min,
  eff_detection_width = 2*edr,
  eff_detection_height = max_rsh
)

# scale to turbine width and height
flights_turbine_min <- turbine_flights(
  obs_flux = flights_per_m2_per_min,
  rotor_diameter = rotor_diameter,
  hub_height = hub_height
)

# scale to annual flights through area of rotor_diameter x turbine height 
flights_turbine_year <- flights_per_year(
  flights_per_time = flights_turbine_min,
  time_units = "min", # Default
  prop_day = 0.5,  #diurnal species
  prop_year = 1    # present all year
)

## Alternate calc using a wrapper function
## to go from observations to turbine flights per year
## 
flights_turbine_year2 <- turbine_flights_year(
  survey_type = "point", # only supported option currently
  encounter_rate = flights_per_min,
  time_units = "min",
  eff_detection_width = 2*edr,
  eff_detection_height = max_rsh,
  rotor_diameter = rotor_diameter,
  hub_height = hub_height,
  prop_day = 0.5,  #diurnal species
  prop_year = 1   # present all year
)

#They are the same
flights_turbine_year
#> [1] 3160.817
flights_turbine_year2
#> [1] 3160.817