2017-04-30 76 views
0

psych包中包含一個函數?alpha,它可以計算測試可靠性和某些項目統計信息。當提供原始數據(具有正確/不正確答案的二進制值的數據幀)時,它返回平均值和st值等。開發。爲每個項目。但是,有時它不會,並且僅提供項目 - 整體關聯。psych :: alpha不返回平均值,sd

這是爲什麼?

The docu指出均值和sd僅計算爲「對於數據矩陣[...]」,並且x是「數據幀或數據矩陣或協方差或相關矩陣」。但是它是如何知道我是否給出了原始數據或相關矩陣?

回答

0

alpha命令檢測輸入x是否是使用isCorrelation命令的相關矩陣。 我們考慮這個tutorial給出的數據集:

datafilename <- "http://personality-project.org/R/datasets/extraversion.items.txt" 
items <- read.table(datafilename,header=TRUE)  
df <- with(items, data.frame(q_262 ,q_1480 ,q_819 ,q_1180 ,q_1742)) 

對象dfdata.frame,它的列代表了五個項目的響應。命令isCorrelation(內alpha使用)正確地檢測,這不是一個相關矩陣:

library(psych) 
isCorrelation(df) 
[1] FALSE 

如果我們計算的df相關矩陣,並傳遞給isCorrelation,我們再次得到了正確答案:

mtx <- cor(df) 
isCorrelation(mtx) 
[1] TRUE 

看看裏面的isCorrelation可以看到,一個相關矩陣被定義爲一個對象,它不是一個data.frame(因此,它是一個matrix),它是對稱的:

isCorrelation <- function (x) 
{ 
    return(!is.data.frame(x) && isSymmetric(unname(x))) 
} 
+0

謝謝,有道理。這也意味着原始數據中較少的差異可能導致不正確的分類(因爲它可能碰巧偶然對稱)。這也意味着必須將其轉換爲data.frame以防止這種結果。 – jakub

+0

很難想象一個數據集太小,以至於您會面臨原始數據是對稱矩陣的可能性。如果你這麼少的情況下,你可能不應該打擾找到係數α。 –