Объект «w» не нашел ошибку в факторном анализе с пакетом «psych»

Много вопросов по факторному анализу на этих страницах. Я просмотрел их, но ничего не похоже, так что, надеюсь, кто-то может помочь.

Я провожу факторный анализ по некоторым вопросам опроса, в которых я ожидаю появления некоторых скрытых конструктов. Я запускаю либо основные оси, либо minres и получаю ту же проблему, как описано ниже.

Мой набор данных содержит много дискретных переменных и разумное количество отсутствующих переменных, закодированных как NA, но даже после удаления всех NA проблема сохраняется:

minres.out <- factor.minres(r = res, nfactors = 5, residuals=F, rotate = "varimax", n.obs=NA, scores=F, SMC=T, missing=F, min.err=0.001, ,max.iter=50, symmetric=T,warnings=T,fm="minres")
  minres.out

minres.out2 <- fa(r = res, nfactors = 5, residuals=F, rotate = "oblimin", n.obs=NA, scores=F, SMC=T, missing=F, impute="median",min.err=0.001, ,max.iter=50, symmetric=T,warnings=T,fm="minres", alpha=0.1, p=0.05,oblique.scores=F, use="pairwise")
  minres.out2

Первый использует устаревшую версию и выдает мне предупреждение, но он работает. Второй выдает следующую ошибку:

Error in factor.scores(x.matrix, f = Structure, method = scores) : 
  object 'w' not found

У меня нет объекта w в моих данных, но я не очень понимаю, что этот объект должен быть в первую очередь.

Запуск traceback() дает мне:

3: factor.scores(x.matrix, f = Structure, method = scores)
2: fac(r = r, nfactors = nfactors, n.obs = n.obs, rotate = rotate, 
       scores = scores, residuals = residuals, SMC = SMC, covar = covar, 
       missing = FALSE, impute = impute, min.err = min.err, max.iter = max.iter, 
       symmetric = symmetric, warnings = warnings, fm = fm, alpha = alpha, 
       oblique.scores = oblique.scores, np.obs = np.obs, use = use, 
       ...)
1: fa(r = res, nfactors = 5, residuals = F, rotate = "oblimin", 
       n.obs = NA, scores = F, SMC = T, missing = F, impute = "median", 
       min.err = 0.001, , max.iter = 50, symmetric = T, warnings = T, 
       fm = "minres", alpha = 0.1, p = 0.05, oblique.scores = F, 
       use = "pairwise")

Не очень познавательно для меня. Любые предложения относительно этого w?


person SJDS    schedule 26.06.2014    source источник
comment
Мне хочется отправить вопрос на сайт SO, потому что он связан исключительно с R. Если вы предоставите данные - чтобы люди могли проверить их в R или других программах, которые им нравятся, - это оправдало бы вопрос как статистический. (Всегда показывать таблицу данных.)   -  person ttnphns    schedule 27.06.2014


Ответы (2)


Я прошел код построчно. Кажется, что scores нельзя передать в качестве аргумента функции factor.scores. Он проходит через оператор switch, и ни одна из ветвей не активируется, поэтому у вас нет значения для w, что приводит к сбою. Вы можете попробовать скопировать и вставить следующее глупое исправление в сеанс R, а затем снова запустить свой код:

fa <- function(r, nfactors = 1, n.obs = NA, n.iter = 1, rotate = "oblimin", 
    scores = "regression", residuals = FALSE, SMC = TRUE, covar = FALSE, 
    missing = FALSE, impute = "median", min.err = 0.001, max.iter = 50, 
    symmetric = TRUE, warnings = TRUE, fm = "minres", alpha = 0.1, 
    p = 0.05, oblique.scores = FALSE, np.obs = NULL, use = "pairwise", 
    ...){

scores <- c("a","b")
psych::fa(r, nfactors = 1, n.obs = NA, n.iter = 1, rotate = "oblimin", 
    scores = "regression", residuals = FALSE, SMC = TRUE, covar = FALSE, 
    missing = FALSE, impute = "median", min.err = 0.001, max.iter = 50, 
    symmetric = TRUE, warnings = TRUE, fm = "minres", alpha = 0.1, 
    p = 0.05, oblique.scores = FALSE, np.obs = NULL, use = "pairwise", 
    ...)
}
person Flounderer    schedule 27.06.2014

У меня была такая же ошибка. Мой был вызван тем, что я пытался передать «регрессию» в баллы вместо «регрессии». Поэтому убедитесь, что то, что вы передаете в баллы, является приемлемым параметром.

person Matt    schedule 01.07.2016
comment
Это должно быть опубликовано как комментарий к исходному сообщению, это не полный ответ. - person bryan kennedy; 01.07.2016