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 using principal components analysis, varimax rotation (replaceable by other rotations allowed in principal
), and automatic flagging (manual flagging is optional).
The following steps of the analysis correspond to separate functions: factor loadings for Q-sorts, 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
), and from both HTMLQ and FlashQ (import.htmlq
).
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.
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:
Q-sorts (import.q.sorts
)
Participant item feedback (import.q.feedback
)
Complete concourses (import.q.concourse
)
Item samples (build.q.set
)
A function to rename the factors in the results, with short, meaningful names (q.fnames
).
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:
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
.
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.
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:
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.
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 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 Zabala 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).
Zabala, A., 2014. qmethod: A Package to Explore Human Perspectives Using Q Methodology. The R Journal, 6(2):163-173. Available from: https://journal.r-project.org/archive/2014-2/zabala.pdf.
Zabala A. and Pascual, U., 2016. Bootstrapping Q Methodology to Improve the Understanding of Human Perspectives. PLoS ONE. Available from: http://goo.gl/KFyh5N.
Watts, S., and and P. Stenner, 2012. Doing Q Methodological Research: Theory, Method & Interpretation, London: Sage Publications Ltd.
Van Exel, J., and G. de Graaf, 2005. Q Methodology: A Sneak Preview Available from: https://qmethodblog.files.wordpress.com/2016/01/qmethodologyasneakpreviewreferenceupdate.pdf.
Brown, S. R., 1980. Political subjectivity: Applications of Q methodology in political science, New Haven, CT: Yale University Press. Available from: https://qmethodblog.files.wordpress.com/2016/01/brown-1980-politicalsubjectivity.pdf.
http://qmethod.org/ The website of the International Society for the Scientific Study of Subjectivity.
http://schmolck.org/qmethod Peter Schmolck's Q Method Page, with further references, datasets and the PQMethod software.
# NOT RUN {
data(lipset)
results <- qmethod(lipset[[1]], nfactors = 3, rotation = "varimax")
summary(results)
results
# }
Run the code above in your browser using DataLab