бутстреп на факторах

Mar 17, 2014 15:17

Захотелось мне странного - получить в R стандартные ошибки нагрузок переменных на факторы при помощи бутстрепа. Поиск в инете выдал одну интересную ссылку, автор поста резонно отмечает, что бутстреп в этом случае ожидают некоторые сложности. Проблема в том, что факторы могут на случайных выборках меняться местами. Поэтому очень важно убедиться, что каждый раз мы имеем дело с одним и тем же фактором. В качестве решения предалагалось использовать процедуру прокрустова вращения к заданной матрице. Такой матрицей могут выступать теоретические ключи - предполагаемые нагрузки переменных на факторы. Попробовал этот подход, вроде порлучается неплохо:

require(psych)
require(boot)
# готовим данные по Большой Пятерке
data(bfi)
b5 <- na.omit(bfi)

# матрица ключей для факторов А и С
keys <- matrix(
c( 0, 0, 0, 0, 0, 1, 1, 1,-1,-1,
-1, 1, 1, 1, 1, 0, 0, 0, 0, 0), nrow = 10
)

# функция для выполнения бутстрепа
# внутри полученное факторное решение
# вращается к ключам
factor.fun <- function(data, indices, keys) {
boot.data <- data[indices, 1:10]
fa <- factanal(boot.data, factors=2)
pm <- target.rot(fa$loadings, keys)
return(pm$loadings)
}

# извлекаем 100 бутстреп-выборок
b <- boot(b5, factor.fun, R = 100, keys = keys)
# матрица нагрузок по исходному массиву
b$t0[]
# стандартные бутстреп-ошибки нагрузок
matrix(apply(b$t, 2, sd), 10, 2)

r, маленькие хитрости, методы, хозяйке на заметку

Previous post Next post
Up