Factor Analysis and Dimension Reduction in R A Social Scientists Toolkit G David Garson Download
Factor Analysis and Dimension Reduction in R A Social Scientists Toolkit G David Garson Download
https://ebookbell.com/product/factor-analysis-and-dimension-
reduction-in-r-a-social-scientists-toolkit-g-david-
garson-46835528
https://ebookbell.com/product/latent-factor-analysis-for-
highdimensional-and-sparse-matrices-a-particle-swarm-
optimizationbased-approach-ye-yuan-47257438
https://ebookbell.com/product/a-stepbystep-approach-to-using-sas-for-
factor-analysis-and-structural-equation-modeling-second-edition-2nd-
edition-norm-orourke-4914228
https://ebookbell.com/product/latent-variable-models-and-factor-
analysis-a-unified-approach-3rd-edition-david-bartholomew-4307180
https://ebookbell.com/product/exploratory-and-confirmatory-factor-
analysis-understanding-concepts-and-applications-1st-edition-bruce-
thompson-1803512
Creating Shared Value As Future Factor Of Competition Analysis And
Empirical Evidence 1st Edition Benedikt Liel Von Auth
https://ebookbell.com/product/creating-shared-value-as-future-factor-
of-competition-analysis-and-empirical-evidence-1st-edition-benedikt-
liel-von-auth-5608678
https://ebookbell.com/product/a-stepbystep-guide-to-exploratory-
factor-analysis-with-r-and-rstudio-marley-w-watkins-22497690
https://ebookbell.com/product/factor-analysis-at-100-historical-
developments-and-future-directions-1st-edition-robert-cudeck-1342886
https://ebookbell.com/product/modern-multifactor-analysis-of-bond-
portfolios-critical-implications-for-hedging-and-investing-1st-
edition-giovanni-barone-adesi-6840464
https://ebookbell.com/product/foundations-of-factor-analysis-second-
edition-2nd-edition-stanley-a-mulaik-4765512
Factor Analysis and Dimension
Reduction in R
Factor Analysis and Dimension Reduction in R provides coverage, with worked examples, of
a large number of dimension reduction procedures along with model performance metrics
to compare them. Factor analysis in the form of principal components analysis (PCA) or
principal factor analysis (PFA) is familiar to most social scientists. However, what is less
familiar is understanding that factor analysis is a subset of the more general statistical family
of dimension reduction methods.
The social scientist’s toolkit for factor analysis problems can be expanded to include the
range of solutions this book presents. In addition to covering FA and PCA with orthogonal
and oblique rotation, this book’s coverage includes higher-order factor models, bifactor
models, models based on binary and ordinal data, models based on mixed data, generalized
low-rank models, cluster analysis with GLRM, models involving supplemental variables or
observations, Bayesian factor analysis, regularized factor analysis, testing for unidimension-
ality, and prediction with factor scores. The second half of the book deals with other proce-
dures for dimension reduction. These include coverage of kernel PCA, factor analysis with
multidimensional scaling, locally linear embedding models, Laplacian eigenmaps, diffusion
maps, force directed methods, t-distributed stochastic neighbor embedding, independent
component analysis (ICA), dimensionality reduction via regression (DRR), non-negative
matrix factorization (NNMF), Isomap, Autoencoder, uniform manifold approximation and
projection (UMAP) models, neural network models, and longitudinal factor analysis mod-
els. In addition, a special chapter covers metrics for comparing model performance.
Presented in color with R code and introduction to R and RStudio, this book will be suit-
able for graduate-level and optional module courses for social scientists, and on quantitative
methods and multivariate statistics courses.
G. David Garson
Designed cover image: © Getty
First published 2023
by Routledge
4 Park Square, Milton Park, Abingdon, Oxon OX14 4RN
and by Routledge
605 Third Avenue, New York, NY 10158
Routledge is an imprint of the Taylor & Francis Group, an informa business
© 2023 G. David Garson
The right of G. David Garson to be identified as author of this work has
been asserted in accordance with sections 77 and 78 of the Copyright,
Designs and Patents Act 1988.
All rights reserved. No part of this book may be reprinted or reproduced or
utilised in any form or by any electronic, mechanical, or other means, now
known or hereafter invented, including photocopying and recording, or in
any information storage or retrieval system, without permission in writing
from the publishers.
Trademark notice: Product or corporate names may be trademarks or
registered trademarks, and are used only for identification and explanation
without intent to infringe.
British Library Cataloguing-in-Publication Data
A catalogue record for this book is available from the British Library
DOI: 10.4324/9781003279693
Typeset in Bembo
by codeMantra
Access the Support Material: https://www.routledge.com/9781032246697
“This book is dedicated to my beloved wife, Kathryn Kallio, who
has supported me so well in this project as in everything in my
life.” – Dave Garson, May 2022
Contents
PART I
Multivariate analysis of factors and components 1
References 545
Index 555
Figures
Factor analysis in the form of principal components analysis (PCA) or principal factor
analysis (PFA, aka common factor analysis) is familiar to most social scientists. How-
ever, what is less familiar is the understanding that factor analysis is a subset of the more
general statistical family of dimension reduction methods. This book provides coverage,
with worked examples, of a large number of dimension reduction procedures. In addi-
tion, model performance metrics to compare procedures are detailed, an essential aspect
covered little if at all in most texts on factor analysis. Moreover, by taking advantage of a
wide variety of R language statistical packages, this book highlights underutilized capa-
bilities of even traditional PCA and PFA procedures. Features of this book include ex-
plicit comprehensive coverage of the data assumptions of factor procedures; adaptation
of factor methods to binary, ordinal, and categorical data; residual and outlier analysis;
and visualization of factor results. Final chapters treat integration of factor analysis with
neural network and time series methods.
As indicated in the subtitle of this book, its purpose is to expand the number of tools
in the toolkit of the social scientist challenged with dealing with factor-related research
questions. These questions, which are outlined in Chapter 1, often go to the heart of
what social science is about. Methods in this book are needed whenever the research
question involves any of the following four crucial issues:
1 How many dimensions does the outcome of interest have, and does this number of
dimensions conform to existing theory?
2 How may a large number of measurements (e.g., 80 survey questions) be reduced to
a much smaller number of underlying dimensions (e.g., six constructs) for purposes
of more informative modeling? How can the convergent and discriminant validity
of scales for these constructs be established?
3 How may subjects, participants, or clients be segmented into meaningful groups?
4 How may groups be compared cross-sectionally or over time based on differences
in their factor structure?
In addition, factor methods may be used to predict a dependent variable, impute missing
values, identify outliers, analyze residuals, and uncover common method bias.
For the social scientist, the teaching and using of research methods has been a con-
stant process of learning new tools and procedures. As social scientists we need to ride
the wave of the paradigm shift associated with data analytics and the R language, not
fear the learning curve all new things bring with them. I hope this book can be a small
xviii Preface
contribution to understanding of one of the most important domains of statistical anal-
ysis for social science topics, that of factor analysis and dimension reduction.
G. David Garson
School of Public and International Affairs
North Carolina State University
May, 2022
Email: [email protected]
Acknowledgments
I would like to thank the dozens of reviewers, anonymous and otherwise, who provided
valuable feedback on the proposal for this work, and for the work itself, though all errors
are my own, of course. The extensive R community is something all authors using R,
myself included, must acknowledge and praise. The authors of R packages are too nu-
merous to enumerate here but are listed in the “Authors” section of the “Description”
file of their respective online documentation (in RStudio, select the “Packages” tab,
then click on the package name).
Part I
Multivariate analysis of
factors and components
1 Factor analysis
Research questions it addresses
Introduction
Factor analysis is used to uncover the dimensions or latent structure of a set of variables.
It reduces the high-dimensional attribute space associated with a larger number of ob-
served variables in the raw data to a low-dimensional space characterized by a smaller
number of factors or components. As such it is typically a “non-dependent” procedure
which does not assume any particular measured variable is the outcome or dependent
variable (DV). However, factor scores may be saved for each observation and may be
used as predictors or DVs in a model. In a survey instrument with 80 items, for instance,
factor analysis might reduce attribute space to seven factors, one of which is an outcome
variable of interest. Whereas a model with 80 nodes might be near-uninterpretable, a
model with seven factors may provide what is needed to throw light on some phenom-
enon of research interest.
The hypothetical 80 survey items are examples of “indicator” variables. Synonyms
are observed variables, measured variables, or manifest variables. Conventionally, the
factor or component is seen as the “reality” which causes the values of indicators. For
instance, “job satisfaction” may be a factor and various survey items pertaining to job
satisfaction may reflect the abstract but real construct of job satisfaction. For this reason,
the observed variables may be called “reflective indicators” and conceptually the arrows
in the graphical representation of the factor model go from job satisfaction to appropri-
ate indicators.
In contrast, in the structural equation modeling (SEM) approach to confirmatory
factor analysis (CFA), the model may also be reflective but it is also possible to be “form-
ative”, with the arrows going from the indicators to the factor. Formative models imply
the indicators constitute the factor. For instance, if the factor is “philanthropy”, the
indicators might be “Dollars given to religion”, “Dollars given to education”, “Dollars
given to health causes”, …, “Dollars given to other”. In formative models, it is im-
portant that the indicators be comprehensive (hence the inclusion of an “other” item).
Leaving one out changes the meaning of “philanthropy”. In comparison, in the usual
reflective model, the indicators only have to be representative of the construct, not
comprehensive, and in principle leaving one out does not change the meaning of the
construct. In modeling terms, a principal component analysis (PCA) model’s arrows
also go from the observed measures to the component and but they are not viewed as
formative. Rather than seeing a PCA component as being constituted by its indicators,
components are seen as being determined by a linear variate of the observed measures,
which may be representative or comprehensive.
DOI: 10.4324/9781003279693-2
4 Multivariate analysis of factors and components
The origins of factor analysis are often attributed to Charles Spearman (1904) but
many methodologists have contributed to its evolution. Notable among these was
Louis Leon Thurstone (1931, 1935, 1937, 1940, 1947), a pioneer in the field of psy-
chometrics. An important advocate of factor analysis in social science and inventor of
the screen test was the British-American psychologist Raymond Cattell (1952, 1978).
Also in psychology, the study of factor analysis has been closely tied to the study of
human cognitive abilities. Critical contributions were made in this area by John Car-
roll (1989, 1993).
Factor analysis is typically used for exploratory purposes. Exploratory factor analysis
(EFA) comes in various flavors:
1 PCA is used primarily for dimension reduction with dimensions called “compo-
nents”. There is a version used with categorical data called categorical PCA (CAT-
PCA) as well as versions for binary or mixed-level data.
2 Principal or common factor analysis (PFA) is used primarily for causal interpreta-
tion, with dimensions called “factors”. Sometimes PFA is labeled simply “factor
analysis” but in this volume, we use “factor analysis” as an umbrella term for all
types. SEM uses a type of PFA and in the context of SEM, factors are called “latent
variables”.
3 More broadly, any procedure which maps data from observed high-dimensional
space to low-dimensional factor or component space is a form of dimension reduc-
tion. This mapping process is called “embedding”, a term which shows up in the
name of some procedures (e.g., “locally linear embedding” or “stochastic neighbor
embedding”).
In contrast to EFA, which does not require the researcher to posit the number or la-
beling of factors beforehand, CFA does. CFA is most commonly a subset of SEM and,
while highlights are outlined in this volume, CFA is treated much more fully in Garson
(2018), Structural Equation Modeling, among other SEM texts.
The R language has a very broad array of tools for factor analysis and dimension
reduction, many of which are explained in this book. A basic introduction to R and
RStudio is presented in Appendix 2 of this book. In addition, the applications in later
chapters of this book provide step-by-step hands-on explanations for the R code under-
lying each example and even each figure in the book.
# Obtain eigenvalues for the male set, based on the correlation ma-
trix excluding sex (col. 11)
maleEigen <- base::eigen(stats::cor(malemusic[,-11]))
maleEigen$values
[Output:]
[1] 3.0570210 1.5452578 1.4870934 0.9212345 0.6917717
[6] 0.5831385 0.5447392 0.4292571 0.3965653 0.3439216
# Run a common factor analysis on the males. Ask for three factors
based on eigenvalues >= 1.
maleResults <- psych::fa(malemusic[,-11], nfactor=3,
rotate=”varimax”)
maleResults
[Partial output:]
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR3 MR2 h2 u2 com
bigband 0.58 0.13 0.32 0.46 0.54 1.7
blues 0.26 0.61 0.25 0.50 0.50 1.7
blugrass 0.13 0.06 0.63 0.41 0.59 1.1
classicl 0.78 0.07 -0.14 0.63 0.37 1.1
country -0.06 -0.06 0.69 0.48 0.52 1.0
hvymetal -0.11 0.39 -0.13 0.18 0.82 1.4
jazz 0.41 0.55 0.02 0.48 0.52 1.8
musicals 0.72 0.04 0.08 0.53 0.47 1.0
opera 0.71 0.08 0.04 0.51 0.49 1.0
rap 0.05 0.49 0.02 0.24 0.76 1.0
…
Cumulative Var 0.22 0.33 0.44
# Run a common factor analysis on the females. Ask for four factors
based on eigenvalues >= 1.
femaleResults <- psych::fa(femalemusic[,-11], nfactor=4,
rotate=”varimax”)
femaleResults
[Partial output:]
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 MR4 h2 u2 com
bigband 0.56 0.20 0.33 -0.26 0.54 0.46 2.4
blues 0.14 0.91 0.12 0.02 0.87 0.13 1.1
blugrass 0.29 0.15 0.68 0.01 0.57 0.43 1.5
classicl 0.70 0.17 -0.01 0.01 0.52 0.48 1.1
country -0.03 -0.08 0.55 -0.08 0.31 0.69 1.1
hvymetal -0.02 0.02 -0.02 0.44 0.19 0.81 1.0
jazz 0.23 0.57 -0.07 0.08 0.39 0.61 1.4
musicals 0.67 0.15 0.11 -0.18 0.51 0.49 1.3
opera 0.70 0.08 0.06 0.15 0.52 0.48 1.1
rap -0.01 0.04 -0.06 0.48 0.23 0.77 1.0
…
Cumulative Var 0.19 0.32 0.41 0.47
For the sample “music” data, two of the primary comparisons between the male and
female subsets are:
1 The two genders do not have the same factor structure on the music items. Four
factors are required to explain 47% of the variance in the data for females, while
three factors are required to explain 44% of the variance for males.
2 For females heavy metal and rap are most associated with their own separate factor,
while for males both of these music genres are most associated with a factor with
which jazz and blues are also most associated.
While neither the female nor the male factor models may be considered strong (neither
explains 50% or more of the variance in the 12 measured music indicator variables),
there are clear differences between groups which may be of interest to the researcher.
1 Factors and factor scores may be computed without TestOutcome, which is treated
as a supplemental variable not used in creating the factors. After factor analysis,
TestOutcome may be predicted from factor scores a cross-validation design. The
predictive model may have greater stability because causes reflect constellations of
causes (the factors) and do not rely on noise-prone single raw items. This is dis-
cussed in Chapter 10.
2 The “psych” package supports the principal() function for PCA and the fa()
function for PFA (common factor analysis). Its predict.psych() function “finds
predicted factor/component scores from a factor analysis or components analysis of
data set A predicted to data set B.” The usage is:
base::library(psych)
stats::predict(object, data, old.data, ...)
For information, type:
base::library(psych)
utils::help(predict.psych)
Notes
1 Running factor analysis on two groups means each analysis is based on a fraction of the
total cases in the data, which may make findings of non-significance more common. In
contrast, multigroup CFA is based on the total of cases across groups. There are many other
differences between the two approaches. The approach illustrated in this section should be
regarded as exploratory.
2 Zev Ross has posted a list of GIS packages for R: https://www.zevross.com/blog/2019/05/01/
unscientific-list-of-popular-r-packages-for-spatial-analysis/.
3 install.packages(“remotes”)
remotes::install_github(“James-Thorson/spatial_factor_
analysis”)
2 Assumptions and limitations of
factor analysis
Introduction
All statistical methods have assumptions and limitations, and factor analysis and dimen-
sion reduction procedures are no exception. In this chapter, we seek to treat the most
important considerations. Additional discussion of assumptions and limitations also oc-
curs in later chapters with regard to specific procedures (e.g., kernel PCA discussed in
Chapter 11 is a nonlinear approach which does not have the same assumptions about
linearity as does ordinary principal components analysis). Attending to the assump-
tions and limitations of factor analysis is not “fine print” which may be safely ignored.
Rather, the content in this chapter is critical to the proper use of factor analysis and
avoiding common types of misuse.
base::library(psych)
psych::KMO(USArrests)
[Output:]
Kaiser-Meyer-Olkin factor adequacy
Call: psych::KMO(r = USArrests)
Overall MSA = 0.65
MSA for each item =
Murder Assault UrbanPop Rape
0.62 0.64 0.50 0.78
DOI: 10.4324/9781003279693-3
14 Multivariate analysis of factors and components
The usual cutoff for judging data to be suitable for factor/component analysis is that the
overall MSA should be 0.60 or higher. For the USArrests data, it is 0.65 which meets the
KMO criterion. If MSA were lower, one strategy would have been to drop the variable
with the lowest MSA (here, UrbanPop), then compute KMO again, and continue one
variable at a time until overall MSA rises to 0.60 or higher. Another rule of thumb is to
drop variables with MSA < 0.60.
Another screening method for exploring whether underlying dimensions may be
present is to see if the correlation matrix has several coefficients of 0.30 or higher (Hair
et al., 2019; Tabachnick & Fidell, 2019). This can be done by creating a correlogram
with the corrplot() command from the “corrplot” package or by creating a corre-
lation network plot using the network_plot() command from the “corrr” package.
In R, there are several alternative ways to plot or graph correlations, including cor-
Plot() from the “psych” package. We use the “USArrests” data as an example since,
with only four variables (fewer than recommended for actual factor analytic research),
output is easier to understand. With a large data frame, the methods below become even
more useful. “USArrests” is part of R’s built-in “datasets” package.
Setup for the correlogram table in Figure 2.1:
First, we create the correlation matrix. This does not filter out correlations < 0.30 but
correlations near 0 are color-coded white and do not show.
Alternatively, we may create a correlation network diagram with the same information
but in a more visual format by using the network_plot() command from the “corrr”
package, resulting in Figure 2.2.
utils::data(USJudgeRatings)
dat <- USJudgeRatings # Copy to shorter name for convenience
base::options(digits = 3)
base::library(sjmisc) # Used for binning (must be installed
first)
x <- dat$INTG # Copy INTG to shorter name for convenience
y <- dat$RTEN # Copy RTEN to shorter name for convenience
That is, dichotomous data tend to yield many factors (by the usual Kaiser criterion), and
many variables loaded on these factors (by the usual 0.40 cutoff ), even for randomly
generated data. Chapter 8 of this book addresses factor analysis adapted for binary items.
Problems arise even when the number of categories is greater than two. Spurious
factors may be created not because items are similar in meaning but because they are
similar in difficulty (Gorsuch, 1974; Lawrence et al., 2004). Treating ordinal variables
as interval is a form of measurement error and hence involves attenuation of correla-
tion. This is why basing exploratory factor analysis (EFA) on a matrix of polychoric
20 Multivariate analysis of factors and components
correlations, which are designed for ordinal data, results in higher factor loadings and
higher eigenvalues as a rule. Monte Carlo studies by Joreskog and Sorbom (1986) uphold
the desirability of basing EFA on polychoric matrixes when using ordinal data, as does
research by Muthen and Kaplan (1985) and by Gilley and Uhlig (1993). This is treated
in a later section of this book on “Polychoric and heterogeneous PCA”.
Polychoric correlation
For ordinal and mixed data, some researchers prefer to input a polychoric correlation
matrix rather than use a Pearsonian matrix. Polychoric correlation matrices can be
created as illustrated below. We use the “music” data object created below to illustrate,
computing a polychoric correlation matrix using the corCi() function of the “psych”
package. Note that there is also a polychoric() function in the “psych” package as
well, but it will not work if a variable has more than 8 levels. This topic is explored more
fully in Chapter 8 in its section on “PCA for mixed data levels”.
# Step 1: Load the psych package, from William Revelle (2019, 2021).
base::library(psych)
# Step 2: Set the working directory and read in the “music” data.
base::setwd(“C:/Data”)
music <- utils::read.csv(“musicvars.csv”, header=TRUE, sep = “,”,
stringsAsFactors=TRUE)
stats::cor(music2$bigband,music2$blues,use=”complete.obs”,
method=”spearman”)
# Output:
[1] 0.275061
Linearity
Factor analysis is based on correlation or covariance, both of which assume linearity.
Standard PCA therefore is a linear procedure though, as we will see, there are nonlin-
ear versions of PCA. In its usual form, PCA assumes (1) a linear relationship between
measured variables and the factor/component they represent, and (2) linearity is in-
variant across any groupings of observations (Fabrigar & Wegener, 2012; Hair et al.,
2019). Scatterplot should not reveal any marked departure from linearity. Note that the
smaller the sample size, the more important it is to screen data for linearity. Scatterplots
showing linearity or lack thereof may be created with the pairs.panels() command
from the “psych” package, among other ways. This is illustrated later in this book. The
linearity assumption notwithstanding, even using standard PCA, as with multiple linear
regression, nonlinear transformation of selected variables may be a pre-processing step.
Multivariate normality
Multivariate normal distribution of data is required for significance tests related to
standard PCA and PFA. If significance testing is not needed by the researcher, as when
data are a complete enumeration of the universe of interest, factor analysis does not
require distributional assumptions except variables should have the same distribution
because variables from different distributions cannot correlate at a 1.0 level even when
both are perfectly ordered from low to high values. Note also that a less-used variant of
factor analysis, maximum likelihood factor analysis, does assume multivariate normal-
ity. The smaller the sample size, the more important it is to screen data for normality.
Nonetheless, normality is not considered one of the critical assumptions of factor anal-
ysis. Tabachnick and Fidell (618) write, “To the extent that normality fails, the [factor
analysis] solution is degraded but may still be worthwhile.”
The normality assumption particularly affects significance testing of coefficients. If
one is just interested in clustering factors or developing factor scores, significance test-
ing may not be needed, provided variables are not heavily skewed or kurtotic or from
distributions with markedly different shapes. In correlation, significance testing is used
with random samples to determine which coefficients cannot be assumed to be different
from zero. However, in factor analysis, the issue of which variables to drop is assessed by
identifying those with low communalities since these are the ones for which the factor
model is “not working.” Communalities are a form of effect size coefficient, whereas
significance also depends on sample size. As noted below, it is still true that factor anal-
ysis also requires adequate sample size, in the absence of which the factor scores and
communalities may be unreliable. If variables come from markedly different underlying
Assumptions and limitations of factor analysis 23
distributions, correlation and factor loadings will be attenuated as they will be for other
violation of factor analysis assumptions since violations represent measurement error.
Normality is often assessed using a Q-Q (quantile-quantile) plot. The Q-Q plot tests
if two data series (e.g., observed and estimated data) have the same or a similar distri-
bution. An ideally normal distribution has all points on or very close to the 45-degree
line in the Q-Q plot. Below we produce a Q-Q plot for the variable “Murder” using
the mardia() command from the “psych” package. The data are in “USArrests”, which
is a data frame in R’s built-in datasets library. The Q-Q plot is shown in Figure 2.4.
base::library(psych)
utils::data(USArrests)
psych::mardia(USArrests$Murder, plot=TRUE)
[Output other than the plot not shown].
The mardia() command also outputs numeric tests of multivariate skewness and kur-
tosis, both forms of non-normality. These are discussed in the following subsection.
While it can be seen in Figure 2.4 that there is a departure from normality on the low
end of the range of values for “Murder”, most points roughly follow the 45-degree line.
The numeric tests of skewness and kurtosis suggest both are within acceptable bounds.
Figure 2.4 Q-Q plot of “Murder” from the “USArrests” data frame.
24 Multivariate analysis of factors and components
low values in the first are perfectly paired with low values in the second. Also, if one
variable has positive skew and a second variable has negative skew, their correlation is
attenuated and analysis is weakened. Note that though high skew is more often checked
in articles which appear in the literature, high kurtosis can affect correlation and there-
fore factor analysis even more.
So what is the cutoff for too much skew or kurtosis? A widely accepted rule of thumb
is that skew should not be outside the range of plus and minus 2 (some say 3), and that
univariate kurtosis should not be greater than 7.0 (Curran, West, & Finch, 1996; Ban-
dalos, 2018). Some say univariate kurtosis need only be between plus and minus 10.
For multivariate kurtosis, kurtosis should not be greater than 3.0 to 5.0 (Bentler, 2005;
Mueller & Hancock, 2019).
For a perfectly normal distribution, skew is 0 and univariate kurtosis is 3. Univari-
ate skew and kurtosis may be checked in R with the describe() command from the
“psych” package. This is illustrated below for the variable “Murder” from the “USAr-
rests” dataset in R’s built-in “datasets” package. The USArrests data have no missing
values.
base::library(psych)
utils::data(USArrests)
psych::describe(USArrests$Murder)
[Output:]
vars n mean sd median trimmed mad
X1 1 50 7.79 4.36 7.25 7.53 5.41
min max range skew kurtosis se
X1 0.8 17.4 16.6 0.37 -0.95 0.62
With skew = 0.37 and kurtosis = −0.95, the variable “Murder” is not considered se-
verely skewed or kurtotic.
The describe() function gives univariate tests of skew and kurtosis. A stricter
multivariate criterion for skew and kurtosis is Mardia’s test, also implemented by the
“psych” package (see Mardia, 1970). Note that the mardia() command would accept
a data frame and all its variables as input, such as USArrests, giving overall skew and
kurtosis tests for all four variables in USArrests.
psych::mardia(USArrests$Murder, plot=FALSE)
[Output:]
Mardia tests of multivariate skew and kurtosis
Use describe(x) the to get univariate tests
n.obs = 50 num.vars = 1
b1p = 0.14 skew = 1.14 with probability <= 0.57
small sample skew = 1.29 with probability <= 0.51
b2p = 2.05 kurtosis = -1.37 with probability <= 0.1
Mardia’s skew statistic is 1.14, indicating absence of severe departure from normality.
Mardia’s kurtosis = −1.37, also indicating a lack of severe departure from normality. If
sample size is small (e.g., <20) then the small sample corrected skew value would be
used, but in this case, the inference would be the same. Both p-values of skewness and
Assumptions and limitations of factor analysis 25
kurtosis statistics should be greater than 0.05, which they are here, to conclude the input
data are multivariate normal.
Homoskedasticity
In regression, homoskedasticity means that error variance should be the same across the
range of the outcome variable. If data are heteroskedastic the regression line fits some
ranges better than others and the estimate of the DV is a “bad average” of fit. Since fac-
tors are regression-like linear functions of measured variables, homoskedasticity of the
relationship is also assumed. However, homoskedasticity is not considered a critical as-
sumption of factor analysis if heteroskedasticity is not extreme. Lewin-Koh and Amem-
iya (2003; see also Jones, 2001) introduced model-fitting procedures for heteroskedastic
factor analysis but these are not yet widely available in statistical software, including R,
at least at this writing.
No influential outliers
Outlying observations can impact correlations heavily and thus distort factor analysis.
There are four common strategies for handling observation-level outliers:
1 Delete them. However, as the outliers are usually real data rather than coding
errors, deletion is usually disparaged.
2 Run with and without outliers. This have-it-both-ways strategy highlights the
effect of outliers but also shows sample results with outliers removed.
3 Run without outliers but analyze outliers as a separate group. This shows how the
model applied to most cases differs from the model applied to outliers. The danger
is that the outlier model may be based on a few cases.
4 Run the whole sample, outliers included, but discuss the bias effects of the outliers.
The first step in checking for outliers is to run frequencies on one’s variables to check for
out-of-range values due to data entry errors. Typically such variables are set to missing
(NA in R), not removed from the dataset. To flag outliers not due to data entry error,
one may use Mahalanobis distance, leverage, or other influence measures to identify
cases which are multivariate outliers, then possibly remove them from the analysis prior
to factor analysis. As removal is controversial (after all, outliers are real data), alterna-
tively one may create a dummy variable set to 1 for cases with high Mahalanobis dis-
tance and set to 0 for other cases, then regress this dummy on all other variables. If this
regression is non-significant (or simply has a low R-squared for large samples) then the
outliers are judged to be close to random and there is less danger in retaining them. The
ratio of the beta weights in this regression indicates which variables are most associated
with the outlier cases.
One method of identifying outliers is to use boxplots such as that in Figure 2.5. The
boxplot() function is part of R’s built-in “graphics” package. This shows that there
are two outliers for the variable “Rape” in the data frame “USArrests”, which is one
of the datasets in R’s built-in “datasets” package. The R code below not only produces
the boxplot but also lists the outlier values and the rows in USArrests which contain
26 Multivariate analysis of factors and components
them. We find that the two outliers are rows 2 and 28 in the USArrests data frame,
corresponding to Alaska and Nevada.
utils::data(USArrests)
boxvalues <- graphics:: boxplot(USArrests$Rape,
plot=TRUE,
pch=16,
cex=1.5,
whiskcol = “blue”,
outcol=”red”,
boxfill=”dodgerblue”,
main=”Boxplot of Rape, USArrests data”)
boxvalues$out
[Output:]
[1] 44.5 46.0
In Figure 2.5, the blue box shows the distance from the first to third quartile. The
horizontal black line in the middle is the median. The horizontal whiskers at the top
and bottom show the range of the data when outliers are excluded. The red dots are the
outliers. Outliers are defined by the interquartile range (IQR) criterion. The IQR is the
distance between the first (25th percent) quartile and the third (75th percent) quartile.
Outliers are points which are more than 1.5 * IQR below the first quartile or 1.5 * IQR
Assumptions and limitations of factor analysis 27
above the third quartile. Some scholars (e.g., Streiner, 2018) prefer the more conserva-
tive definition which identifies outliers as points outside 2.2 * IQR.
The IQR criterion is a univariate method of identifying outliers. A multivariate
method of spotting outliers is to use Mahalanobis distance (D2). The mahalanobis()
function calculates D2 and is part of R’s built-in “stats” package. The general format for
this command is mahalanobis(x, center, cov), where x is the data in data.frame
or matrix format, center is a vector of means of the variables, and cov is the covariance
matrix. For the same example USArrests data, the command thus is:
utils::data(USArrests)
D2values <- stats::mahalanobis(USArrests, base::colMeans(USArrests),
stats::cov(USArrests))
D2values
[Partial output:]
Alabama Alaska Arizona Arkansas
2.3361665 15.1680638 5.7240749 1.4744001
…
Vermont Virginia Washington West Virginia
7.1116744 0.2960040 2.2992245 3.8954199
Wisconsin Wyoming
2.3234779 0.5746895
As an outlier criterion, we can create p-values to flag cases which are significant based
on the size of their D2 values. The p-value is calculated with the pchisq() function
from R’s “” package, based on the chi-square statistic of the Mahalanobis distance with
k − 1 degrees of freedom, where k is the number of variables (4 for USArrests).
Finally, list the outliers, which are the states with significant p-values. Typically for this
purpose, a conservative alpha value is used, such as the 0.001 level. For these data, there
are no 0.001 outliers. Below we show the 0.01 and 0.05 outliers. We use the subset()
function, which is part of R’s “base” package.
As a further consideration, extreme outliers can distort the D2 statistic itself, leading
some researchers to prefer using “robust Mahalanobis distances” (DeSimone, Harms, &
DeSimone, 2015). Robust Mahalanobis distances are calculated by the “faoutlier” pack-
age (Chalmers & Flora, 2015). The method=”mcd” option below specifies the minimum
covariance determinant method.
The faoutlier print method lists in descending order the row numbers of the states
with the most significant robust Mahalanobis distances. For the example data, the first
eight are below p = 0.001 and may be considered outliers by this criterion. The most
outlying case is row 2 in USArrests, which is Alaska. The p <= 0.001 threshold is rec-
ommended by Hair et al. (2019) and Tabachnick and Fidell (2019).
The outlier() command for the “psych” package will also plot and label cases (here,
states) which are multivariate outliers based on Mahalanobis distance (D-squared). The
bad=5 option specifies that the five most outlying states be labeled (for these data, this
is 10% of the sample). The resulting plot is Figure 2.6.
Assumptions and limitations of factor analysis 29
É
Észak felől végre a nagy orosz nemzet fogja körül érczkarjaival a
szikla-világot. Századok óta nyomul előre; meghódítva mindent a mi
pusztaság, sivatag, vadon. Kozák, kirgiz, baskir, turkoman hordái
beszáguldják a hajdani mongol birodalom minden országát, s áldást
és czivilizácziót hordanak magukkal. A kozák portyázók nyomán
megtelepül az orosz birodalom számüzötteinek népe, s a szabad
szellem martyrjai új hazát alkotnak a sivatagból, s a mint
ekevasaikkal előbbre tolják a kenyérteremtő világot, szivós jellemük,
rideg erkölcseik, keresztyén vallásuk jóltevő világként árad el a
letarolt keleten.
A hódítóknál még egy nyommal előbbre járnak a tudásszomj
bajnokai, a felfedező tudósok, angol, chinai, orosz egyaránt. A
legutolsó teleptől még egy láthatárnyira le vannak tűzve a
hegytetőkön a tudós hegymászók jellobogói.
S még aztán van egy emberosztály, mely előtte jár a tudományos
utazónak is: a czivilizált népek elátkozottai. A rablók, gonosztevők,
kiket Anglia az afghanistáni fegyintézetekbe száműzött, kiket
Oroszország az urali bányák, a koliváni huták méreg levegője közé
elzárt, a fli-pámpámok, kiket China a fanghegyi alagut törésére
kényszerít s kik aztán egy-egy zivataros éjjel rekeszeikből kitörnek,
őreiket legyilkolják, s aztán menekülnek még mélyebben a hegyek
labyrintja közé; az angol bagno-rabok nehéz vasakkal lábaikon, mik
bokáikon örökké gyógyíthatatlan sebeket törnek, az orosz elitéltek
felhasított orrczimpákkal, s a chinai flipámpámok levágott fülekkel, s
ott azután lesznek belőlük gonoszabb rémek, mint a rabló turkománi
volt, mint az emberevő Fexe állat maga. – Némelykor aztán egy-egy
ilyen kóbor gonosztevő, kifáradva a természet és emberiség ellen
folytatott kűzdelemben, visszatér börtönéhez és könyörög elhagyott
lánczaiért. Még az ily visszatérő gonosztevő martalócz is kincs a
tudományra nézve. Tapasztalatai új adatok, mik a földismét
gazdagítják. De még a bagno-rabok, a kergetett gyilkosok a hasított
orral, s a fülvesztett flipámpámok sem jutottak el odáig soha, a hol a
Kin-Tseu országa kezdődik.
Európai tudósok pedig éghajlati összevetésekből arra a
megállapodásra jutottak, hogy az egész Kin-Tseu létezése alapjában
mese; a Khokonoor, Küen és Himalaya hegyek által összeszorított
világrész emberi lakhely nem lehet: ott örök tél uralkodik, ott minden
tenyészet lehetetlen.
Egyszer aztán jött valami új felfedezés, a mi ezt az állítást
határozottan megczáfolta.
A chinai kormány aranymosói a Jan-Tse-Kiang partján egy
nevezetes találmányra akadtak.
Az egy vizi építmény roncsa volt. Sajátszerű alkotás. Hasonlít a
hajóhoz is, a malomhoz is, alkatrészei bambuszból és rotangból
vannak, belsejében egy készülék fogas kerekekkel, korongokkal,
miknek feladata, úgy látszik, két kemény fatörzset egymáshoz
dörzsölni, a mik aztán valami közéjük hulló növény magvait őrölik
lisztté. Ez a mag három szegletű, a tengerinél apróbb, vörös színű,
egész ép szemeket találtak még a hengerek közé szorulva. És
különösen a hajó-fenékből haránt lefelé menő vékony bambusz-
csövek üregeiben. Kétségtelen volt, hogy ennek a roncsnak a
zuhatagon keresztül kellett ide jutni; először azért, mert ilyen
alkotásu malom az egész chinai birodalomban nincs; másodszor
azért, mert a bambusz és rotang tíz napi járásra nem terem; az már
délchinai növény, s fölfelé a malom nem úszhatott. És végre mivel
azt a háromszögű lisztes növénymagot senki sem ismeri.
E lelet nagy zajt ütött a tudományos világban, a talált
növénymagokat a világ minden kertészei iparkodtak csirázásra birni,
hogy megtudják, minő növény támad azokból; de az a mag, a mint a
csiráját levegő érte, egyszerre elhalt. Végre egy chinai tudós rájött,
hogy hiszen ez az a mesés Pecci növény magja, mely csak víz
fenekén tenyészik. Megkisérték azután vízbe elültetni, ott kikelt és
kifejlett növényt tenyésztett.
Most jöttek azután rá, hogy mi volt az a megtalált roncs. Az
nemcsak malom volt, hanem egyuttal vetőgép is; még pedig sorvető.
A hosszú haránt bambuszcsövek hivatása volt a vízfenékbe lerakni az
új vetés magvait.
De ezzel a felfedezéssel aztán még bonyolódottabbá lett a talány.
Ha ez a roncs a Jan-Tse-Kiang forrásától jött, akkor azokon a
hegyeken belül valahol olyan égalji viszonyoknak kell lenni, a mik a
mellett a bambusz és a rotang erdőszámra diszlő növény lehet: talán
egy védett mély hegy-öbölnek; s ha azon a vidéken már annyira
jutottak a bennlakó népek, hogy a víz fenekét is bevetik liszttermő
növényekkel, az először is igen kifejlődött míveltségi állapotokat árul
el, másodszor pedig azt, hogy ott a népesség annyira túl van már
szaporodva, hogy a termő szárazföld nem képes eltartani, s
minthogy körülzárt sziklavilágából semerre ki nem mehet, kénytelen
a víz fenekét is kenyér alá mívelni s úgy látszik, hogy jó sikerrel a
Pecci növény magja hasonló lisztet ád a sulyoméhoz és
gesztenyéhez, ennek nem árt az aszály, fagy és jégeső, mindig
terem. A Kin-Tseu tartomány létezése tehát nem mese; ott emberek
laknak; még pedig gondolkodó, szorgalmas, munkás emberek.
Kár, hogy azokat a betüket, a mik a roncs bejáratának küszöbére
fel voltak róva, senki sem tudta elolvasni, pedig az egész világ
minden régésze összefutott a találgatásukra. Nem hasonlítottak azok
semmi eddig ismeretes írásjegyekhez.
Egyszer egy magyar tudós is megtekintette ugyan e betüket a
pekingi muzeumban, de az sem mondta, hogy értene hozzájuk.
Az pedig Tatrangi Dávid volt. És ő az első tekintetre ráismert e
betüjelekre, mik a csik-szeredai templom-felirattal azonosak. A
székely-hun jegyek azok. A küszöb egyik fáján ez állt: BUNGOR. BÁ
FOROGÁ, a másikon ez: ISTEN. LÁD. ÁRMÁN. NE BÁND.
A ki ott eltemetve lakik, az az ős magyar nemzet!
É
És Tatrangi Dávidnak volt elég önuralma, mikor ezt felfedezte,
komor arczczal fordulni el a drága jelektől s azt mondani a
körülállóknak:
«Nem tudtam meg semmit.»
Tatrangi Dávid e naptól kezdve erős kitartással kezdett hozzá a
Kin-Tseu ország felfedezéséhez.
Az eszme szülemlésekor azt hitte, hogy ez gyors és könnyű
munka lesz. Megvan az útmutató: a «Sárga folyam», mely a roncsot
Kin-Tseuból idáig hozta, s megvan az aërodromon, mely a folyam
óriás zuhatagai mentében is megtalálja az utat. És mégis évekig nem
boldogult e vállalatával. Legelső akadálya volt a felkutandó tér
iszonytató terjedelme; több mint negyvenezer négyszög mértföldet
tesz ki az a hegyvilág, a mit a Himmalaya, Khokonoor, Hindukush,
Kara-Koram és Küen-Lün hegyei határolnak körül; e hegytömeg
tízezerről huszonnyolcz ezer lábnyi magasra torlaszodik fel, s az
ærodromon már e magaslaton felül alig emelkedhetik még pár ezer
lábnyira, mert ott fenn a légkör nagyon ritka, a lég villanyossága
enyészőfélben van, ellenben a hegycsucsok crystallodja zavarólag
hat a repülő gép villanykészülékére. E miatt a léghajós nagy látkört
nem szerezhet magának; s a mi e látkörbe esik is, annak három
negyedét a hegyormok takarják; csak azt veheti ki, a mi épen alatta
van. És azt sem mindig. Forró napokon a hegygőz (Höhenrauch)
fekszik a bérczvilágon, különösen a keletindus zsangálok tájékán s ez
a mély völgyeket oly tartós homályba burkolja, hogy felülről semmit
sem lehet bennük megkülömböztetni, a léghajós kénytelen leszállni a
völgybe, ha meg akarja tudni, mi lakik ott? S újra felszállni a hiú
kutatás után s más völgyöblöt keresni. Máskor meg öt-hat ezer
négyszög mértföldnyi területet hetekig eltakarva tart az alantjáró
felhőréteg s a légjáró tehetetlenné válik a felhőszőnyeg miatt,
melybe ha leszáll, könnyen összezúzódhatik. Akárhányszor
megeshetett a kutatón, hogy elrepült a keresett hely felett, a nélkül,
hogy sejtett volna felőle valamit. Azután a kalauz folyam is cserbe
hagyta. A Jan-Tse-Kiang e sziklaországban még egy oly hosszú
tekervényes utat fut meg, minő az egész Tisza, eredetétől a
torkolatáig. Néhol megáll tónak, másutt meg két ölre összeszorult
szűk hegyszoros medrében vágtat viharsebességgel. Egyszer aztán
egészen eltünik. A vulkáni rombolás egy hegylánczot döntött föléje s
most annak a düledékei közül rohan alá a folyam. Mikor aztán Dávid
az útba álló hegygerinczen túlemelkedik, már nem látja a «Sárga
folyam» folytatását sehol; az egy hosszú szikla alagútban tünt el,
melynek elég magassággal kell birni, hogy padmalján ez elhozott
malomépület össze nem morzsolódott. Hanem az aërodromon ez
alagúton csakugyan nem mehet fölfelé. (A mult században vállalkozó
angol hajósok a chinai kormány segélyével csak a Pojang tóig birtak
a folyamon előhatolni, s annak térképét fölvenni; Bethun kapitány
Wutsangig mehetett csak.)
A nappal nem mutat egyebet Tatrangi előtt mint egymást váltó
bérczeket, havasokat, jéghegyeket, jégmezőket, s aztán mély, sötét
völgyeket, miknek fenekén hegyfolyamok tajtékzó kígyói tekergőznek
alá; néhol egy-egy folt czédrus-erdőt, a völgyekben gyakran rátalál
Dávid azokra a sajátszerű fákra, miket yabagére név alatt ismerünk;
ezek nem fölfelé, hanem földszint nőnek, hosszában a földhöz
lapulva; egyedüli lakói a rideg éghajlatnak; míg ugyanazon hegyek
tulsó oldalán gyönyörű erdők terülnek a Deodora fenyőből, s két ezer
lábnyival alantabb fennsikon már keletindiai növényzet diszlik.
Tatrangi végre az éjszakához folyamodott. A hol emberek laknak,
ott este tűz szokott égni. Ha nappal eltakarja őket a hegygőz, éjjel el
fogja árulni a tűzhelyek világa. Ezentúl éjjel járt a felfedező útra.
Egyszer aztán megtalálta, a mit keresett.
Éjfél után, mikor lassú repüléssel haladt észak felé, egy alant
széttáruló völgyben egyszerre egy csoport fényt pillantott, meg,
melyek egymástól látszólag csekély távolban a lapály ezüst ködein
átviláglottak, távolabb a fénycsoportozattól egy magasra fellövelő
láng tört elő.
Az ott egy város! gondolá Dávid. Éjfél után a mi emberlakta
helyen világit, az csak utczai lámpa lehet; tehát előhaladt kultura
városa, a mely már a világított utczákat ismeri. Az a magasra lobogó
fény pedig valami gyár kéménye. Itt civilisatió van honn.
Dávid hevült agyában tarka képei pezsegtek a feltalált ősfaj közé
leszállás ábrándjainak; a hajó üvegfalát kalapácscsal döngetve,
messze elringó harangszóval adott jelt a völgy lakóinak, s hivé már,
hogy az álmaikból ébredezők hogy bámulják az égből alászálló
szárnyas gépet, mely világit, mint a csillagfény; s hogy borulnak le
majd arczra a férfi előtt, ki hozzájuk a mennyekből száll alá, és minő
lesz az imádat örömkitörése majd, midőn ez idegen égi vándort
tulajdon azon a nyelven hallják hozzájuk szólni, melyen Istenükhöz
szoktak beszélni!
Mámorító gondolat: Istennek lenni.
Ezért a mámorért meg kellett neki lakolnia.
A merész tettnek jutalma szokott lenni; de a kevélységnek
büntetése.
És Dávid szívét e perczben emberen tuljáró kevélység töltötte el.
Isten csak «egy» embert alkotott, s ő azt hitte magáról, hogy
most egy egész nemzetet teremt.
Meglett a bünhödése érte.
A mint a fénycsoporthoz oly közelre szállt, hogy távcsövével
kiveheté annak környékét, akkor látta, hogy az nem város alatta,
hanem egy szikláktól szakgatott hómező s azok a fénygóczok ott a
hómező közepett nem lámpák, hanem tűzkutak. Ott a földből feltörő
naphtha ég és körüle hóvilág. S az a magasra feltörő lobogvány nem
gyárkémény tüze, hanem egy naphtha-volcán: süveg alakú jégcsúcs
közepéből lövell fel magasra a földolaj, az világit oly messzire.
Érdekes tünemény, nevezetes tanulmány a természetbuvárra
nézve; de mikor az egészen mást keresett itten! Nem a csodateljes
tűzkutakat, nem a mesés naphtha-volcánt, hanem mindennapi
utczákat, prózai gyárkéményt.
Dávid odairányzá légjáróját a naphtha-volcán fölé, hogy mint
szokás, a magasból letekinthessen annak látványába. A volcán-tűz
nem árt az ő gépének.
Mikor aztán épen felette libegett a fellövellő naphtha
lángoszlopnak, egyszerre megszünt a repülő gépe működni, a
szárnyai összecsapódtak felül s többé szét nem váltak, a gép a
légből alázuhant, mint a lelőtt sas.
– Ah, fölfedeztem! kiálta Dávid öntudatlan örömmel. A titkot,
mely a gép repülését lehetleníti! A miért apám elment a túlvilágra.
Ime megtaláltam. A gép közé csapódó naphtha megszünteti a
dörzslapok érintkezését s azzal megszakad a vilanyfolyam.
Hanem e fölfedezésének most már nem sok hasznát vette, mert
megbénított gépe egyenesen és sebes rohammal csapott alá a
volcánra. Még annyi lélekjelenléte volt Dávidnak, hogy a kormány
felemelésével a függélyes esést harántossá változtassa, különben
beleesik a volcán gyomrába; így a gép a hegy oldalára esett s aztán
a czukorsüveg alakú sima meredek jéggulán sebesen szánkázott alá,
míg egyszer aztán befuródott egy hómezőbe. Dávid csak a hómezőt
fedő jégkéreg ropogását hallá, s aztán egyszerre körül lett fogva
földalatti sötétséggel. Ki tudja hány ölnyi mélyen furta be magát az
izzó külfalu gép a völgyet betöltő hótömegbe?
Most azután el volt temetve elevenen. És vele együtt titkai, nagy
tervei, mind eltemetve egy soha más által fel nem fedezendő világ
legelhagyottabb sirjába. És mindazt, a mit megtudott, soha sem
fogja elmondhatni senkinek.
Kiszámíthatá, hogy mi vár most itt reá? A hajó ajtaját a hótömeg
miatt kinyitnia lehetetlen. Az egyik szellentyű, mely a hajó fölfelé
fordult végén van, nyitva marad ugyan, de azon keresztül sem fog
több légzésre alkalmas levegőt kaphatni, mint mennyivel e hajóásta
kút tele van. Annak a fenekén ő maga a szénenytermelő tömeg,
mely fojtó lég sulyánál fogva az üreg fenekét megtölti s neki abban
pár nap alatt okvetlenül meg kell fuladnia. És ha kiszabadíthatná is
magát a hajóból, hogy menekülhetne ki az önásta mély sirból? A
hófal enged, abba nem lehet megkapaszkodni. De talán az izzógép
esésekor képződött a hóüreg falain valami jégréteg, abba lyukakat
lehetne vágni s úgy lassankint felkapaszkodni a felszinig. De hát
azután? A gép nélkül, mely a hótömeg alatt fekszik, hogy mehet
innen tovább? És hová? Mi világ van itt? Van-e itt élet?
És még sem akarta magát elhagyni. Megkisérlett egy nehéz
munkát.
Eszközei közt volt egy gyémánthegyű üvegmetsző kés. Azzal
hozzá fogott a hajó szabadon álló falán egy akkora darab
kikerekítéséhez, a mekkorán maga kiférhetett. Hiszen nyomorultabb
eszközzel is ástak már rést menekülni vágyó rabok öles börtönök
falán keresztül. Csakhogy neki nem volt elég ideje ezt kivinni. A hajó
üvegfala a két végén két ujjnyi vastag, s azt átreszelni egy
gyémánthegygyel nagyobb küzdelem, mint ha öles trachyt falat
ásnak ki egy tört patkódarabbal. Hat órai munka után annyira
kifáradt, hogy nem birt tovább dolgozni.
S ha lefeküdt a hajó alsó végébe pihenni, ott a romlott lég
fojtotta mellét.
Tizenkét óra mulva lemondott a menekülésről. Ereje fogytán volt,
feje elkábult; érzé, hogy meg kell fuladnia. És még sem akarta
magát megadni a csuf halálnak. Érzé, hogy azzal, a mi az ő szívében
lakik, meghalni nem szabad. Nyakkendőjével karjain keresztül
odaköté magát a felső szellentyűhöz, a hol legtovább érheti ajkát
valami éltető lég. Azután nem sokára egyik érzéke a másik után halt
el. Először végtagjai lettek érzéketlenné, de még látta maga fölött a
halavány világot a mély hótárna kerek nyílásán át. Azután a látás is
elhagyta; de még hallott, hallott valami olyan hangot, mintha a szíve
mázsányi erővel dobogna keblében, azután mintha sírban feküdnék s
a vakandokok kaparnák koporsója födelét. Azután a hallását is
elveszíté, de még eszmélt. Tudta, hogy hol van, mi történt vele;
hogy most meg fog halni. És aztán elveszté az eszméletet is, talán ez
már az átmenet az életből a halálba. Otthon járt, feleségével beszélt,
gyermekeit megcsókolgatta, azután elment a székely földre,
utasításokat osztogatott a munkásoknak; majd megtalálta az atyját s
számot adott neki róla, hogy miként végezte el azokat, a mik rá
voltak bízva. Utoljára uszott valami fényben, mintha millió és millió
ismerős arcz, ragyogó mind, mint a csillag, mosolyogna reá és
beszélne hozzá és ő azt mind értené és egyszerre látna mély
titkokat, mik az égi tejutakba, a csillag ködfoltokba vannak rejtve s
érezne valami megnevezhetlen gyönyört, mely nem emberi idegek
kéjelgése többé.
Ez már talán a halál…
Nagy sokára ismét egy éles sajgás, minő a jéghideg lég érintése,
visszaidézte a tulvilágon járó lelket. Valami tompa fejzugás,
fülcsengés után úgy tetszék Dávidnak, mintha szavakat hallana,
embersusogást. Melle tágulni kezdett, nagyot lélekzék s erre egy női
hang az öröm csengő rezgésével kiálta fel mellette:
«Él!» S e szót, mint az erdőben a fuvallatot a fák, zugta odább
valami.
Ekkor fölnyítá szemeit.
Ugyanaz a hang kiáltá:
«Lát.»
Dávid ajkai megnyíltak, a földi fájdalom egészen elállta idegeit;
ah az oly fájdalmas lehet, megválni a túlvilágtól s visszajönni a földi
életre.
Az a női hang most halkan rebegé:
«Szól.»
Tán atyjától vett akkor búcsút Dávid, vagy Istenéhez szólt, ajkai
ez igét rebegték:
«Atyám!»
S arra egyszerre megzendült körülötte ezernyi ezer ajakról e szó:
«Atyám.» Széttekintett. Körüle ifjú hajadonok álltak, fejükön
koszoruval, rajtok túl ősz szakállú férfiak, fehér subákban, hosszú
négyszögű botokkal, miken irásjegyek voltak végig róva.
De ez a három szó egyszerre visszaadott életet, eszméletet a
tetszhalottnak, e három rövid, egytagú ige «magyarul» volt mondva.
Ez az ősmagyar nemzet hazája és a kik ott körülállják a
tetszhalottat, azok az ifjú «alirumnák», a tűzisten szolgálói, és a
«sellők», a vizisten papnéi, és a «firénék», a földisten fehér cselédei
s azok a férfiak ott a «táltosok», «gyulák» és «garabonczok», az
ősisten papjai; s azok a tűzkutak, az az öröklángú naphtha volcán az
ő oltáraik s az a szertartás itt a «Zomotor», a feltámadó tetszhalott
tiszteletének ünnepe az, a hogy az ősmagyar hagyományok
fentarták emlékeiket, a hogy az divott még a keresztyén királyok
idejében is, a míg azok a pogány emlékeket tűzzel-vassal el nem
irtották.
Itt a keresett ősmagyar nemzet!
ebookbell.com