We’ve already seen how adding the measures argument can change ssm_analyze() from analyzing means to analyzing correlations. Similarly, we can change it from analyzing all observations as a single group to analyzing subgroups separately. This is done using the grouping argument. This argument needs to contain a single variable (name or column number) that specifies each observation’s group. For instance, the Gender variable in the jz2017 dataset is a factor with two levels: Female and Male. To analyze each gender separately, we need to add the grouping = Gender argument to the function call.
Note that the output of summary() looks the same as previous mean-based analyses except that there are now two Profile blocks: one for Female and one for Male. A similar modification will occur if we generate a table and figure.
Any number of groups can be analyzed in this way, and the output will contain additional profile blocks, the table will contain additional rows, and the figure will contain additional points. The grouping variable just needs to contain more than one level (i.e., unique value). Also notice how, in the plot above, the Male profile has a dashed border instead of the typical solid border. This is because the Male profile has low prototypicality (i.e., \(R^2<.70\)) and therefore its plot is untrustworthy. It is also possible to prevent profiles from low prototypicality from plotting using the lowfit argument.
Similarly, we can analyze multiple external measures in a single function call by providing a vector of variables to the measures argument instead of a single variable. This can be done by wrapping the variable names or column numbers with the c() or, if they are adjacent columns, with the : shortcut. The package functions were written to analyze all measures and groups within a single bootstrap, so adding additional measures and groups should still be fast.
Generalizing to multiple groups and multiple measures
Finally, it is possible to analyze multiple measures within multiple groups. As you might expect, this requires providing both the measures and grouping arguments to the same function call. Again, any number of measures and groups is possible. The profiles in such an analysis will be named GROUP_MEASURE as below.
To compare the mean profiles for females and males, we can start with the same syntax we had before and then add a contrast argument. For the sake of illustration, we will use a model contrast here, but for some purposes, a parameter contrast might be more appropriate.
Note that the profile blocks we are used to have been replaced by a contrast block. By default, the contrast is made by subtracting the first level of the grouping variable from the second level (e.g., Male - Female). This provides an indication of the direction of the contrast. We can again generate a table and figure to display the results. Note that, because we used a model contrast, the figure will be a circular figure and not a contrast figure which we will see below. However, we would get a contrast figure if we used a parameter contrast.
Comparing measures in a group is very similar. Again, all we need to do is add the contrast argument to the function call containing measures. Here we will use a parameter contrast to see what they look like.
Here, instead of a circle plot, we see a contrast plot showing the difference between the two measures’ SSM parameters and their 95% confidence intervals. Because the confidence interval for the elevation parameter does not include zero, this parameter is significantly different between the measures.
@@ -809,28 +809,28 @@
Contrasts between groups’ correlations
Finally, we might want to compare a single measure’s profiles in two different groups. To do so, we need to specify the measures, the grouping variable, and the type of contrast. In this case, we need to ensure that we are providing only a single measure and a grouping variable with just two levels (as again only two things can be contrasted at a time). Note that the contrast name in this case will take the form of MEASURE: GROUP2 - GROUP1.
In some cases, such as multiple contrasts or groupings, we may want to combine several tables into one by joining them together as rows. This can be done using the ssm_append() function.
Additional arguments to the ssm_plot() function can be explored using the ?ssm_plot, ?ssm_plot_circle, and ?ssm_plot_contrast commands. For both types of figures, the fontsize argument will control the baseline text size in pts (default = 12). Some text elements will be rescaled from the specified fontsize (e.g., multiplying it by 150%). For circle plots, we have already seen the lowfit argument for including points with low model fit. Another useful option is the amax argument for the maximum value of the amplitude scale. By default, the package picks a number that will fit all the points and generate “round” numbers at each 1/5 tick; however, this default can be overwritten using the amax argument.
For contrast plots, several arguments exist for customizing the output. We have already seen the xy argument for including or excluding the x-value and y-value contrasts. We can also change the color and linesize of the point range (linesize in mm). Finally, we can change the axislabel displayed to the left of the plots. More complex customizations will be the subject of an advanced vignette.
ssm_plot(results6, xy=FALSE, color="blue", linesize=1,
+ axislabel="BORPD: Male - Female")
Exporting figures as files
All SSM plots are created using the ggplot2 package, which is incredibly flexible and powerful. It also offers the ggsave() function to export figures to external files of various types. See the documentation for this function (?ggsave) to learn more, but some useful arguments are filename, plot, width, height, and units. We can save the figure as a raster image file (e.g., “png”, “jpeg”, “tiff”), a vector image file (e.g., “svg”), or a portable document (e.g., “pdf” or “tex”). We can also control the exact width and height of the image in different units (i.e., “in”, “cm”, or “mm”). Because the underlying graphics are vectorized in R, they can be easily scaled to any size without loss of quality and used in manuscripts, presentations, or posters.
To illustrate the SSM functions, we will use the example dataset jz2017, which was provided by Zimmermann & Wright (2017) and reformatted for this package. This dataset includes self-report data from 1166 undergraduate students. Students completed a circumplex measure of interpersonal problems with eight subscales (PA, BC, DE, FG, HI, JK, LM, and NO) and a measure of personality disorder symptoms with ten subscales (PARPD, SCZPD, SZTPD, ASPD, BORPD, HISPD, NARPD, AVPD, DPNPD, and OCPD). More information about these variables can be accessed using the ?jz2017 command in R.
The circumplex scales in jz2017 come from the Inventory of Interpersonal Problems - Short Circumplex (IIP-SC). These scales can be arranged into the following circular model, which is organized around the two primary dimensions of agency (y-axis) and communion (x-axis). Note that the two-letter scale abbreviations and angular values are based in convention. A high score on PA indicates that one has interpersonal problems related to being “domineering” or too high on agency, whereas a high score on DE indicates problems related to being “cold” or too low on communion. Scales that are not directly on the y-axis or x-axis (i.e., BC, FG, JK, and NO) represent blends of agency and communion.
@@ -229,85 +229,85 @@
Conducting SSM for a group’s mean scores
To begin, let’s say that we want to use the SSM to describe the interpersonal problems of the average individual in the entire dataset. Although it is possible to analyze the raw scores contained in jz2017, our results will be more interpretable if we standardize the scores first. We can do this using the standardize() function. The first argument to this function is .data, a data frame frame containing the circumplex scales to be standardized. The second argument is scales and specifies where in .data the circumplex scales are (either in terms of their variable names or their column numbers). The third argument is angles and specifies the angle of each of the circumplex scales included in scales. Note that the scales and angles arguments need to be vectors (hence the c() function) that have the same ordering and length. Finally, the fourth argument is norms, a data frame containing the normative data we will use to standardize the circumplex scales. Here, we will use normative data for the IIP-SC by loading the iipsc data frame.
Now we can use the ssm_analyze() function to perform the SSM analysis. The first three arguments are the same as the first three arguments to standardize(). We can pass the new jz2017s data frame that contains standardized scores as .data and the same vectors to scales and angles since these haven’t changed.
The output of the function has been saved in the results object, which we can examine in detail using the summary() function. This will output the call we made to create the output, as well as some of the default options that we didn’t bother changing (see ?ssm_analyze to learn how to change them) and, most importantly, the estimated SSM parameter values with bootstrapped confidence intervals.
That was pretty easy! We can now write up these results. However, the circumplex package has some features that can make what we just did even easier. First, because the first three arguments of the ssm_analyze() function are always the same, we can omit their names. Second, because we organized the jz2017s data frame to have the circumplex scale variables adjacent and in order from PA to NO, we can simplify their specification by using the PA:NO shortcut. Finally, because the use of octant scales is so common, the circumplex package comes with a convenience function for outputting their angular displacements: octants(). Note how, even when using these shortcuts, the results are the same except for minor stochastic differences in the confidence intervals due to the randomness inherent to bootstrapping. (To get the exact same results, we could use the set.seed() function to control the random number generator in R.)
Next, we can produce a table to display our results. With only a single set of parameters, this table is probably overkill, but in future analyses we will see how this function saves a lot of time and effort. To create the table, simply pass the results (or results2) object to the ssm_table() function.
Next, let’s leverage the fact that we are working within a circumplex space by creating a nice-looking circular plot by mapping the amplitude parameter to the points’ distance from the center of the circle and the displacement parameter to the points’ rotation from due-east (as is conventional). This, again, is as simple as passing the results object to the ssm_plot() function.
Conducting SSM for a group’s correlations with an external measure
Next, let’s say that we are interested in analyzing not the mean scores on the circumplex scales but rather their correlations with an external measure. This is sometimes referred to as “projecting” that external measure into the circumplex space. As an example, let’s project the NARPD variable, which captures symptoms of narcissistic personality disorder, into the circumplex space defined by the IIP-SC. Based on theory and previous findings, we can expect this measure to be associated with some general interpersonal distress and a style that is generally high in agency.
To conduct this analysis, we can start with the syntax from the mean-based analysis. All SSM analyses use the ssm_analyze() function and the data, scales, and angles are the same as before. However, we also need to let the function know that we want to analyze correlations with NARPD as opposed to scale means. To do this, we add an additional argument measures. Note that since correlations are already standardized, we don’t need to worry about standardizing the circumplex scales when measures is used.
Note that this output looks very similar to the mean-based output except that the statistical basis is now correlation scores instead of mean scores and instead of saying “Profile [All]” it now says “Profile [NARPD]”.
Visualizing the results with a table and figure
We can also create a similar table and figure using the exact same syntax as before. The ssm_table() and ssm_plot() functions are smart enough to know whether the results are mean-based or correlation-based and will work in both cases.
From the table, we can see that the model fit is good (>.80) and that all three SSM parameters are significantly different from zero, i.e., their confidence intervals do not include zero. Furthermore, the confidence intervals for the elevation and amplitude parameters are greater than or equal to 0.15, which can be interpreted as being “marked.” So, consistent with our hypotheses, NARPD was associated with marked general interpersonal distress (elevation) and was markedly distinctive in its profile (amplitude). The displacement parameter was somewhere between 100 and 120 degrees; to interpret this we would need to either consult the mapping between scales and angles or plot the results.
From this figure, it is very easy to see that, consistent with our hypotheses, the displacement for NARPD was associated with high agency and was somewhere between the “domineering” and “vindictive” octants.
Our goal is to eventually include all circumplex instruments in this package. However, due to time-constraints and copyright issues, this goal may be delayed or even impossible to fully realize. However, you can always preview the list of currently available instruments using the instruments() function. This function will print the abbreviation, name, and (in parentheses) the “code” for each available instrument. We will return to the code in the next section.
instruments()
+#> The circumplex package currently includes 13 instruments:
+#> 1. CSIE: Circumplex Scales of Interpersonal Efficacy (csie)
+#> 2. CSIG: Circumplex Scales of Intergroup Goals (csig)
+#> 3. CSIP: Circumplex Scales of Interpersonal Problems (csip)
+#> 4. CSIV: Circumplex Scales of Interpersonal Values (csiv)
+#> 5. IGI-CR: Interpersonal Goals Inventory for Children, Revised Version (igicr)
+#> 6. IIP-32: Inventory of Interpersonal Problems, Brief Version (iip32)
+#> 7. IIP-64: Inventory of Interpersonal Problems (iip64)
+#> 8. IIP-SC: Inventory of Interpersonal Problems, Short Circumplex (iipsc)
+#> 9. IIS-32: Inventory of Interpersonal Strengths, Brief Version (iis32)
+#> 10. IIS-64: Inventory of Interpersonal Strengths (iis64)
+#> 11. IIT-C: Inventory of Influence Tactics Circumplex (iitc)
+#> 12. IPIP-IPC: IPIP Interpersonal Circumplex (ipipipc)
+#> 13. ISC: Interpersonal Sensitivities Circumplex (isc)
If there are additional circumplex instruments you would like to have added to the package (especially if you are the author/copyright-holder), please contact me. Note that some information (e.g., item text and normative data) may not be available for all instruments due to copyright issues. However, many instruments are released as open-access and have full item text and normative data included in the package.
Loading a specific instrument
To reduce loading time and memory usage, instrument information is not loaded into R’s memory when the circumplex package is loaded. Instead, instruments should be loaded into memory on an as-needed basis. As demonstrated below, this can be done by passing an instrument’s code (which we saw how to find in the last section) to the instrument() function. We can then examine that instrument data using the print() function.
Note, however, that an error will result if the print() function (or any of the functions to be described later) is called before the instrument() function has loaded the data. Order of operations is important!
To examine the information available about a loaded instrument, there are several options. To print a long list of formatted information about the instrument, use the summary() function. This will return the same information returned by print(), followed by information about the instrument’s scales, rating scale anchors, items, and normative data set(s). The summary of each instrument is also available from the package reference page.
instrument("ipipipc")
+summary(ipipipc)
+#> IPIP-IPC: IPIP Interpersonal Circumplex
+#> 32 items, 8 scales, 1 normative data sets
+#> Markey & Markey (2009)
+#> <https://doi.org/10.1177/1073191109340382>
+#>
+#> The IPIP-IPC contains 8 circumplex scales.
+#> PA: Assured-Dominant (90 degrees)
+#> BC: Arrogant-Calculating (135 degrees)
+#> DE: Cold-Hearted (180 degrees)
+#> FG: Aloof-Introverted (225 degrees)
+#> HI: Unassured-Submissive (270 degrees)
+#> JK: Unassuming-Ingenuous (315 degrees)
+#> LM: Warm-Agreeable (360 degrees)
+#> NO: Gregarious-Extraverted (45 degrees)
+#>
+#> The IPIP-IPC is rated using the following 5-point scale.
+#> 1. Very Inaccurate
+#> 2. Moderately Inaccurate
+#> 3. Neither Inaccurate nor Accurate
+#> 4. Moderately Accurate
+#> 5. Very Accurate
+#>
+#> The IPIP-IPC contains 32 items (open-access):
+#> 1. Am quiet around strangers
+#> 2. Speak softly
+#> 3. Tolerate a lot from others
+#> 4. Am interested in people
+#> 5. Feel comfortable around people
+#> 6. Demand to be the center of interest
+#> 7. Cut others to pieces
+#> 8. Believe people should fend for themselves
+#> 9. Am a very private person
+#> 10. Let others finish what they are saying
+#> 11. Take things as they come
+#> 12. Reassure others
+#> 13. Start conversations
+#> 14. Do most of the talking
+#> 15. Contradict others
+#> 16. Don't fall for sob-stories
+#> 17. Don't talk a lot
+#> 18. Seldom toot my own horn
+#> 19. Think of others first
+#> 20. Inquire about others' well-being
+#> 21. Talk to a lot of different people at parties
+#> 22. Speak loudly
+#> 23. Snap at people
+#> 24. Don't put a lot of thought into things
+#> 25. Have little to say
+#> 26. Dislike being the center of attention
+#> 27. Seldom stretch the truth
+#> 28. Get along well with others
+#> 29. Love large parties
+#> 30. Demand attention
+#> 31. Have a sharp tongue
+#> 32. Am not interested in other people's problems
+#>
+#> The IPIP-IPC currently has 1 normative data set(s):
+#> 1. 274 American college students
+#> Markey & Markey (2009)
+#> <https://doi.org/10.1177/1073191109340382>
Specific subsections of this output can be returned individually using the scales(), anchors(), items(), and norms() functions. These functions are especially useful when you need to know a specific bit of information about an instrument and don’t want the console to be flooded with unneeded information.
anchors(ipipipc)
+#> The IPIP-IPC is rated using the following 5-point scale.
+#> 1. Very Inaccurate
+#> 2. Moderately Inaccurate
+#> 3. Neither Inaccurate nor Accurate
+#> 4. Moderately Accurate
+#> 5. Very Accurate
+
norms(ipipipc)
+#> The IPIP-IPC currently has 1 normative data set(s):
+#> 1. 274 American college students
+#> Markey & Markey (2009)
+#> <https://doi.org/10.1177/1073191109340382>
Some of these functions also have additional arguments to customize their output. For instance, the scales() function has the items argument, which will display the items for each scale when set to TRUE.
scales(ipipipc, items=TRUE)
+#> The IPIP-IPC contains 8 circumplex scales.
+#> PA: Assured-Dominant (90 degrees)
+#> 6. Demand to be the center of interest
+#> 14. Do most of the talking
+#> 22. Speak loudly
+#> 30. Demand attention
+#> BC: Arrogant-Calculating (135 degrees)
+#> 7. Cut others to pieces
+#> 15. Contradict others
+#> 23. Snap at people
+#> 31. Have a sharp tongue
+#> DE: Cold-Hearted (180 degrees)
+#> 8. Believe people should fend for themselves
+#> 16. Don't fall for sob-stories
+#> 24. Don't put a lot of thought into things
+#> 32. Am not interested in other people's problems
+#> FG: Aloof-Introverted (225 degrees)
+#> 1. Am quiet around strangers
+#> 9. Am a very private person
+#> 17. Don't talk a lot
+#> 25. Have little to say
+#> HI: Unassured-Submissive (270 degrees)
+#> 2. Speak softly
+#> 10. Let others finish what they are saying
+#> 18. Seldom toot my own horn
+#> 26. Dislike being the center of attention
+#> JK: Unassuming-Ingenuous (315 degrees)
+#> 3. Tolerate a lot from others
+#> 11. Take things as they come
+#> 19. Think of others first
+#> 27. Seldom stretch the truth
+#> LM: Warm-Agreeable (360 degrees)
+#> 4. Am interested in people
+#> 12. Reassure others
+#> 20. Inquire about others' well-being
+#> 28. Get along well with others
+#> NO: Gregarious-Extraverted (45 degrees)
+#> 5. Feel comfortable around people
+#> 13. Start conversations
+#> 21. Talk to a lot of different people at parties
+#> 29. Love large parties
An additional, though advanced, option for examining the available information about an instrument is to explore the instrument object itself. This can be done within R using the View() function. Note that the first letter in this function (V) must be capitalized. This will open up a data viewer window like the one shown below; it will give you full access to the information stored by the package, albeit in a “raw” format. Don’t worry if the image below is confusing or overwhelming; you never have to see it again unless you want to!
It is a good idea in practice to digitize and save each participant’s response to each item on an instrument, rather than just their scores on each scale. Having access to item-level data will make it easier to spot and correct mistakes, will enable more advanced analysis of missing data, and will enable latent variable models that account for measurement error (e.g., structural equation modeling). Furthermore, the functions described below will make it easy to transform and summarize such item-level data into scale scores.
First, however, we need to make sure the item-level data is in the expected format. Your data should be stored in a data frame where each row corresponds to one observation (e.g., participant, organization, or timepoint) and each column corresponds to one variable describing these observations (e.g., item responses, demographic characteristics, scale scores). The tidyverse packages provide excellent tools for getting your data into this format from a variety of different file types and formats.
For the purpose of illustration, we will work with a small-scale data set, which includes item-level responses to the Inventory of Interpersonal Problems, Short Circumplex (IIP-SC) for just 10 participants. As will become important later on, this data set contains a small amount of missing values (represented as NA). This data set is included as part of the circumplex package and can be loaded and previewed as follows:
For some forms of circumplex data analysis (e.g., analysis of circumplex fit) but not others (e.g., structural summary method), it can be helpful to transform item-level responses by subtracting each participant’s mean across all items from his or her response on each item. This practice is called “ipsatizing” or, more precisely, deviation scoring across variables. This practice will attenuate the general factor across all items and recasts the item-level responses as deviations from one’s own mean rather than absolute responses. To perform ipsatizing and create a new set of ipsatized responses to each item, use the ipsatize() function.
Above, we told the function to overwrite the original item variables with their ipsatized versions; new ipsatized variables (ending in _i) could have been appended to the data frame instead by changing the overwrite argument to FALSE. We also told it to calculate the mean for each observation after ignoring any missing values. We could have changed this by setting the na.rm argument to FALSE.
We can check that the ipsatization was successful by calculating the mean of each row (i.e., each participant’s mean response) in the original and ipsatized data frames. We do this below using the rowMeans() function; we also apply the round() function to make the results fit on one row. As expected, we find below that the mean of each participant is zero in the ipsatized data frame but not in the original.
For many forms of circumplex data analysis (e.g., structural summary method), it can be very helpful to summarize item-level responses by calculating scale scores. This is typically done by averaging a set of items that all measure the same underlying construct (e.g., location in the circumplex model). For example, the IIP-SC has 32 items in total that measure 8 scales representing octants of the interpersonal circumplex model. Thus, a participant’s score on each scale is calculated as the arithmetic mean of his or her responses to four specific items. Using the aggregate of multiple similar items produces scale scores with higher reliability than would be achieved by using only a single item per scale.
Although calculating the arithmetic mean of a handful of items is not terribly difficult mathematically, doing so manually (e.g., by hand) across multiple scales and multiple participants can be tedious and error-prone. To address these issues, the circumplex package offers the score() function, which automatically calculates scale scores from item-level data.
To demonstrate, let’s return to the raw_iipsc data set. We need to give the score() function a data frame containing the item-level data (i.e., the data set), a list of variables from that data frame that contain the item-level responses to be scored, and an instrument object containing instructions on how to score the data. In order for scoring to work properly, the list of items must be in ascending order from the first to the last item and the ordering of the items must be the same as that assumed by the package. Be sure to check your item numbers against those displayed by the items() function, especially if you shuffle your items.
The scale_scores data frame contains all the item-level data from item_level_csie, as well as the newly calculated scale scores. Note that the scale score variables were named using the scale abbreviations shown by the scales() function (i.e., two-letter abbreviations from PA to NO). You can customize the naming of these variables by using the prefix and suffix arguments from the score() function. We can select and view just the scale score variables using the select() function.
Note that the na.rm argument for the score() function defaulted to TRUE, which means that missing values were ignored in calculating the scale scores. This practice is common in the literature, but is technically a form of single imputation and thus can produce biased results when data are not missing completely at random (MCAR). Please examine and report the amount and patterns of missingness in your data.
@@ -459,59 +461,59 @@
Finally, it can often be helpful to transform scale-level data through reference to a normative or comparison sample. This is often called “standardizing” and involves subtracting the normative sample’s mean score on a scale from each participant’s score on that scale and then dividing this difference by the normative sample’s standard deviation. This rescales the scale scores to be in standard deviation units and to describe the magnitude of each participant’s difference from the normative average.
For many circumplex instruments, the data needed to perform standardization is included in its instrument object. Some instruments even have multiple (e.g., different or overlapping) normative samples for comparisons that are matched in terms of gender, age, or nationality. In selecting a normative sample to compare to, it is important to consider both the size and the appropriateness of the sample.
To demonstrate, let’s examine the normative data sets available for the IIP-SC. Below we see that there are two options: a rather large sample of American college students and a rather small sample of American psychiatric outpatients.
norms(iipsc)
+#> The IIP-SC currently has 2 normative data set(s):
+#> 1. 872 American college students
+#> Hopwood, Pincus, DeMoor, & Koonce (2011)
+#> <https://doi.org/10.1080/00223890802388665>
+#> 2. 106 American psychiatric outpatients
+#> Soldz, Budman, Demby, & Merry (1995)
+#> <https://doi.org/10.1177/1073191195002001006>
Assuming our example data also come from a non-psychiatric community sample of mostly college students, the first normative sample seems like a better choice, especially since it is so much larger and therefore subject to less sampling error. However, there may be times when the second normative sample would be the more appropriate comparison, even despite its smaller sample.
To transform the scale scores we calculated during the last section, we can call the standardize() function and give it the scale_scores object we saved the item-level and scale-level data within. We will save the output of this function to a data frame named z_scales to reflect the idea that standardized scores are often called “z-scores.”
Again, the output contains all the item-level, scale-level, and now the standardized scale-level variables. The new variables are named the same as the scale score variables except with a configurable prefix and suffix (by default, they are given only a suffix of _z). We can again use the select() function to view just the newly created standardized variables. These variables are the ones we are most likely to use in subsequent analyses (e.g., the structural summary method).
# Install release version from CRAN
+install.packages("circumplex")
+
+# Install development version from GitHub
+devtools::install_github("jmgirard/circumplex")
Removed several unit tests that were causing problems for CRAN checks
+
Update dependency versions and require R >= 3.4.0
+
Fix issues related to how R 4.0.0 handles S3 methods
+
Modernize ssm_plot() function to use new tidyr syntax
+
Update travis CI configuration to be more explicit
-
-
-circumplex 0.3.4 2019-12-05
+
+
+circumplex 0.3.5 2020-01-10
Minor improvements and fixes
+
Remove several unit tests that were causing problems for CRAN checks
+
+
+
+
+
+
+circumplex 0.3.4 2019-12-05
+
+
+
+Minor improvements and fixes
+
Adjust the test of quantile.radian() to account for changes to %% starting in R 3.6.1 Patched
Add the name of the package to the S3 class names (e.g., circumplex_radian instead of radian) to minimize the risk of overlapping classes between packages
Add some supplementary files to the R build ignore list to avoid notes during CRAN check
@@ -232,12 +251,12 @@
-
+
circumplex 0.3.3 2019-09-26
-
+
-Minor improvements and fixes
+Minor improvements and fixes
Add APA-style citations to instrument documentation in addition to DOI links.
Add “Instruments” menu to package website for viewing documentation pages.
@@ -247,7 +266,7 @@
-
+
circumplex 0.3.2 2019-08-21
@@ -257,9 +276,9 @@
New iitc provides instrument information for the Inventory of Influence Tactics Circumplex.
-
+
-Minor improvements and fixes
+Minor improvements and fixes
Fix CRAN warnings by setting LazyData: true.
Fix CRAN note by replacing relative URLs with absolute URLs.
@@ -270,12 +289,12 @@
-
+
circumplex 0.3.1 2019-05-15
-
+
-Minor improvements and fixes
+Minor improvements and fixes
Avoid a bug with dplyr 0.8.1 and S3 methods on Linux systems.
Update the web address for Johannes in the README document.
@@ -284,7 +303,7 @@
-
+
circumplex 0.3.0 2019-04-26
@@ -296,9 +315,9 @@
Added support for older versions of R (3.3.x).
-
+
-Minor improvements and fixes
+Minor improvements and fixes
Updated the “Introduction to SSM” vignette’s figures.
Replaced use of dplyr::funs() as this function is being deprecated.
@@ -311,7 +330,7 @@
-
+
circumplex 0.2.1 2018-11-29
@@ -322,9 +341,9 @@
Added open-access (i.e., full item text) to the iis32 and iis64.
-
+
-Minor improvements and fixes
+Minor improvements and fixes
iis32 item ordering and scoring now match the author’s version.
iis32 response anchors now range from 1 to 6 and match norms.
@@ -335,7 +354,7 @@
-
+
circumplex 0.2.0 2018-10-26
@@ -347,9 +366,9 @@
Added function for standardizing scale-level data using normative data.
-
+
-Minor improvements and fixes
+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.
@@ -363,7 +382,7 @@
-
+
circumplex 0.1.2 2018-08-06
@@ -374,9 +393,9 @@
ssm_plot() now uses dashed borders to indicate that a profile has low prototypicality/fit.
-
+
-Minor improvements and fixes
+Minor improvements and fixes
Fixed bug that prevented compilation on Solaris systems.
Fixed bug that prevented CRAN checks on old R versions.
diff --git a/docs/reference/iip64.html b/docs/reference/iip64.html
index 9b700304..dff461ba 100644
--- a/docs/reference/iip64.html
+++ b/docs/reference/iip64.html
@@ -17,23 +17,27 @@
-
+
-
+
-
+
+
+
+
+
-
-
+
+
-
+
-
-
+
+
@@ -42,7 +46,7 @@
-
+
@@ -53,7 +57,6 @@
that, although we have permission to provide some information about the
IIP-64, Mind Garden Inc. has exclusive rights to distribute it in full." />
-
@@ -71,7 +74,7 @@
-
+
diff --git a/docs/reference/instrument.html b/docs/reference/instrument.html
index 20c54f8f..b920361d 100644
--- a/docs/reference/instrument.html
+++ b/docs/reference/instrument.html
@@ -17,23 +17,27 @@
-
+
-
+
-
+
+
+
+
+
-
-
+
+
-
+
-
-
+
+
@@ -42,7 +46,7 @@
-
+
@@ -55,7 +59,6 @@
This function loads the information for a specific instrument into memory.
See the instruments function to list all available instruments." />
-
@@ -73,7 +76,7 @@
-
+