Elizabeth Barrett-Cheetham
2015-Jan-14 01:46 UTC
[R] Psych package: why am I receiving "NA" for many of the factor scores?
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.
William Revelle
2015-Jan-14 15:39 UTC
[R] Psych package: why am I receiving "NA" for many of the factor scores?
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 <ebarrettcheetham at gmail.com> 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. > > ______________________________________________ > R-help at r-project.org 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
William Revelle
2015-Jan-15 23:22 UTC
[R] Psych package: why am I receiving "NA" for many of the factor scores?
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 <lists at revelle.net> 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 <ebarrettcheetham at gmail.com> 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. >> >> ______________________________________________ >> R-help at r-project.org 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 > > ______________________________________________ > R-help at r-project.org 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