This function computes the Numbers Needed for Change, and shows a visualisation to illustrate them. Numbers Needed for Change is the name for a Numbers Needed to Treat estimate that was computed for a continuous outcome as is common in behavior change research.

nnc(
d = NULL,
cer = NULL,
r = 1,
n = NULL,
threshold = NULL,
mean = 0,
sd = 1,
poweredFor = NULL,
thresholdSensitivity = NULL,
eventDesirable = TRUE,
eventIfHigher = TRUE,
conf.level = 0.95,
dReliability = 1,
d.ci = NULL,
cer.ci = NULL,
r.ci = NULL,
d.n = NULL,
cer.n = NULL,
r.n = NULL,
plot = TRUE,
returnPlot = TRUE,
silent = FALSE
)

# S3 method for nnc
print(x, digits = 2, ...)

## Arguments

d

The value of Cohen's d.

cer

The Control Event Rate.

r

The correlation between the determinant and behavior (for mediated Numbers Needed for Change).

n

The sample size.

threshold

If the event rate is not available, a threshold value can be specified instead, which is then used in conjunction with the mean (mean) and standard deviation (sd) and assuming a normal distribution to compute the event rate.

mean

The mean value, used to draw the plot, or, if no CER is provided but instead the threshold value, to compute the CER.

sd

The standard deviation, used to draw the plot (and to compute the CER if a threshold value is supplied instead of the CER).

poweredFor

The Cohen's d value for which the study was powered. This expected Cohen's d value can be used to compute the threshold, which then in turn is used to compute the CER. To use this approach, also specify the mean and the standard deviation.

thresholdSensitivity

This argument can be used to provide a vector of potential threshold values, each of which is used to compute an NNC. This enables easy inspection of whether the value chosen as threshold matters much for the NNC.

eventDesirable

Whether an event is desirable or undesirable.

eventIfHigher

Whether scores above or below the threshold are considered 'an event'.

conf.level

The confidence level of the confidence interval.

dReliability

If Cohen's d was not measured with perfect reliability, nnc can disattenuate it to correct for the resulting attenuation using ufs::disattenuate.d() before computating the Experimental Event Rate. Use this argument to specify the reliability of the outcome measure. By default, the setting of 1 means that no disattenuation is applied.

d.ci

Instead of providing a point estimate for Cohen's d, a confidence interval can be provided.

cer.ci

Instead of providing a point estimate for the Control Event Rate, a confidence interval can be provided.

r.ci

Instead of providing a point estimate for the correlation, a confidence interval can be provided.

d.n

In addition to providing a point estimate for Cohen's d, a sample size can be provided; if it is, the confidence interval is computed.

cer.n

In addition to providing a point estimate for the Control Event Rate, a sample size can be provided; if it is, the confidence interval is computed.

r.n

In addition to providing a point estimate for the correlation, a sample size can be provided; if it is, the confidence interval is computed.

plot

Whether to generate and show the plot.

returnPlot

Whether to return the plot (as an attribute), or to only display it.

silent

x

The nnc object to print.

digits

The number of digits to round to.

...

Any additional arguments are passed to the print function.

## Value

The Numbers Needed for Change (NNC), potentially with a plot visualising the NNC in an attribute.

## Details

Numbers Needed to Treat is a common and very useful effect size measure in use in the medical sciences. It is computed based on the Control Event Rate (CER) and the Experimental Event Rate (EER), and expresses how many people would need to received a treatment to yield a beneficial result for one person. In behavior change research, a similar measure would be useful, but the outcome is normally not dichotomous as is common in the medical literature (i.e. whether a participants survives or is cured), but continuous. Numbers Needed for Change fills this lacuna: it is simply the Numbers Needed to Treat, but converted from a Cohen's d value. nnt is an alias for nnc.

For more details, see Gruijters & Peters (2019) for details.

## References

Gruijters, S. L., & Peters, G. Y. (2019). Gauging the impact of behavior change interventions: A tutorial on the Numbers Needed to Treat. PsyArXiv. doi:10.31234/osf.io/2bau7

## Author

Gjalt-Jorn Peters & Stefan Gruijters

Maintainer: Gjalt-Jorn Peters gjalt-jorn@userfriendlyscience.com

## Examples


### Simple example
behaviorchange::nnc(d=.4, cer=.3);

#>
#> Numbers needed for change: 7 (exact: 6.64)
#>
#> (Based on a Control Event Rate (CER) of .3, an Experimental Event Rate (EER) of .45 and a Cohen's d of 0.4.)

### Or for a scenario where events are undesirable, and the
### intervention effective (therefore having a negative value for d):
behaviorchange::nnc(d=-.4, cer=.3, eventDesirable=FALSE);

#>
#> Numbers needed for change: 9 (exact: 8.17)
#>
#> (Based on a Control Event Rate (CER) of .3, an Experimental Event Rate (EER) of .18 and a Cohen's d of -0.4.)