This function implements the generalized logistic analysis introduced in Verboon & Peters (2017). This analysis fits a logistic function (i.e. a sigmoid) to a data series. This is useful when analysing single case designs. The function enables easy customization of the main plot elements and easy saving of the plot with anti-aliasing.
genlog(data,
timeVar = 1,
yVar = 2,
phaseVar = NULL,
baselineMeasurements = NULL,
yRange = NULL,
startX = NULL,
startBase = NULL,
startTop = NULL,
startGrowthRate = NULL,
startV = 1,
changeInitiationBounds = NULL,
growthRateBounds = c(-2, 2),
baseMargin = c(0, 3),
topMargin = c(-3, 0),
baseBounds = NULL,
topBounds = NULL,
vBounds = c(1, 1),
colors = list(bounds = viridis(4)[4],
curve = viridis(4)[3],
mid = viridis(4)[2],
intervention = viridis(4)[1],
points = "black"),
theme = theme_minimal(),
pointSize = 2,
pointAlpha = 0.5,
lineSize = 0.5,
curveSizeMultiplier = 2,
showPlot = TRUE,
outputFile = NULL,
outputWidth = 16,
outputHeight = 16,
ggsaveParams = list(units = "cm",
dpi = 300,
type = "cairo"))
The dataframe containing the variables for the analysis.
The name of the variable containing the measurement moments (or an index of measurement moments). An index can also be specified, and assumed to be 1 if omitted.
The name of the dependent variable. An index can also be specified, and assumed to be 2 if omitted.
The variable containing the phase of each measurement. Note that this normally should only have two possible values.
If no phaseVar is specified, baselineMeasurements
can be used to specify the number of baseline measurements, which is then used to construct the phaseVar
dummy variable.
This can be used to manually specify the possible values that the dependent variable can take. If no startBase
and startTop
are specified, the range of the dependent variable is used instead.
The starting values used when estimating the sigmoid using minpack.lm
's nlsLM
function. startX
specifies the starting value to use for the measurement moment when the change is fastest (i.e. the slope of the sigmoid has the largest value); startBase
and startTop
specify the starting values to use for the base (floor) and top (ceiling), the plateaus of relative stability between which the sigmoid described the shift; startGrowthRate
specifies the starting value for the growth rate; and startV
specifies the starting value for the v parameter.
These values specify constraints to respect when estimating the parameters of the sigmoid function using minpack.lm
's nlsLM
. changeInitiationBounds
specifies between which values the initiation of the shift must occur; growthRateBounds
describes the bounds constraining the possible values for the growth rate; baseBounds
and topBounds
specify the constraints for possible values for the base (floor) and top (ceiling), the plateaus of relative stability between which the sigmoid described the shift; and if these are not specified, baseMargin
and topMargin
are used in combination with the range of the dependent variable to set these bounds (also see yRange
); and finally, vBounds
specifies the possible values that constrain the v parameter.
The colors to use for the different plot elements.
The theme to use in the plot.
The sizes of points and lines in the plot.
The alpha channel (transparency, or rather, 'opaqueness') of the points.
A multiplyer for the curve size compared to the other lines (e.g. specify '2' to have a curve of twice the size).
Whether to show the plot or not.
If not NULL
, the path and filename specifying where to save the plot.
The dimensions of the plot when saving it (in units specified in ggsaveParams
).
The parameters to use when saving the plot, passed on to ggsave
.
Mainly, this function prints its results, but it also returns them in an object containing three lists:
The arguments specified when calling the function
Intermediat objects and values
The results such as the plot.
For details, see Verboon & Peters (2017).
Verboon, P. & Peters, G.-J. Y. (2017) Applying the generalised logistic model in SCD to deal with ceiling effects. PsyArXiv http://INSERTLINK
# NOT RUN {
### Load dataset
data(Singh);
### Extract Jason
dat <- Singh[Singh$tier==1, ];
### Conduct piecewise regression analysis
genlog(dat,
timeVar='time',
yVar='score_physical',
phaseVar='phase');
# }
Run the code above in your browser using DataLab