首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在心理学中设置“权重”论点::主要功能?

如何在心理学中设置“权重”论点::主要功能?
EN

Stack Overflow用户
提问于 2022-03-31 10:08:33
回答 1查看 120关注 0票数 0

我试图使用PCA进行探索性分析,以确定量表的阶乘结构。我使用的软件包是:

代码语言:javascript
复制
library(GPArotation) # required for `principal` to work
library(psych)

其职能是:

代码语言:javascript
复制
principal()

我想根据参与者的性别调整权重。

下面是我的数据集的一个示例:

代码语言:javascript
复制
GPS_01 GPS_03 GPS_04 GPS_05 GPS_07 GPS_08 GPS_10 GPS_11 GPS_12 GPS_13 GPS_14 GPS_15 GPS_17 GPS_18 GPS_19 gender_pscore
1       1      1      2      2      4      1      3      2      1      1      3      1      2      2      4          0.62
2       1      1      1      1      2      1      1      1      1      1      3      2      3      2      1          2.78
3       1      1      1      1      1      1      1      1      1      1      2      1      2      2      1          0.62
4       1      1      2      2      1      1      1      1      1      1      3      1      1      4      1          0.62
5       4      4      4      4      5      5      4      5      4      4      5      2      5      5      4          0.62
6       1      1      1      1      1      1      1      1      1      1      2      2      3      2      2          0.62
7       1      1      1      1      1      1      2      1      1      1      3      2      4      3      2          0.62
8       1      3      1      1      1      1      3      1      2      1      4      1      4      3      2          0.62
9       3      3      3      5      3      1      4      2      3      1      2      1      5      2      3          0.62
10      1      2      1      1      2      2      1      2      1      2      4      2      2      3      2          0.62
11      1      4      1      1      3      4      1      2      3      1      2      2      3      2      3          0.62
12      1      1      1      1      5      2      1      5      1      3      5      4      5      4      5          0.62
13      1      2      1      1      1      4      1      4      1      3      5      1      4      2      5          0.62
14      1      1      1      1      1      1      1      1      1      1      1      1      1      1      1          0.62
15      1      1      1      1      1      1      1      1      1      1      1      1      1      1      1          0.62
16      1      1      1      1      1      1      2      2      1      1      3      1      1      1      4          0.62
17      2      2      1      2      2      2      4      4      1      4      3      1      2      3      4          0.62
18      1      1      2      2      1      1      1      1      2      1      2      1      2      2      1          0.62
19      1      2      1      1      3      3      1      3      1      1      4      1      3      3      4          0.62
20      1      1      1      2      1      1      2      1      1      1      3      1      2      1      1          2.78

或者更小的原始数据子集(如果更简单的话)

代码语言:javascript
复制
data<-structure(list(GPS_01 = c(1L, 1L, 1L, 1L, 4L, 1L), GPS_03 = c(1L, 
1L, 1L, 1L, 4L, 1L), GPS_04 = c(2L, 1L, 1L, 2L, 4L, 1L), GPS_05 = c(2L, 
1L, 1L, 2L, 4L, 1L), GPS_07 = c(4L, 2L, 1L, 1L, 5L, 1L), GPS_08 = c(1L, 
1L, 1L, 1L, 5L, 1L), GPS_10 = c(3L, 1L, 1L, 1L, 4L, 1L), GPS_11 = c(2L, 
1L, 1L, 1L, 5L, 1L), GPS_12 = c(1L, 1L, 1L, 1L, 4L, 1L), GPS_13 = c(1L, 
1L, 1L, 1L, 4L, 1L), GPS_14 = c(3L, 3L, 2L, 3L, 5L, 2L), GPS_15 = c(1L, 
2L, 1L, 1L, 2L, 2L), GPS_17 = c(2L, 3L, 2L, 1L, 5L, 3L), GPS_18 = c(2L, 
2L, 2L, 4L, 5L, 2L), GPS_19 = c(4L, 1L, 1L, 1L, 4L, 2L), gender_pscore = c(0.62, 
2.78, 0.62, 0.62, 0.62, 0.62)), row.names = c(NA, 6L), class = "data.frame")

在这里,我使用的代码:

代码语言:javascript
复制
pc <-  principal(data[,1:15], nfactors = 3, rotate ="oblimin",weights ="gender_pscore")

我总是遇到同样的问题:

