circumplex 1.2.0
CRAN release: 2026-07-02
- The SSM plotting functions (
ssm_plot_circle(),ssm_plot_curve(),ssm_plot_contrast()) now warn when given an unrecognized argument (e.g., a misspelled parameter name) instead of silently ignoring it. - Matrix input now works wherever it is documented.
ssm_analyze(),ssm_score(),ipsatize(),score(),norm_standardize(), andself_standardize()previously errored when given a matrix despite advertising matrix support; they now coerce it to a data frame internally. -
ssm_score()now accepts numeric column indexes forscales(e.g.,scales = 1:8), consistent with its documentation and withssm_analyze(); it previously required character names. - Printing an SSM object (via
print()orsummary()) now adds a note under any profile whose model fit is inadequate (R-squared < .70; interpret only elevation) or whose amplitude confidence interval includes zero (the displacement is not interpretable). The notes apply to profiles only, not to contrast rows. - Contrast displacement estimates and their confidence intervals are now always reported on the same angular branch. Previously, for contrasts near ±180 degrees, the estimate (reported in (-180, 180]) could fall numerically outside a confidence interval it was geometrically inside, because the interval was centered on the bootstrap circular mean’s own branch. The interval is now shifted by a full circle when needed (its width and meaning are unchanged; results away from the boundary are identical), so interval endpoints may exceed ±180 degrees when the contrast straddles the boundary.
-
norm_standardize()now matches each scale to its normative data by angular position rather than exact numeric equality, so 0 and 360 degrees are treated as the same angle (previously passing 0 for a scale stored at 360 failed with a cryptic error). An angle with no matching normative row, or with more than one, now produces an informative error naming the available angles. - Degenerate profiles are now handled explicitly instead of returning numerical noise. A flat (zero-variance) profile returns
NAdisplacement and fit with a warning (previously an arbitrary angle and-Inf); a profile with real variance but zero amplitude returnsNAdisplacement and a fit of- Bootstrap resamples that produce degenerate profiles (e.g., a resampled measure with zero variance) no longer crash
ssm_analyze(); they are excluded from the confidence intervals with a warning reporting the count. Genuinely small amplitudes are unaffected — the degeneracy test operates at machine-noise scale only.
- Bootstrap resamples that produce degenerate profiles (e.g., a resampled measure with zero variance) no longer crash
- Fixed a bug where a missing (
NA) value in thegroupingvariable ofssm_analyze()crashed with a cryptic error under pairwise deletion (listwise = FALSE). Such observations are now dropped before analysis with a message reporting how many were removed, in both deletion modes; if no observations remain, a clear error is given. - Fixed a bug where length requirements on character arguments were never enforced (
is_null_or_char()dropped itsnargument).ssm_analyze()now errors ifmeasures_labelsdoes not match the number ofmeasures(or is given withoutmeasures),ssm_plot_circle()/ssm_plot_curve()now error ifangle_labelsdoes not match the number of angles (previously mismatched labels could be silently recycled onto the wrong scales), andssm_table()/html_render()now requirecaptionto be a single string. - Fixed a bug where
ssm_score()silently ignored itsanglesargument and always usedoctants(): custom angle sets of the same length produced incorrect results without warning, and angle sets of a different length (e.g.,poles()with four scales) errored. Results fromssm_score()with the defaultangles = octants()are unaffected. (found in 2026-07 audit)
circumplex 1.0.1
CRAN release: 2025-07-28
New features
- Add the
self_standardize()function for standardizing variables using sample means and SDs
circumplex 1.0.0
CRAN release: 2024-10-28
Breaking changes
Nearly all code rewritten/refactored to streamline and reduce dependencies.
Removed support for non-standard evaluation
The
contrastargument tossm_analyze()is now TRUE or FALSE instead of “none”, “model”, or “test”. Model contrasts were removed and TRUE yields test contrasts.Many arguments renamed (e.g.,
.datatodata,.ssm_objecttossm_object,xytodrop_xy)Removed
ssm_plot()function in favor ofssm_plot_circle(),ssm_plot_curve(), andssm_plot_contrast().Renamed
standardize()function tonorm_standardize()
New features
Added
ssm_plot_curve()Added CAIS and IEI instrument data
Added profile scores, results, and plotting to models with contrasts
Added
PANO()function for conveniently creating scale namesAll internal and external data are now data frames instead of tibbles
Rewrote all vignettes to use the updated functions, arguments, etc.
Minor improvements and fixes
Harmonized the
resultsandscoresfields in the output ofssm_analyze()Added many unit tests, increasing the package to 100% code coverage
Added many assertions to check for invalid input arguments
Harmonized the tidying function arguments (e.g.,
prefix,suffix,append)Added print methods for degree and radian classes
Replace internal non-standard evaluation with
.datareferencesMinor visual improvements to print and summary methods for ssm_objects
circumplex 0.3.7
CRAN release: 2021-05-17
New features
Add
angle_labelsargument tossm_plot()to allow users to customize the angle labels around a circular plotAdd
paletteargument tossm_plot()to allow users to customize the color palette (from {RColorBrewer}) of a circular plotReplaced the
font_sizeargument tossm_plot()with thelegend_font_sizeandscale_font_sizearguments to allow users to customize the font size of different elements of a circular plot
Minor improvements and fixes
Update
ggsave()documentation for future compatibilityUpdate {Rcpp} code for future compatibility
Added a black border to the points in a circular plot to greater distinguish them visually
Change CI notation from [] to () to play nice with pandoc
Update to {testthat} 3E and add
ssm_plot()tests using {vdiffr}Recompile vignettes with new version of {roxygen2}
Replace TravisCI with GitHub Actions
circumplex 0.3.4
CRAN release: 2019-12-05
Minor improvements and fixes
Adjust the test of
quantile.radian()to account for changes to%%starting in R 3.6.1 PatchedAdd the name of the package to the S3 class names (e.g.,
circumplex_radianinstead ofradian) to minimize the risk of overlapping classes between packagesAdd some supplementary files to the R build ignore list to avoid notes during CRAN check
circumplex 0.3.2
CRAN release: 2019-08-21
circumplex 0.3.0
CRAN release: 2019-04-26
New features
New
ssm_parameters()calculates SSM parameters (without confidence intervals) from a vector of scores.New
ssm_score()calculates SSM parameters by row.Added support for older versions of R (3.3.x).
Minor improvements and fixes
Updated the “Introduction to SSM” vignette’s figures.
Replaced use of
dplyr::funs()as this function is being deprecated.Fixed a bug in the normative data for
ipipipcthat prevented standardization.Fixed a bug caused by changes in how random numbers are generated in R 3.6.x.
Fixed several broken links by running package through new version of
usethis.Fixed warnings related to documentation inherited from other packages.
circumplex 0.2.1
CRAN release: 2018-11-29
New features
iis32now has normative data.Added open-access (i.e., full item text) to the
iis32andiis64.
Minor improvements and fixes
iis32item ordering and scoring now match the author’s version.iis32response anchors now range from 1 to 6 and match norms.Changed use of
tibblefunctions to avoid problems when new version releases.Removed dependency on
MASSpackage (until it is used by exported functions).
circumplex 0.2.0
CRAN release: 2018-10-26
New features
Added functions and documentation for numerous circumplex instruments.
Added functions for ipsatizing and scoring item-level data.
Added function for standardizing scale-level data using normative data.
Minor improvements and fixes
Changed OpenMP flags in Makevars to fix a compile problem on Debian machines.
Fixed a bug related to calculating angular medians in the presence of NAs.
Changed the default to plot profiles with low fit (but with dashed borders).
Import and export functions from rlang tidy evaluation.
Added unit testing of various functions to increase code coverage.
Redesigned package website to be more attractive and clear.
Updated the SSM vignette to use the
standardize()function.
circumplex 0.1.2
CRAN release: 2018-08-06
