*! Version 2.40 24MAY2022

Title

qfactor -- Q Factor analysis

Syntax

qfactor varlist [if] [in]
,
nfactor(#) [extraction(string) rotation(string) score(string)
esize(string) bipolar(string) stlength(#) minimum]

varlist includes Q-sorts that need to be factor-analyzed.

Description

qfactor performs factor analysis on Q-sorts. The command performs factor analysis based on principal
factor, iterated principal factor, principal-component factor, and maximum-likelihood factor extraction methods.
qfactor also rotate factors based on all factor rotation techniques available in Stata (orthogonal and oblique)
including varimax, quartimax, equamax, obminin, and promax.
qfactor displays the eigenvalues of the correlation matrix, the factor loadings, and the uniqueness of the variables.
It also provides number of Q-sorts loaded on each factor, distinguishing statements for each factor, and consensus statements.
qfactor is able to handle bipolar factors and identify distinguishing statements based on Cohen's effect size (d).

qfactor expects data in the form of variables and can be run for subgroups using “if” and “in” options.

nfactor(#) maximum number of factors to be retained

extraction(string) factor extraction method which includes:

pf principal factor
pcf principal-component factor
ipf iterated principal factor; the default

rotation(string) qfactor accommodates almost every rotation technique in Stata including:

none this option is used if no rotation is required

varimax varimax; varimax is the default option

quartimax quartimax

equamax equamax

promax(#) promax power # (implies oblique); default is promax(3)

oblimin(#) oblimin with gamma=#; default is oblimin(0)

target(Tg) rotate toward matrix Tg; this option accommodates theoretical rotation

score(string) it identifies how the factor scores to be calculated. The options include:

brown factor scores are calculated as described by Brown (1980); brown is the default approach.

regression regression scoring method

bartlett Bartlett scoring method

thompson Thompson scoring method

esize(string) it specifies how the distinguishing statements to be identified for each factor. The options include:

stephenson distinguishing statements are identified based on Stephenson's formula as described by Brown (1980); this is the default option.

any # for any # between zero and one (0<#≤1) distinguishing statements are identified based on Cohen's d.

bipolar(string) it identifies the criteria for bipolar factor and calculates the factor scores for any bipolar factor. Currently, bipolar() option works only with Brown’s factor scores.The options include:

0 or no indicates no assessment of a bipolar factor; the default option

any # any number more than 0 indicates number of negative loadings required for a bipolar factor.

stlength(#) it identifies the maximum length of characters for each statement to be displayed; the default length is 50 characters.

minimum a minimum amount of output is displayed which includes factor scores, distinguishing statements, and consensus statements}.

Options for factor extraction

pf, pcf, and ipf
indicate the type of extraction to be used. The default is ipf.

pf
specifies that the principal-factor method be used to analyze the correlation matrix.
The factor loadings, sometimes called the factor patterns, are computed using the
squared multiple correlations as estimates of the communality.

pcf
specifies that the principal-component factor method be used to analyze the correlation matrix.
The communalities are assumed to be 1.

ipf
specifies that the iterated principal-factor method be used to analyze the correlation matrix.
This reestimates the communalities iteratively. ipf is the default.

Stored results

In addition to the displayed results, qfactor stores two matrices in r().
The first matrix is r(fctrldngs) and its columns includes variables such as Q-sort number,
unrotated and rotated factor loadings, uniqueness and communality of each Q-sort,
and Factor which indicates which Q-sort was loaded on what factor. The second matrix
is r(fctrscrs) which stores factor scores for all statements. This matrix contains
z-scores and ranked scores for the extracted factors. These matrices can be retrieved
and used in subsequent analysis, e.g., to compare factors scores based on different
factor extraction techniques, to compare demographic and other background variables
among the extracted factors, or to graphically display rotated and unrotated factor loadings.

Examples of qfactor

mldataset.dta: This dataset includes 40 participants on their views on marijuana legalization.
The study was conducted using 19 statements. Each column in the dataset represents one Q-sort and Q-sorts are named qsort1, qsort2,…, qsort40.

The following commands conduct qfactor analysis to extract 3 principal component factors using varimax:

qfactor qsort1-qsort40, nfa(3) ext(pcf)

or

qfactor qsort*, nfa(3) ext(pcf)

The same as above using quartimax rotation:

qfactor qsort*, nfa(3) ext(pcf) rot(quartimax)

Same as above with varimax rotation but if there is 2 or more negative loadings on any factor it treats it as bipolar factor:

qfactor qsort1-qsort30, nfa(3) ext(pcf) bip(2)

Same as above without bipolar option but Cohen's d=0.80:

qfactor qsort1-qsort30, nfa(3) ext(pcf) es(0.80)

The following command runs qfactor on only 30 Q-sorts and uses iterated principal factors (ipf) to extract 3 factors using varimax rotation:

qfactor qsort1-qsort30, nfa(3) ext(ipf)

qfactor qsort1-qsort30, nfa(3)

The same as above but with 40 Q-sorts and promax(3) rotation:

qfactor qsort1-qsort40, nfa(3) rot(promax(3))

The following command extracts 3 principal component factors using varimax rotation and sets the length of
each statement to a maximum of 30 characters in the output:

qfactor qsort1-qsort40, nfa(3) ext(pcf) stl(30)

The following command extracts 4 principal component factors using varimax rotation. It displays a minimum amount of output which includes factor scores, distinguishing statements and consensus statements:

qfactor qsort1-qsort40, nfa(4) ext(pcf) min

Author

Noori Akhtar-Danesh (daneshn@mcmaster.ca), McMaster University, Hamilton, CANADA

Reference

Akhtar-Danesh N. qfactor: A command for Q-methodology analysis. The Stata Journal. 2018;18(2):432-446.