代码语言:javascript
复制
Error in (function (L, Tmat = diag(ncol(L)), gam = 0, normalize = FALSE,  : 
  unused argument (weights = "gender_pscore")
Error in array(x, c(length(x), 1L), if (!is.null(names(x))) list(names(x),  : 
  'data' must be of a vector type, was 'NULL'
In addition: Warning message:
In data[,1:20], nfactors = 3, rotate = "oblimin",  :
  The requested transformaton failed, Promax was used instead as an oblique transformation

我对使用R很陌生,所以不知道如何解决这个问题。当我移除weights ="gender_pscore"时,问题就消失了。但是在这种情况下,我不能再根据参与者的性别对我的因子分析应用调整权重。

EN

回答 1

Stack Overflow用户

发布于 2022-04-04 06:53:28

weight似乎是principal()函数的正确参数。我认为问题来自您告诉principal()使用列"gender_pscore“的方式。

?principal中我们可以看出,weight是长度的向量,n.obs包含每个观测的权重。如果使用weight = "gender_pscore",则向weight参数中提供一个长度为1的字符向量。

选择数据中的列应解决您的问题:

代码语言:javascript
复制
psych::principal(df[,1:15], 
                 nfactors = 3, 
                 rotate ="oblimin",
                 weight = df[,"gender_pscore"])

警告:--这不是一般规则,它们是与引用或未引用的列名(例如:大多数tidyverse函数)一起工作的函数!

上述代码的输出:

代码语言:javascript
复制
> psych::principal(df[,1:15], 
+                  nfactors = 3, 
+                  rotate ="oblimin",
+                  weight = df[,"gender_pscore"])
Principal Components Analysis
Call: psych::principal(r = df[, 1:15], nfactors = 3, rotate = "oblimin", 
    weight = df[, "gender_pscore"])
Standardized loadings (pattern matrix) based upon correlation matrix
         TC1   TC3   TC2   h2      u2 com
GPS_01  0.83  0.13  0.22 0.99 0.01288 1.2
GPS_03  0.83  0.13  0.22 0.99 0.01288 1.2
GPS_04  0.81  0.29 -0.17 0.99 0.00837 1.4
GPS_05  0.81  0.29 -0.17 0.99 0.00837 1.4
GPS_07  0.08  0.88  0.15 0.94 0.05795 1.1
GPS_08  0.83  0.13  0.22 0.99 0.01288 1.2
GPS_10  0.28  0.81 -0.07 1.00 0.00011 1.3
GPS_11  0.63  0.43  0.11 0.99 0.00559 1.8
GPS_12  0.83  0.13  0.22 0.99 0.01288 1.2
GPS_13  0.83  0.13  0.22 0.99 0.01288 1.2
GPS_14  0.69  0.19  0.23 0.83 0.17091 1.4
GPS_15 -0.05 -0.20  1.00 0.95 0.05006 1.1
GPS_17  0.25  0.20  0.81 0.99 0.01386 1.3
GPS_18  1.17 -0.28 -0.23 0.97 0.03065 1.2
GPS_19 -0.01  0.99 -0.13 0.95 0.05381 1.0

                       TC1  TC3  TC2
SS loadings           8.23 3.99 2.31
Proportion Var        0.55 0.27 0.15
Cumulative Var        0.55 0.81 0.97
Proportion Explained  0.57 0.27 0.16
Cumulative Proportion 0.57 0.84 1.00

 With component correlations of 
     TC1  TC3  TC2
TC1 1.00 0.65 0.24
TC3 0.65 1.00 0.19
TC2 0.24 0.19 1.00

Mean item complexity =  1.3
Test of the hypothesis that 3 components are sufficient.

The root mean square of the residuals (RMSR) is  0.02 
 with the empirical chi square  0.52  with prob <  1 

Fit based upon off diagonal values = 1Warning messages:
1: In cor.smooth(r) : Matrix was not positive definite, smoothing was done
2: In psych::principal(df[, 1:15], nfactors = 3, rotate = "oblimin",  :
  The matrix is not positive semi-definite, scores found from Structure loadings

dput of df

代码语言:javascript
复制
df <- structure(list(GPS_01 = c(1L, 1L, 1L, 1L, 4L, 1L), GPS_03 = c(1L, 
1L, 1L, 1L, 4L, 1L), GPS_04 = c(2L, 1L, 1L, 2L, 4L, 1L), GPS_05 = c(2L, 
1L, 1L, 2L, 4L, 1L), GPS_07 = c(4L, 2L, 1L, 1L, 5L, 1L), GPS_08 = c(1L, 
1L, 1L, 1L, 5L, 1L), GPS_10 = c(3L, 1L, 1L, 1L, 4L, 1L), GPS_11 = c(2L, 
1L, 1L, 1L, 5L, 1L), GPS_12 = c(1L, 1L, 1L, 1L, 4L, 1L), GPS_13 = c(1L, 
1L, 1L, 1L, 4L, 1L), GPS_14 = c(3L, 3L, 2L, 3L, 5L, 2L), GPS_15 = c(1L, 
2L, 1L, 1L, 2L, 2L), GPS_17 = c(2L, 3L, 2L, 1L, 5L, 3L), GPS_18 = c(2L, 
2L, 2L, 4L, 5L, 2L), GPS_19 = c(4L, 1L, 1L, 1L, 4L, 2L), gender_pscore = c(0.62, 
2.78, 0.62, 0.62, 0.62, 0.62)), row.names = c(NA, 6L), class = "data.frame")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71690659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档