I am trying to learn factor analysis and I thought it would be a good idea to try and very poorly "mimic" the computation for IQ scores with a dataset of dummy values as a way to "learn by example".
To start off, this is what I intend to do, and I don't know if this methodology is correct or not: I have the loadings for that factor determined. Now that I have the loadings, I want to generate a score for each of the samples. That will leave me with a population of scores that I can then standardize around a mean of 100. From there I would plot a normal distribution. Whenever I get a new sample, I can then generate a score for it and see where it falls on the distribution.
To get my results, I am using Python's Sklearn library, specifically the FactorAnalysis
class. I noticed that the FactorAnalysis
class has a score_samples()
method. The output score for each sample is the log-likelihood of the sample.
Here are some of the questions I have:
Is my approach in generating a distribution based on the samples' factor scores flawed? How do they do it in practice?
Is the log-likelihood of a sample even an appropriate score to use? (If not, what alternative ways are there to score a sample?)
I have gone ahead and generated the scores using the
score_samples()
method for all the samples, but they range between -4 and -49. Is there a reason they would be negative?If you are only looking for 1 latent factor, is it good practice to set the number of factors to 1 or should you leave it unspecified anyways?
Here are the loadings if I leave set the number of factors to 1:
Factor 1
variable 1 0.082558
variable 2 0.107940
variable 3 0.199645
variable 4 0.612495
variable 5 0.623707
Here are the loadings if I do not specify the number of factors:
Factor 1 Factor 2 Factor 3 Factor 4 Factor 5
variable 1 0.263914 0.426346 -0.012893 -0.0 0.0
variable 2 0.297078 0.415269 -0.002193 0.0 -0.0
variable 3 0.243590 -0.005131 0.085178 -0.0 -0.0
variable 4 0.487537 -0.224135 -0.019501 -0.0 -0.0
variable 5 0.484462 -0.248173 -0.008902 0.0 0.0