Factor analysis
Principal Component Analysis (PCA)
Turns many numeric columns into a handful of components that between them carry as much of the total spread in the data as possible.
Method summary
Principal component analysis rewrites your numeric columns onto new axes that sit at right angles to one another. The first component holds the widest spread any weighted sum of the columns can hold; the second takes the widest spread left over while staying at right angles to the first, and so on down the list. The panel rescales every column to a mean of zero and a standard deviation of one, then decomposes that matrix into its singular values, from which the eigenvalues follow. The logic differs from the common factor model in one decisive way: nothing latent is posited here. Components are exact weighted sums of the observed columns, and the computation absorbs the variance peculiar to each column along with the variance it shares. Shared and error variance are therefore never separated, and a component is not read as the indicator of a measurement model. The question this method answers is narrower and more practical: with how many dimensions do I keep how much of the spread in my data?
Which research questions does it answer?
- My survey has 14 numeric columns; can I carry them forward as three or four components instead?
- How many components do I need to retain 80% of the spread in the dataset?
- Can I convert a set of heavily overlapping predictors into uncorrelated components before fitting a model?
- Which columns weigh most on the first component, that is, which columns move together along the widest axis in the data?
When should you use it?
- When the goal is to cut the number of columns and to know in figures how much spread that costs.
- When the components are not expected to stand for anything theoretical; they often serve as a technical intermediate product.
- When overlapping columns need to be turned into mutually uncorrelated ones so that redundancy does not trouble a later model.
- When at least two numeric columns and at least 10 observations are available; the engine declines to run below either floor.
- When the columns are measured in different units. Standardisation is applied on every run, so a column with a large unit cannot dominate the solution on its own.
Required variable types
- Only numeric columns enter the analysis: scale items, scores, amounts, durations or percentages. Marking them as 'scale' on the Variable tab is what makes the method picker treat them as eligible.
- No outcome column is chosen. Every column enters on equal footing and none of them is treated as the side being explained.
- Two columns is the technical minimum, but a two-column solution is not really a reduction; in practice the method earns its keep from about five columns upwards.
- Categorical columns cannot be used as they are. To bring one into the solution, build 0/1 derived columns for it on the Variable tab.
- A constant column, identical for every respondent, adds nothing. The engine will not raise a division error on it, but neither will it tell you the column carries no information.
Key assumptions
- Overlapping information across columns
- Reduction is only possible because columns repeat part of one another's information. Where columns are mutually unrelated, each component corresponds to a single column and the eigenvalues come out close together, which makes dropping components expensive.
- Linearity of the associations
- Because components are weighted sums, only linear patterns are captured. Where the link between two columns bends, most of that link never reaches the components and the loss simply shows up as a lower explained variance percentage.
- Scale effects kept under control
- On raw data a column with a large variance decides the first component by itself, which is why rescaling is obligatory when units differ.
- Sufficient observations
- Component weights obtained from few cases swing noticeably between samples. As the number of columns approaches the number of cases, the solution fits the sample too closely and the explained variance percentages turn optimistic.
- No single case steering the spread
- Since the method works by gathering as much variance as it can, one extreme row can pull the direction of the first component. The further such a row sits from the rest, the more weight it earns in the solution.
How YouReply checks these assumptions
- Overlapping information across columns: This method returns no measure of whether the correlation matrix is worth factoring: neither a sampling adequacy index nor a test of sphericity is computed, since both belong to the exploratory factor analysis method. To see the overlap, run a correlation method over the same columns.
- Linearity of the associations: The panel does not inspect the shape of any pair of columns and issues no warning about curvature. That judgement rests on the data grid and on descriptive output you run separately.
- Scale effects kept under control: The engine standardises every column before the decomposition, so the solution rests on the correlation structure rather than on raw covariances. There is no option to work on raw data, which means this condition is met by construction.
- Sufficient observations: The enforced floor is 10 observations and a run below it is refused. That floor says nothing about adequacy; it marks the smallest dataset on which the computation goes through, and any ratio guideline is yours to apply.
- No single case steering the spread: The panel does not check this assumption automatically; the researcher evaluates it.
How the analysis is run
- 1Drop the CSV or XLSX file holding your numeric columns onto the upload area, with column names in the first row.
- 2On the Data tab, check that columns meant to be numbers are not being read as text. Columns with a comma as the decimal separator are the usual culprit here.
- 3On the Variable tab declare missing value codes, give the columns readable labels and set the measurement level to 'scale'. If a categorical column is to join the solution, recode it as 0/1 derived columns.
- 4On the Analysis tab type the method name into the search box or open the factor analysis category. With the 'Only ones that fit my data' switch on, methods that do not fit stay in the list but appear dimmed with a plain-language reason beside them, and the data requirements box reports how many numeric columns you have.
- 5Tick the columns in the parameter form. Enter a component count and exactly that many components are extracted while the variance threshold field is ignored; leave the count empty and the threshold takes effect, and with both fields empty as many components as columns are computed.
- 6Start the run. The scree plot comes first, followed by collapsible sections for the loading table, the eigenvalues, the per-component and cumulative variance percentages, the component score preview and the details of the solution.
- 7Download the tables as Excel and the charts as PNG. The computation credits card names the library call and its version, and the run is kept on the History tab. The free plan allows 50 runs per month.
Statistics and tables produced
- Component loadings
- The weight of every column on every component, scaled from the direction vectors that the decomposition produces. They show which columns moving together a given component stands for.
- Eigenvalues
- The amount of variance each component gathers on the standardised scale. They sum to the number of columns, and the scree plot is drawn from this list.
- Explained variance per component
- Each component's share of the total spread. The order always descends, so the first component's share is the largest on every run.
- Cumulative variance percentage
- The proportion of spread retained once the first k components are kept. The decision on how many components to keep usually rests on this column.
- Component score preview
- Scores for the first 5 observations on the first 3 components. This is a preview only: the full transformed dataset is neither returned nor downloadable, so component scores cannot be fed into another analysis from this output.
- Count of eigenvalues above one
- A single figure given for information. It does not set the number of components: with the parameter left empty the engine extracts as many components as there are columns, not as many as this count.
- Details of the solution
- The number of components extracted, the number of columns analysed and the number of observations used. The observation count is what remains once rows with missing values on the selected columns are dropped.
- Scree plot and loading radar
- A chart of how the eigenvalues fall away across the component order is drawn on every run. With at most 15 columns and at most 5 components, a radar chart of the loadings is added.
Effect size and confidence intervals
- Variance explained by a component
- A component's share of the spread in the dataset. With survey ratings, a first component between 30% and 50% is unremarkable, while a single component above 70% suggests the columns largely measure one and the same thing.
- Cumulative explained variance
- The figure that states the price of the reduction directly. A cumulative share of 70% to 80% is a common working target, but since the percentage rises on its own as components are added, report how many components were needed to reach it.
- Eigenvalue compared with one
- On standardised data a single column carries one unit of variance, so a component with an eigenvalue below 1 summarises less information than one column does. The comparison appears in the output for information, and this criterion is known to suggest more components than warranted.
This method returns no confidence interval for anything it produces. Loadings, eigenvalues, variance percentages and component scores arrive as point values with no standard errors beside them. Nothing in the output tests whether a loading differs from zero or whether two components differ in the share they explain. To gauge how stable a solution is, you can split the data in half, run the same columns twice and compare the loading patterns; the panel will not make that comparison for you.
Example research question and example result
The numbers below are a representative example, not data from a real study or a real user.
- Research question
- How far can 12 numeric store experience ratings be condensed for use in later models? (Illustrative example, not real data.)
- Variables
- 12 columns of store experience ratings, all numeric and flagged as scale level · 260 respondents with complete answers · Component count left empty, variance threshold left empty
- Example result
- All 12 components were computed. The first four eigenvalues were 4.12, 2.05, 1.31 and 0.88, corresponding to variance shares of 34.3%, 17.1%, 10.9% and 7.3%, and cumulative shares of 34.3%, 51.4%, 62.3% and 69.6%. The count of eigenvalues above one was reported as 3. On the first component, staff attentiveness, speed of problem resolution and friendliness loaded between 0.74 and 0.81; on the second, price and promotion perception stood out at 0.69 and 0.72. The score preview showed the first 5 respondents on the first 3 components.
- Interpretation
- Three components carry roughly two thirds of the spread across the 12 columns. The fourth adds 7 points to the cumulative share, but with an eigenvalue under 1 it summarises less than a single column does. Continuing with three components means accepting that the remaining 38% of the spread is set aside, and that acceptance belongs in the write-up. The content of the loadings helps to name the components, but those names stay descriptive: because no latent construct has been modelled, nothing here licenses the claim that these three dimensions are subscales of an instrument. A claim of that kind has to rest on a common factor model and a test of fit. Note also that the preview withholds the full scores, so these components cannot be carried into a regression from this output.
Real output on a sample dataset
The results below were produced by the analysis engine from this data file. Changing the variable changes the research question as well; every run was computed in advance, so the page sends no request to the engine.
Scale development data (synthetic)
A twenty item five point Likert scale answered by three hundred people. The items come from two latent constructs: the first ten measure one construct, the last ten the other, and the two are moderately correlated. The factor and reliability methods run on this file.
- Rows
- 300
- Columns
- respondent_id, item_1, item_2, item_3, item_4, item_5, item_6, item_7, item_8, item_9, item_10, item_11, item_12, item_13, item_14, item_15, item_16, item_17, item_18, item_19, item_20
The data is synthetic: it comes from a fixed random seed, not from a real study. The values below were produced by the analysis engine from this file, so uploading the same file to the panel gives the same results.
Research question: How much of the variance in the twenty items can be summarised by how many components?
- Analyzed variables
- item_1,item_2,item_3,item_4,item_5,item_6,item_7,item_8,item_9,item_10,item_11,item_12,item_13,item_14,item_15,item_16,item_17,item_18,item_19,item_20
- Number of components
- 20
- Number of variables
- 20
- Valid observations
- 300
- Components by the Kaiser criterion
- 2
Loading matrix
| Row | Component 1 | Component 2 | Component 3 | Component 4 | Component 5 | Component 6 | Component 7 | Component 8 | Component 9 | Component 10 | Component 11 | Component 12 | Component 13 | Component 14 | Component 15 | Component 16 | Component 17 | Component 18 | Component 19 | Component 20 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| item_1 | -0.596 | 0.416 | -0.070 | 0.215 | -0.017 | 0.042 | 0.053 | -0.060 | -0.385 | 0.018 | -0.152 | 0.239 | -0.088 | 0.188 | -0.046 | 0.114 | -0.038 | -0.225 | 0.257 | -0.079 |
| item_2 | -0.568 | 0.378 | -0.042 | -0.287 | -0.313 | 0.125 | -0.163 | 0.023 | 0.301 | 0.034 | 0.013 | < 0.001 | 0.276 | 0.040 | -0.015 | 0.231 | -0.157 | -0.210 | 0.054 | 0.123 |
| item_3 | -0.595 | 0.360 | 0.051 | 0.212 | 0.110 | 0.136 | -0.168 | -0.307 | 0.054 | -0.192 | -0.130 | -0.363 | -0.042 | -0.069 | -0.138 | -0.076 | 0.239 | -0.165 | -0.049 | 0.096 |
| item_4 | -0.608 | 0.386 | 0.200 | 0.176 | 0.034 | -0.097 | -0.035 | 0.250 | 0.148 | -0.158 | 0.025 | -0.082 | 0.162 | 0.256 | -0.157 | -0.275 | -0.132 | 0.213 | 0.155 | -0.045 |
| item_5 | -0.630 | 0.347 | -0.072 | -0.004 | -0.164 | -0.365 | -0.060 | -0.290 | 0.085 | -0.056 | -0.103 | 0.146 | -0.026 | -0.224 | -0.117 | 0.027 | -0.129 | 0.119 | -0.144 | -0.268 |
| item_6 | -0.604 | 0.346 | -0.118 | 0.006 | -0.196 | 0.203 | 0.304 | -0.192 | 0.146 | 0.112 | 0.083 | 0.095 | -0.313 | 0.250 | 0.035 | -0.036 | 0.006 | 0.193 | -0.127 | 0.161 |
| item_7 | -0.564 | 0.364 | -0.074 | -0.386 | -0.033 | -0.134 | -0.307 | 0.218 | 0.006 | 0.049 | -0.106 | 0.121 | -0.198 | -0.056 | 0.189 | -0.186 | 0.292 | 0.020 | 0.086 | 0.014 |
| item_8 | -0.546 | 0.405 | -0.272 | 0.163 | 0.144 | 0.087 | -0.017 | 0.072 | -0.026 | 0.283 | 0.451 | -0.126 | 0.007 | -0.177 | 0.097 | -0.148 | -0.101 | -0.134 | -0.006 | -0.110 |
| item_9 | -0.610 | 0.350 | 0.305 | -0.177 | 0.174 | -0.114 | 0.105 | 0.156 | -0.292 | -0.155 | 0.089 | 0.020 | -0.093 | -0.216 | -0.074 | 0.065 | -0.191 | < 0.001 | -0.131 | 0.258 |
| item_10 | -0.599 | 0.414 | 0.007 | 0.015 | 0.091 | 0.057 | 0.313 | 0.143 | -0.102 | 0.019 | -0.144 | -0.125 | 0.314 | 0.021 | 0.240 | 0.199 | 0.210 | 0.135 | -0.134 | -0.125 |
| item_11 | -0.421 | -0.434 | -0.503 | 0.228 | -0.063 | 0.230 | -0.019 | 0.333 | 0.039 | -0.150 | -0.162 | 0.089 | -0.034 | -0.222 | -0.184 | 0.053 | < 0.001 | 0.103 | -0.024 | 0.066 |
| item_12 | -0.358 | -0.533 | -0.219 | -0.222 | -0.050 | -0.325 | 0.465 | -0.009 | 0.020 | 0.088 | -0.155 | -0.178 | 0.055 | -0.002 | -0.080 | -0.212 | -0.014 | -0.199 | 0.073 | 0.060 |
| item_13 | -0.416 | -0.545 | -0.295 | -0.174 | 0.044 | -0.103 | -0.303 | -0.035 | -0.281 | -0.085 | 0.118 | -0.100 | 0.078 | 0.365 | -0.044 | 0.022 | -0.037 | 0.014 | -0.233 | -0.019 |
| item_14 | -0.427 | -0.510 | 0.197 | -0.135 | -0.418 | 0.201 | 0.010 | -0.134 | -0.280 | 0.076 | 0.193 | -0.062 | 0.131 | -0.157 | -0.139 | -0.054 | 0.144 | 0.185 | 0.152 | -0.027 |
| item_15 | -0.495 | -0.462 | 0.225 | 0.252 | -0.055 | -0.329 | 0.008 | 0.199 | 0.172 | 0.124 | 0.219 | 0.034 | -0.132 | 0.074 | -0.149 | 0.257 | 0.246 | -0.099 | -0.033 | -0.003 |
| item_16 | -0.546 | -0.396 | 0.105 | -0.053 | 0.318 | 0.068 | -0.171 | -0.060 | 0.038 | 0.466 | -0.267 | -0.148 | -0.072 | -0.012 | -0.058 | 0.117 | -0.150 | 0.171 | 0.083 | 0.019 |
| item_17 | -0.521 | -0.411 | 0.115 | -0.123 | 0.384 | 0.212 | 0.068 | -0.140 | 0.137 | -0.014 | 0.060 | 0.433 | 0.213 | -0.001 | -0.108 | -0.146 | 0.113 | -0.092 | -0.074 | -0.019 |
| item_18 | -0.492 | -0.518 | -0.026 | 0.358 | -0.053 | -0.226 | -0.117 | -0.185 | 0.008 | -0.060 | 0.004 | 0.108 | 0.155 | -0.065 | 0.386 | -0.047 | -0.056 | 0.067 | 0.079 | 0.228 |
| item_19 | -0.450 | -0.534 | 0.345 | 0.105 | -0.256 | 0.233 | -0.026 | 0.169 | 0.004 | -0.002 | -0.176 | -0.033 | -0.135 | 0.010 | 0.177 | -0.159 | -0.147 | -0.203 | -0.200 | -0.155 |
| item_20 | -0.522 | -0.490 | -0.023 | -0.219 | 0.197 | 0.097 | 0.102 | -0.067 | 0.142 | -0.372 | 0.154 | -0.130 | -0.214 | -0.009 | 0.161 | 0.174 | -0.075 | 0.034 | 0.210 | -0.157 |
Eigenvalues
- Component 1
- 5.70
- Component 2
- 3.79
- Component 3
- 0.863
- Component 4
- 0.829
- Component 5
- 0.779
- Component 6
- 0.742
- Component 7
- 0.725
- Component 8
- 0.639
- Component 9
- 0.618
- Component 10
- 0.604
- Component 11
- 0.580
- Component 12
- 0.566
- Component 13
- 0.541
- Component 14
- 0.519
- Component 15
- 0.474
- Component 16
- 0.460
- Component 17
- 0.441
- Component 18
- 0.433
- Component 19
- 0.361
- Component 20
- 0.335
Variance explained (percent)
- Component 1
- 28.52
- Component 2
- 18.93
- Component 3
- 4.31
- Component 4
- 4.15
- Component 5
- 3.89
- Component 6
- 3.71
- Component 7
- 3.63
- Component 8
- 3.19
- Component 9
- 3.09
- Component 10
- 3.02
- Component 11
- 2.90
- Component 12
- 2.83
- Component 13
- 2.70
- Component 14
- 2.60
- Component 15
- 2.37
- Component 16
- 2.30
- Component 17
- 2.21
- Component 18
- 2.17
- Component 19
- 1.81
- Component 20
- 1.68
Cumulative variance explained
- Component 1
- 28.52
- Component 2
- 47.45
- Component 3
- 51.76
- Component 4
- 55.91
- Component 5
- 59.80
- Component 6
- 63.52
- Component 7
- 67.14
- Component 8
- 70.33
- Component 9
- 73.43
- Component 10
- 76.45
- Component 11
- 79.35
- Component 12
- 82.18
- Component 13
- 84.88
- Component 14
- 87.47
- Component 15
- 89.84
- Component 16
- 92.14
- Component 17
- 94.35
- Component 18
- 96.52
- Component 19
- 98.32
- Component 20
- 100.00
Sample component scores (first five cases)
| Row | Component 1 | Component 2 | Component 3 |
|---|---|---|---|
| obs_0 | 3.80 | 1.43 | -0.314 |
| obs_1 | 1.39 | 5.03 | -0.219 |
| obs_2 | -4.89 | -2.84 | -0.470 |
| obs_3 | -2.27 | -2.30 | -0.182 |
| obs_4 | 1.71 | -2.19 | -0.074 |
Computation credits: scipy 1.18.0 · statsmodels 0.14.6 · scikit-learn 1.9.0 · numpy 2.5.1 · pandas 3.0.5 · semopy 2.3.11 · 89fc29a · Data seed: 20260915
How to report the result
The twelve rating columns were submitted to principal component analysis on standardised data (n = 260). The first three components carried 62.3% of the total spread (eigenvalues 4.12, 2.05 and 1.31; individual shares 34.3%, 17.1% and 10.9%), with loadings on the first component ranging from 0.74 to 0.81.
An example sentence close to APA style; the numbers are representative.
When you should not use it
- Components are not modelled as indicators of anything latent. Where the shared variance of items has to be separated out and a measurement model built, a common factor approach is required instead; a component solution is not evidence of subscales.
- Component scores come back only as a preview of the first 5 observations on the first 3 components. Since the transformed dataset cannot be downloaded, the reduced columns cannot serve as input to a later analysis.
- No rotation is applied. The components stay arranged so that each in turn gathers the widest remaining spread, so loadings may not resolve onto single columns the way they do in rotated factor solutions, and interpretation can be harder.
- The variance threshold field works only when the component count is left empty. Fill both and the threshold is silently ignored in favour of the count you typed.
- No standard errors or intervals accompany any output, so whether two loadings or two explained shares differ is a matter of eyeballing.
- A row missing a value on any selected column drops out entirely. Where missingness has accumulated, the solution describes a self-selected subset of the dataset.
What to use when the assumptions are not met
- Exploratory Factor Analysis (EFA)Why: When the shared variance of items has to be separated from what is specific to each and latent dimensions are to be interpreted; the common factor model keeps shared and error variance apart.
- Parallel AnalysisWhy: When how many components or factors to keep is the question itself; it puts a figure behind the decision by comparing against eigenvalues from random data.
- K-Means Cluster AnalysisWhy: When what needs condensing is rows rather than columns, that is, when similar respondents are to be sorted into groups.
- Pearson CorrelationWhy: When there are only a few columns and the question is simply which ones move together; pairwise coefficients read more directly than a component solution.
Frequently asked questions
- Should I use component analysis or common factor analysis?
- It depends on what you want out of it. Component analysis repackages the observed columns and takes the whole of each column's variance into the solution, including the part specific to that column; what it delivers is a technical reduction, the ability to proceed with fewer columns. Common factor analysis tries instead to separate what items share from what is error, and what it delivers is a proposed measurement model. If you are developing a scale, naming subscales or arguing about a construct, the common factor route is the right address. If you want to summarise many overlapping columns, thin out repeated information or produce uncorrelated new variables, component analysis is enough.
- How many components should I keep?
- Leave the parameter empty and the engine extracts as many components as there are columns, which is no reduction at all; the decision stays with you. You can read the cumulative variance column and see which component reaches the share you are aiming for, take the point where the scree plot flattens as your criterion, or leave the component count empty and type a variance threshold so the engine finds the smallest number of components that meets it. The reported count of eigenvalues above one is information only, and that criterion is known to suggest more components than warranted; the parallel analysis method supports the same decision with a comparison against random data.
- Can I use the component scores in another analysis?
- Not from this output. The score table is a preview limited to the first 5 observations and the first 3 components; the full transformed dataset is neither displayed nor available for download. To carry components into a regression as predictors you would have to compute the weighted sums yourself, or build the columns as derived columns on the Variable tab.
- Why is there no sampling adequacy measure or sphericity test in the results?
- Both are computed by the exploratory factor analysis method, not by this one. If you want to see whether the correlation matrix is worth factoring, run exploratory factor analysis over the same columns separately. A component solution can always be produced mathematically, so the engine sets no eligibility gate here: eigenvalues come back even when the columns are unrelated to one another, and all that changes is how much a reduction costs.
References
- Jolliffe, I. T. (2002). Principal Component Analysis
- Jolliffe, I. T., & Cadima, J. (2016). Principal Component Analysis: A Review and Recent Developments
- Abdi, H., & Williams, L. J. (2010). Principal Component Analysis
- scipy.linalg.svd documentation
Try it with your own data
The free plan includes 50 analysis runs a month and needs no card.