Aggregates a long-format f0 dataset into a per-tone mean contour
suitable for plotting, comparison, or Chao numeral summarisation
via contour_to_chao(). The function is used internally by the
Summarise tab of the Shiny app when the user chooses the raw or
normalised dataset as the input.
Usage
compute_mean_contour(
data,
token = "token",
f0 = "f0",
time = "time",
tone = "tone",
n_bins = 50,
time_normalised = c("auto", "no", "yes")
)Arguments
- data
A long-format data frame with one row per f0 sample.
- token, f0, time, tone
Column names.
- n_bins
Number of evenly-spaced time bins across
[0, 1]. Default50. Larger values give a smoother contour at the cost of noisier per-bin estimates if some bins are sparsely populated.- time_normalised
One of
"auto"(default: detect an already-normalised[0, 1]time column and use it as-is),"no"(always rescale to[0, 1]within each token), or"yes"(declare the column already normalised). Seeresolve_time_norm().
Details
Internally:
Within each token, normalise the time axis to
[0, 1]so tokens of different durations can be averaged across the same grid. A time column that is already normalised is detected withtime_already_normalised()and used as-is (override withtime_normalised), matching whatfit_gca()andfit_gamm()do.Round each sample's normalised time onto one of
n_binsequally-spaced bins.For each (tone, time-bin) cell, compute the mean of
f0across all tokens of that tone with samples in the bin.Return the long-format mean contour with columns
tone,time,f0_predicted(the column namef0_predictedmatches the convention used bypredict_gca()andpredict_gamm()so the same downstream tools can consume either model predictions or raw mean contours).
References
Xu, C., & Zhang, C. (2024). A cross-linguistic review of citation tone production studies: Methodology and recommendations. The Journal of the Acoustical Society of America, 156(4), 2538–2565. doi:10.1121/10.0032356
See also
contour_to_chao() for converting mean contours to Chao
numerals. predict_gca() and predict_gamm() for model-based
alternatives that produce the same column structure.
Examples
data(sample_f0)
mc <- compute_mean_contour(sample_f0,
token = "token", f0 = "f0_Hz",
time = "time", tone = "tone")
head(mc)
#> tone time f0_predicted
#> 1 1 0.00000000 202.3695
#> 2 1 0.04081633 197.7551
#> 3 1 0.10204082 196.7470
#> 4 1 0.14285714 196.2067
#> 5 1 0.20408163 195.8127
#> 6 1 0.24489796 195.5778
