在主对角线上具有可靠性的相关图

时间:2018-04-15 09:43:38

标签: r

我对R很新,这是我在第一步中遇到的事情。

在一些论文中,需要提出一个相关变量的主要对角线相关变量的可靠性(Cronbach Alpha)的相关图(其中相关性为1)

一个例子可能是5个相关的心理测量指标

Job_ins(平均4项)

就业能力(平均4项)

INT_to_quit(平均4项)

Mobility_pref(平均5项)

Career_self_mgmt(平均8项)

请注意,在原生cor()R函数中,主要诊断(度量与自身的相关性)显示为1.

我想做的是在主对角线中呈现内部可靠性(cronbach alphas)。

任何想法?

萨尔

1 个答案:

答案 0 :(得分:0)

如果我理解正确,这是我的(长期)解决方案。

#Loading pkgs
require(tidyverse)
require(Hmisc)
require(psych)

#Creating example data
set.seed(123) #making the random data reproducible
#Creating the items for each subject
job <- sim.congeneric(N=200, short = FALSE, low = 1, high=10,categorical=TRUE)
Employability <- sim.congeneric(N=200, short = FALSE, low = 1, high=10,categorical=TRUE)
Career <- sim.congeneric(N=200, short = FALSE, low = 1, high=10,categorical=TRUE)
#Arranging the data to one data.frame
df <- data.frame(as.data.frame(job$observed) %>% 
                   set_names(c("job1", "job2", "job3", "job4")), 
                 as.data.frame(Employability$observed) %>% 
                   set_names(c("Employability1", "Employability2",
                               "Employability3", "Employability4")), 
                 as.data.frame(job$observed) %>% 
                   set_names(c("Career1", "Career2", "Career3", "Career4")))


#Creating a vector with the Cronbach's alpha for each subject
CronAlpha <- c(
  alpha(df %>% 
          select(job1, job2, job3, job4))$total$std.alpha,
  alpha(df %>% 
          select(Employability1, Employability2,
                 Employability3, Employability4))$total$std.alpha,
  alpha(df %>% 
          select(Career1, Career2,
                 Career3, Career4))$total$std.alpha)

#Calculating the mean for each subject, than the correlations
Correlation <- df %>% 
  #Calculating the means
  mutate(job = rowMeans(data.frame(job1, job2, job3, job4), na.rm = TRUE), 
         Employability =rowMeans(data.frame(Employability1, Employability2,
                                            Employability3, Employability4), na.rm = TRUE),
         Career =rowMeans(data.frame(Career1, Career2,
                                     Career3, Career4), na.rm = TRUE)) %>% 
  #Selecting only the vars that I want for the correlation matrix
  select(job, Employability, Career) %>%
  as.matrix() %>% 
  rcorr()

#Extracting the Pearson's r
CorrelationRs <- Correlation$r 

#Looping through the correlation data.frame and replacing with
# Cronbach's alpha
i <- 1
for (i in 1:nrow(CorrelationRs)) {
  CorrelationRs[i, i] <- CronAlpha[i]

}

CorrelationRs

修改

我应该使用diag()而不是使用循环。

diag(CorrelationRs) <- CronAlpha