Psych package: why am I receiving "NA" for many of the factor scores?

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Psych package: why am I receiving "NA" for many of the factor scores?

Elizabeth Barrett-Cheetham

Hello R Psych package users,

Why am I receiving "NA" for many of the factor scores for individual
observations? I'm assuming it is because there is quite a bit of missing
data (denoted by NA). Are there any tricks in the psych package for getting
a complete set of factor scores?

My input is:
rProjectSurveyDataJustVariables = read.csv("R Project Survey Data Just
Variables.csv", header = TRUE)
solution <- fa(r = rProjectSurveyDataJustVariables, nfactors = 4,  rotate =
"oblimin", fm = "ml", scores = "tenBerge", warnings = TRUE, oblique.scores =
TRUE)
solution

Thank you.

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Reply | Threaded
Open this post in threaded view
|

Re: Psych package: why am I receiving "NA" for many of the factor scores?

William Revelle
Dear Elizabeth,

Factor scores in the fa function are found by multiplying the standardized data by the factor weights using matrix multiplication.  This will give scores only for subjects with complete data.

However, if you want, you can create them yourself by standardizing your data and then multiplying them by the weights:

mydata <- rProjectSurveyDataJustVariables

f4 <- fa(my.data,4)  #modify this to match your call
wts <- f4$wts
scaleddata <- scale(mydata)
scores <- apply(scaleddata,1,function(x) sum(x * wts,na.rm=TRUE))  

#this will work with complete data, and impute factor scores for those cases with incomplete data.  If the data are missing completely at random, this should give a reasonable answer.  However, if the missingness has some structure to it, the imputed scores will be biased.

This is a reasonable option to add to the fa function and I will do so.

A side note.  If you need help with a package, e.g., psych, you get faster responses by writing to the package author.  I just happened to be browsing R-help when your question came in.

Let me know if this solution works for you.

Bill



> On Jan 13, 2015, at 7:46 PM, Elizabeth Barrett-Cheetham <[hidden email]> wrote:
>
>
> Hello R Psych package users,
>
> Why am I receiving "NA" for many of the factor scores for individual
> observations? I'm assuming it is because there is quite a bit of missing
> data (denoted by NA). Are there any tricks in the psych package for getting
> a complete set of factor scores?
>
> My input is:
> rProjectSurveyDataJustVariables = read.csv("R Project Survey Data Just
> Variables.csv", header = TRUE)
> solution <- fa(r = rProjectSurveyDataJustVariables, nfactors = 4,  rotate =
> "oblimin", fm = "ml", scores = "tenBerge", warnings = TRUE, oblique.scores =
> TRUE)
> solution
>
> Thank you.
>
> ______________________________________________
> [hidden email] mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

William Revelle           http://personality-project.org/revelle.html
Professor           http://personality-project.org
Department of Psychology   http://www.wcas.northwestern.edu/psych/
Northwestern University   http://www.northwestern.edu/
Use R for psychology             http://personality-project.org/r
It is 5 minutes to midnight   http://www.thebulletin.org

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Reply | Threaded
Open this post in threaded view
|

Re: Psych package: why am I receiving "NA" for many of the factor scores?

William Revelle
Dear Elizabeth,
  A correction to my suggestion:
scaled <- scale(mydata)
wts <- f4$weights

scores <-t( apply(scaled,1,function(x) colSums(x*wts,na.rm=TRUE)))  #you need the colSums not the sum function

Also, your confusion in getting the NAs with missing data was due to a bug in the fa function in the way it just ignored the missing statement.

Thanks for catching that.  It is now fixed and should be on CRAN real soon.

Bill





> On Jan 14, 2015, at 9:39 AM, William Revelle <[hidden email]> wrote:
>
> Dear Elizabeth,
>
> Factor scores in the fa function are found by multiplying the standardized data by the factor weights using matrix multiplication.  This will give scores only for subjects with complete data.
>
> However, if you want, you can create them yourself by standardizing your data and then multiplying them by the weights:
>
> mydata <- rProjectSurveyDataJustVariables
>
> f4 <- fa(my.data,4)  #modify this to match your call
> wts <- f4$wts
> scaleddata <- scale(mydata)
> scores <- apply(scaleddata,1,function(x) sum(x * wts,na.rm=TRUE))  
>
> #this will work with complete data, and impute factor scores for those cases with incomplete data.  If the data are missing completely at random, this should give a reasonable answer.  However, if the missingness has some structure to it, the imputed scores will be biased.
>
> This is a reasonable option to add to the fa function and I will do so.
>
> A side note.  If you need help with a package, e.g., psych, you get faster responses by writing to the package author.  I just happened to be browsing R-help when your question came in.
>
> Let me know if this solution works for you.
>
> Bill
>
>
>
>> On Jan 13, 2015, at 7:46 PM, Elizabeth Barrett-Cheetham <[hidden email]> wrote:
>>
>>
>> Hello R Psych package users,
>>
>> Why am I receiving "NA" for many of the factor scores for individual
>> observations? I'm assuming it is because there is quite a bit of missing
>> data (denoted by NA). Are there any tricks in the psych package for getting
>> a complete set of factor scores?
>>
>> My input is:
>> rProjectSurveyDataJustVariables = read.csv("R Project Survey Data Just
>> Variables.csv", header = TRUE)
>> solution <- fa(r = rProjectSurveyDataJustVariables, nfactors = 4,  rotate =
>> "oblimin", fm = "ml", scores = "tenBerge", warnings = TRUE, oblique.scores =
>> TRUE)
>> solution
>>
>> Thank you.
>>
>> ______________________________________________
>> [hidden email] mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>
> William Revelle           http://personality-project.org/revelle.html
> Professor           http://personality-project.org
> Department of Psychology   http://www.wcas.northwestern.edu/psych/
> Northwestern University   http://www.northwestern.edu/
> Use R for psychology             http://personality-project.org/r
> It is 5 minutes to midnight   http://www.thebulletin.org
>
> ______________________________________________
> [hidden email] mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

William Revelle           http://personality-project.org/revelle.html
Professor           http://personality-project.org
Department of Psychology   http://www.wcas.northwestern.edu/psych/
Northwestern University   http://www.northwestern.edu/
Use R for psychology             http://personality-project.org/r
It is 5 minutes to midnight   http://www.thebulletin.org

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.