A helper function that constructs a named list of parameters for behavioural
choice predictions for the function SiGN()
. Users can either select a
predefined profile or specify custom values. The function includes built-in
validation and recycling of arguments when lengths differ.
Usage
choice_params(
profile = c("zentall", "kendall", "fantino"),
il_dur_a = NULL, il_dur_b = NULL,
tl_dur_a1 = NULL, tl_dur_a2 = NULL,
tl_dur_b1 = NULL, tl_dur_b2 = NULL,
tl_p_a1 = NULL, tl_p_a2 = NULL,
tl_p_b1 = NULL, tl_p_b2 = NULL,
tr_p_a1 = NULL, tr_p_a2 = NULL,
tr_p_b1 = NULL, tr_p_b2 = NULL,
il_sched_a = NULL, il_sched_b = NULL,
s_delta = 1,
beta_log = 10,
beta_toggle = TRUE,
display_params = FALSE
)
Arguments
- profile
A character string specifying a default parameter profile. Must be one of
"zentall"
,"kendall"
, or"fantino"
. See details.- il_dur_a, il_dur_b
Numeric vector of initial link durations for alternatives A and B respectively.
- tl_dur_a1, tl_dur_a2
Numeric vector of durations for two terminal links on alternative A.
- tl_dur_b1, tl_dur_b2
Numeric vector of durations for two terminal links on alternative B.
- tl_p_a1, tl_p_a2
Numeric vector of entry probabilities for two terminal links on alternative A.
- tl_p_b1, tl_p_b2
Numeric vector of entry probabilities for two terminal links on alternative B.
- tr_p_a1, tr_p_a2
Numeric vector of terminal reinforcement probabilities for two terminal links on alternative A.
- tr_p_b1, tr_p_b2
Numeric vector of terminal reinforcement probabilities for two terminal links on alternative B.
- il_sched_a, il_sched_b
Schedule type for each initial link. Must be either
"VI"
(variable-interval) or"FR"
(fixed-ratio). Case-insensitive.- s_delta
Time required to perceive a stimulus that signals the absence of terminal reinforcement. Default is 1. See also
s_delta()
.- beta_log
A positive real number specifying the base of the logarithm used for β. Defaults to 10.
- beta_toggle
Logical defaulting to
TRUE
. Permits the model to adjust the balance of conditional and primary reinforcement for signalled alternatives according to Equation 6 of Dunn et al. (2024). See alsobeta_sig()
.- display_params
Logical. If
TRUE
, prints the parameter list as a data frame.
Value
A named list of validated and possibly recycled parameters suitable
for input into the SiGN()
function.
Details
Default Profiles:
Three default profiles are available to streamline argument selection:
"zentall"
(based on Stagner & Zentall, 2010), "kendall"
(based on
Kendall, 1985), and "fantino"
(based on Fantino, 1969). Notably, the "
fantino" profile reflects a single terminal link procedure, consistent with
the design used in Fantino’s original study.
Default profile values can be overridden by specifying the corresponding arguments directly.
If argument lengths differ, values are recycled to the maximum length, with a message.
Temporal Units:
The SiGN model is temporally relative, meaning it allows initial and terminal link durations to be treated as any unit of time (e.g., seconds, minutes, hours, etc.). However, units need to be consistent across all link durations.
s_delta
Conventionally, concurrent-chains paradigms have measured time in seconds
with very easily discriminable stimuli. The default value of s_delta
reflects this convention. However, if shorter or longer temporal units are
used, or the stimuli takes considerable time to be discriminated, it may be
prudent to adjust s_delta
accordingly.
Signal Discrimination:
A choice alternative is treated by the SiGN()
function as signalled if
both terminal link durations are non-zero and either the durations or
the reinforcement probabilities differ between the terminal links.
This definition assumes that differences in duration or reinforcement probability imply discriminability between the stimuli associated with each terminal link. For example, if one terminal link lasts 10 seconds and the other 20 seconds, and both have a reinforcement probability of 1, it is assumed that the organism can fully discriminate between them—e.g., the terminal links may be visually distinct (such as different colours) and thus are recognisable from the moment of onset.
The SiGN model assumes that the (behavioural) function of terminal link stimuli remains fixed across the entire duration of the terminal link—that is, the probability of terminal reinforcement does not change partway through the terminal link. Procedures that depart from this assumption may not be appropriately handled by the model.
Schedule Selection:
Setting the initial link schedules as "FR"
is most suitable for cases
involving an FR 1 schedule or when a single timer is employed in the
initial links of long VI schedules. This is because the "FR"
setting does
not take into account the switching behaviour present with concurrent
schedules using independent timers. For example, if a single timer is used
for two concurrent VI 30 schedules, setting the Initial Link Schedule as
an FR is preferable because the time spent in the initial links is
controlled by one timer, not two independent timers operating concurrently.
However, if independent timers are used for each initial link, the model
requires this setting to be VI .
Note that the SiGN model does not directly compute predictions for ratio schedules. Instead, it represents the ratio as a duration with an individual reinforcement rate, rather than a common/shared one.
References
Dunn, R. M., Pisklak, J. M., McDevitt, M. A., & Spetch, M. L. (2024). Suboptimal choice: A review and quantification of the signal for good news (SiGN) model. Psychological Review. 131(1), 58-78. https://doi.org/10.1037/rev0000416
Fantino, E. (1969). Choice and rate of reinforcement. Journal of the Experimental Analysis of Behavior, 12(5), 723–730. https://doi.org/10.1901/jeab.1969.12-723
Kendall, S. B. (1985). A further study of choice and percentage reinforcement. Behavioural Processes, 10(4), 399–413. https://doi.org/10.1016/0376-6357(85)90040-3
Stagner, J. P., & Zentall, T. R. (2010). Suboptimal choice behavior by pigeons. Psychonomic Bulletin & Review, 17(3), 412–416. https://doi.org/10.3758/PBR.17.3.412
Examples
# Use default Zentall profile
z <- choice_params("zentall", display_params = TRUE)
#> il_dur_a il_dur_b tl_dur_a1 tl_dur_a2 tl_dur_b1 tl_dur_b2 tl_p_a1 tl_p_a2
#> 1 1 1 10 10 10 10 0.2 0.8
#> tl_p_b1 tl_p_b2 tr_p_a1 tr_p_a2 tr_p_b1 tr_p_b2 il_sched_a il_sched_b s_delta
#> 1 0.2 0.8 1 0 0.5 0.5 FR FR 1
#> beta_log beta_toggle
#> 1 10 TRUE
# Custom specification with minimal values
k <- choice_params(
profile = "kendall",
tr_p_b1 = c(1, 0.5), tr_p_b2 = c(1, 0.5),
display_params = TRUE
)
#> il_dur_a il_dur_b tl_dur_a1 tl_dur_a2 tl_dur_b1 tl_dur_b2 tl_p_a1 tl_p_a2
#> 1 1 1 15 15 15 15 0.5 0.5
#> 2 1 1 15 15 15 15 0.5 0.5
#> tl_p_b1 tl_p_b2 tr_p_a1 tr_p_a2 tr_p_b1 tr_p_b2 il_sched_a il_sched_b s_delta
#> 1 0.5 0.5 1 0 1.0 1.0 FR FR 1
#> 2 0.5 0.5 1 0 0.5 0.5 FR FR 1
#> beta_log beta_toggle
#> 1 10 TRUE
#> 2 10 TRUE