qmethod (version 1.8)

qmethod-package: Package for Q methodology analysis


Q is a methodology to study distinct perspectives existing within a group on a topic of interest. It is used across social, health, and environmental studies. See the references below for more details about the methodology.

This package performs the analysis of Q methodology data (both forced and non-forced distributions). The user can choose the extraction method (principal components analysis or centroid factor extraction) and the rotation method (none, varimax or other rotations, uncommon in Q but implemented via principal). The default analysis conducts automatic flagging, and manual flagging is optional.

The following steps of the analysis correspond to separate functions: automatic flagging of Q-sorts (qflag), z-scores and factor scores for statements (qzscores), distinguishing and consensus statements (qdc), and general characteristics of the factors (qfcharact). The function qmethod wraps them all.

The functions for each step may be used separately for advanced analysis, for example, for manual flagging (see details in qzscores).

The package also includes additional functions for the following:

  • Import data from PQMethod software (import.pqmethod), both HTMLQ and FlashQ (import.htmlq), and easy-htmlq (import.easyhtmlq) tools for online data collection of Q-sorts.

  • Export a plain-text report of the analysis for interpretation in two flavours (export.qm).

  • Generic methods to print.QmethodRes and plot.QmethodRes Q method results. The specific dotchart visualisation of Q results in plot.QmethodRes was first developed and introduced in this package, in preparation for the study in Zabala et al. (2017).

  • Functions to explore the analysis and facilitate interpretation:

    • explore automatic pre-flagging, (loa.and.flags)

    • to rename the factors in the results, with short, meaningful names (q.fnames).

  • Generate printable cards for the administration of a Q study. The function make.cards produces a PDF with full item wording and codes, ready for printout on business card templates that can be easily broken into individual Q-cards.

  • Several functions to aid reproducible research, by importing the following from raw, separate *.CSV or *.TEX files for each respondent or item:

  • An interactive Graphical User Interface with the basic functionality (runInterface)

Use help(package="qmethod") for a list of all the functions.


The functions for analysis use the terms standard in Q methodology. In addition, the optional functions to import raw data from separate *.CSV files (import.q.sorts, import.q.concourse, build.q.set, import.q.feedback) and the card printing function (make.cards) refer to items in three distinct ways:

  1. Item full wording, is the complete item, such as:

    "One small community of indomitable Q-methodologists ...". This item can be read in from individual *.TEX files by using import.q.concourse. The wording is not passed on to any other function, but can be readily retrieved from the object returned from import.q.concourse.

  2. The item handle is a shorthand way of referring to an item, which should be meaningful to the researcher (e.g. "life-with-q"). Item handles are researcher-facing and can be used to refer to items during data analysis. They are read in from the filenames of individual *.TEX files when using import.q.concourse. Handles can be used to identify items in other functions and their outputs. For example, the resulting array or matrix from import.q.sorts carries these handles as row names.

  3. The item ID is another shorthand way of referring to an item, that should be meaningless to humans (so as not to influence the participants in unintended ways), such as an arbitrary string of characters. Item IDs are participant-facing and are used to identify items during data entry. The item ID can take two forms, depending on function arguments specified by the user:

    1. Standard IDs (such as sta12, sta13) which are generated automatically in qmethod or can be provided by the user using the respective manual.lookup arguments in make.cards, import.q.sorts and import.q.feedback. See the documentation of these functions for details.

    2. A set of hexadecimal hashed IDs (such as ae128fs) can be automatically generated and expected by the functions make.cards, import.q.sorts and import.q.feedback if the argument manual.lookup remains empty and defaults to NULL. In that case, IDs are computed by 'summarising' the full item wordings (e.g.

      "Q Method is used by a crazy, but charming community ...") into a hexadecimal number (e.g. "ae128fs"), a process known as cryptographic hashing (for more details see digest)). These hash values change whenever anything in the full item wordings is changed, and allow a precise identification of different versions of an item. This function never exposes users to the hash values. Automatic, hashed IDs are generally recommended and easier to use, but some caveats apply (see make.cards).

For more information on this terminology and the rationale behind it, consider the best practices suggested by Maximilian Held on the data management page.

Suggested File Structure

For studies in which each Q-sort and item are kept in separate *.CSV files, the import functions import.q.sorts, import.q.concourse, build.q.set, import.q.feedback and the print function make.cards require a nested directory structure in the study folder. An example of such structure can be found in ../qmethod/extdata/importexample. Although recommended for complex studies, this structure is not necessary for using the data analysis functions or for exploring and exporting results.

If the suggested file structure is followed, the subdirectories for (within-subjects) conditions and languages are optional, and need to be used only if there are more than one condition and language, respectively. In such case, the arguments conditions and languages for the above import functions must be specified accordingly.

For more information on the file structure and the rationale behind it, consider the best practices suggested by Maximilian Held on the data management page.


A set of functions are available to perform bootstrapping with Q data (see 10.1371/journal.pone.0148087Zabala and Pascual (2016) Bootstrapping Q Methodology to Improve the Understanding of Human Perspectives. PLoS ONE for details). The main bootstrap functions are as follows:

  • qmboots performs a full bootstrap. It calls internally the functions qbstep (for each bootstrap step), and to either qindtest or qpcrustes in order to correct the alignment problem.

  • qmb.summary summarises the object resulting from qmboots into two tables: (1) summary of factor loadings (standard factor loadings, bootstrapped factor loadings, and flagging frequency) and (2) summary of statement scores (bootstrapped and standard z-scores, bootstrapped and standard factor scores, standard error of bootstrapped z-scores, and differences between standard and bootstrapped values).

  • qmb.plot plots an object resulting from qmb.summary in a figure designed for bootstrapped Q data (either the factor loadings or the statement z-scores).




Run this code
results <- qmethod(lipset[[1]], nfactors = 3, rotation = "varimax")
# }

Run the code above in your browser using DataCamp Workspace