【问题标题】:Getting data frame from loadings of factor analysis (fa function in psych)从因子分析的负载中获取数据框(心理中的 fa 函数)
【发布时间】:2019-04-13 19:53:35
【问题描述】:

我有一个如下的数据框:

x <- c(1, 2, 1, 2)
y <- c(1, 2, 3, 4)
z <- c(4, 3, 2, 1)
df <- data.frame(x, y, z)

我正在使用 psych 包中的 fa 函数进行因子分析:

fit <- fa(df, nfactors = 2)
fit$loadings

这会产生以下输出:

Loadings:
  MR1    MR2   
x  0.448       
y  0.999       
z -0.999       

                 MR1   MR2
SS loadings    2.195 0.000
Proportion Var 0.732 0.000
Cumulative Var 0.732 0.732

我想将包含 MR1 和 MR2 的表保存为数据框。有谁知道如何做到这一点?谢谢。

【问题讨论】:

    标签: r dataframe psych factor-analysis


    【解决方案1】:
    x <- c(1, 2, 1, 2)
    y <- c(1, 2, 3, 4)
    z <- c(4, 3, 2, 1)
    df <- data.frame(x, y, z)
    
    fit <- psych::fa(df, nfactors = 2)
    
    x <- fit$loadings
    

    通过stats:::print.loadings:

    Lambda <- unclass(x)
    p <- nrow(Lambda)
    factors <- ncol(Lambda)
    
    vx <- colSums(x^2)
    varex <- rbind(`SS loadings` = vx)
    
    if (is.null(attr(x, "covariance"))) {
      varex <- rbind(varex, `Proportion Var` = vx/p)
      if (factors > 1) 
        varex <- rbind(varex, `Cumulative Var` = cumsum(vx/p))
    }
    
    tibble::rownames_to_column(as.data.frame(varex), "x")
    ##                x       MR1          MR2
    ## 1    SS loadings 2.1954555 3.000000e-30
    ## 2 Proportion Var 0.7318185 1.000000e-30
    ## 3 Cumulative Var 0.7318185 7.318185e-01
    

    而且,对于第一个表:

    cutoff <- 0.1 # (the default for the `print.loadings()` function)
    Lambda <- unclass(x)
    p <- nrow(Lambda)
    fx <- setNames(Lambda, NULL)
    fx[abs(Lambda) < cutoff] <- NA_real_
    fx <- as.data.frame(fx)
    rownames(fx) <- NULL
    fx
    ##          MR1 MR2
    ## 1  0.4476761  NA
    ## 2  0.9987596  NA
    ## 3 -0.9987596  NA
    

    【讨论】:

    • 这很好用。对不起,我不够具体:我想将第一个表变成一个数据框(带有 MR1、MR2、x、y、z 的那个)。这是否可以以不需要列出原始 df 数据框 (x, y, z) 中的所有变量的方式完成?
    • 已更新以说明需要第一个表并使用 NA 与另一列的空白。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多