Функция для запуска корреляций для нескольких переменных - PullRequest
0 голосов
/ 15 апреля 2020

Я пытаюсь сделать функцию для запуска корреляций между несколькими переменными, я знаю, что эта функция не работает, но как я могу сделать функцию, чтобы выбрать столбцы A и B и запустить корреляцию? Какие-либо предложения? Ценится!

q1 <- sample(1:100,10)
q2 <- sample(1:100,10)
q3 <- sample(1:100,10)
q4 <- sample(1:100,10)

df <- data.frame(q1,q2,q3,q4)

pcor <- function(df, method) {
  A <- A,data=df 
  B <- B, data=df 
  partCorr <- Hmisc::rcorr((A), (B), type = method)
  return(list(r=partCorr$r[1,2], p=partCorr$P[1,2], n=partCorr$n[1,2]))
}

name <- character()
r <- p <- n <- numeric()
for (i in 1:4) { 
  for (j in (i+1):4) {
    df <- data.frame(A=df[,i], B=df[,j]) 
    pcorResult <- pcor(df, method='spearman')
    name <- c(name, paste0(colnames(all)[i],'_',colnames(all)[j])) 
    r <- c(r,pcorResult$r)
    p <- c(p,pcorResult$p)
    n <- c(n,pcorResult$n)
  }
}


results <- data.frame(name, r, p, n)
r

esults

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

Я сделал несколько небольших настроек, чтобы ваш код работал:

  • переименовал созданный вами в l * 1017 фрейм данных, чтобы он не перезаписывал ваши df,
  • выберите правильные столбцы в функции pcor,
  • имеют диапазон i до 4-1, потому что если i=4, то внутреннее значение для l oop становится for (j in 5:4).
q1 <- sample(1:100,10)
q2 <- sample(1:100,10)
q3 <- sample(1:100,10)
q4 <- sample(1:100,10)

df <- data.frame(q1,q2,q3,q4)

pcor <- function(df, method) {
  partCorr <- Hmisc::rcorr(df$A, df$B, type = method)
  return(list(r=partCorr$r[1,2], p=partCorr$P[1,2], n=partCorr$n[1,2]))
}

name <- character()
r <- p <- n <- numeric()
for (i in 1:(4-1)) { 
  for (j in (i+1):4) {
    df2 <- data.frame(A=df[,i], B=df[,j]) 
    pcorResult <- pcor(df2, method='spearman')
    name <- c(name, paste0(colnames(all)[i],'_',colnames(all)[j])) 
    r <- c(r,pcorResult$r)
    p <- c(p,pcorResult$p)
    n <- c(n,pcorResult$n)
  }
}


results <- data.frame(name, r, p, n)
0 голосов
/ 15 апреля 2020

С моим пониманием вашего вопроса, вы не сможете преобразовать data.frame в матрицу и использовать corr.plot, чтобы решить вашу цель

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...