2015-09-04 57 views
1

我正在使用rela包來檢查我是否可以在我的數據中使用PCA。PCA分析

paf.neur2 <- paf(neur2) 
summary(paf.neur2) 
# [1] "Your dataset is not a numeric object." 

我想看看KMO(Kaiser-Meyer-Olkin度量抽樣充足性測試)。怎麼做? STR(neur2)的

輸出

'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 ... 
     . 

變量都是數字。

+0

請張貼'STR(neur2)'的輸出。 – 2015-09-04 03:35:54

+0

已發佈。輸出太長,但所有變量都是數字。 – Lucia

+0

完成PCA後,我想建議您比較每個主要組件提取的變化百分比與破碎的棒模型結果。 – Ouistiti

回答

4

?pafobject數字數據集(從之前的數據幀通常是被迫矩陣)

所以,你需要把你的data.frame neur2成矩陣:as.matrix(neur2)

下面是使用Seatbelts數據集你的問題的再現:

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 
1

兩個選項,可以爲你做它:

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()。