Как убрать звезды значимости из функции chart.correlation - PullRequest
0 голосов
/ 24 июня 2019

Я использую программу диаграммы производительности.корреляции для 13 переменных.Я хочу удалить значимые звезды из верхнего квадранта.

Я попытался использовать ..., а затем добавить "stars = FALSE" и другие комбинации, основываясь на чтении зависимостей, используемых этим пакетом.Это основной вопрос, который, если ответит, научит меня и других, как правильно искать зависимости и как их менять в пакетах R.

library(PerformanceAnalytics)
my_data <- mtcars[, c(1,3,4,5,6,7)]
chart.Correlation(my_data, histogram = TRUE, pch = 19)

Как и ожидалось, для значимых p-значений существуют ярко-красные звезды.Любая помощь в их исчезновении приветствуется.

1 Ответ

0 голосов
/ 24 июня 2019

Если вы посмотрите на код для chart.Correlation, вы увидите, что звезды генерируются с помощью symnum().Вы можете создать копию функции и прокомментировать это, а также вызвать text(), который их размещает.

chart.Correlation.nostars <- function (R, histogram = TRUE, method = c("pearson", "kendall", 
                                          "spearman"), ...) 
{
  x = checkData(R, method = "matrix")
  if (missing(method)) 
    method = method[1]
  panel.cor <- function(x, y, digits = 2, prefix = "", 
                        use = "pairwise.complete.obs", method = "pearson", 
                        cex.cor, ...) {
    usr <- par("usr")
    on.exit(par(usr))
    par(usr = c(0, 1, 0, 1))
    r <- cor(x, y, use = use, method = method)
    txt <- format(c(r, 0.123456789), digits = digits)[1]
    txt <- paste(prefix, txt, sep = "")
    if (missing(cex.cor)) 
      cex <- 0.8/strwidth(txt)
    test <- cor.test(as.numeric(x), as.numeric(y), method = method)
    # Signif <- symnum(test$p.value, corr = FALSE, na = FALSE, 
    #                  cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1), symbols = c("***", 
    #                                                                           "**", "*", ".", " "))
    text(0.5, 0.5, txt, cex = cex * (abs(r) + 0.3)/1.3)
    # text(0.8, 0.8, Signif, cex = cex, col = 2)
  }
  f <- function(t) {
    dnorm(t, mean = mean(x), sd = sd.xts(x))
  }
  dotargs <- list(...)
  dotargs$method <- NULL
  rm(method)
  hist.panel = function(x, ... = NULL) {
    par(new = TRUE)
    hist(x, col = "light gray", probability = TRUE, 
         axes = FALSE, main = "", breaks = "FD")
    lines(density(x, na.rm = TRUE), col = "red", lwd = 1)
    rug(x)
  }
  if (histogram) 
    pairs(x, gap = 0, lower.panel = panel.smooth, upper.panel = panel.cor, 
          diag.panel = hist.panel)
  else pairs(x, gap = 0, lower.panel = panel.smooth, upper.panel = panel.cor)
}


chart.Correlation.nostars(my_data)

enter image description here

...