首页
学习
活动
专区
圈层
工具
发布

PCA分析
EN

Stack Overflow用户
提问于 2015-09-04 03:31:07
回答 2查看 648关注 0票数 1

我正在使用rela包来检查是否可以在数据中使用PCA。

代码语言:javascript
复制
paf.neur2 <- paf(neur2)
summary(paf.neur2)
# [1] "Your dataset is not a numeric object."

我想看看KMO (抽样适足性检验)。怎么做?

str(neur2)输出

代码语言:javascript
复制
  'data.frame': 1457 obs. of  66 variables:
   $ userid : int  200 387 458 649 931 991 1044 1075 1347 1360 ...
   $ funct  : num  3.73 3.79 3.54 3.04 3.81 ...
   $ pronoun: num  2.26 2.55 2.49 1.98 2.71 ...
      .
      .
      . 
   $ time   : num  1.68 1.87 1.51 1.03 1.74 ...
   $ work   : num  0.7419 0.2311 -0.1985 -1.6094 -0.0619 ...
   $ achieve: num  0.174 0.2469 0.1823 -0.478 -0.0513 ...
   $ leisure: num  0.2852 0.0296 0.0583 -0.3567 -0.0408 ...
   $ home   : num  -0.844 -0.58 -0.844 -2.207 -1.079 ...
      .

变量都是数字的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-04 03:47:38

根据?paf的说法,object是一个数值数据集(通常是来自先前数据帧的强制矩阵)。

因此,您需要将data.frame neur2转换为一个矩阵:as.matrix(neur2)

下面是使用Seatbelts数据集再现您的问题:

代码语言:javascript
复制
library(rela)

Belts <- Seatbelts[,1:7]
class(Belts)
# [1] "mts"    "ts"     "matrix"

Belts <- as.data.frame(Belts)
# [1] "data.frame"

paf.belt <- paf(Belts)
[1] "Your dataset is not a numeric object."

Belts <- as.matrix(Belts)
class(Belts)
# [1] "matrix"

paf.belt <- paf(Belts)  # Works
票数 4
EN

Stack Overflow用户

发布于 2015-09-04 03:44:38

有两种选择可以帮到你:

代码语言:javascript
复制
kmo_DIY <- function(df){ 
csq = cor(df)^2 
csumsq = (sum(csq)-dim(csq)[1])/2 
library(corpcor) 
pcsq = cor2pcor(cor(df))^2 
pcsumsq = (sum(pcsq)-dim(pcsq)[1])/2 
kmo = csumsq/(csumsq+pcsumsq) 
return(kmo) 
} 

来自心理包的函数KMO()。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32389628

复制
相关文章

相似问题

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