RDocumentation: cor
  • AI Chat
  • Code
  • Report
  • Beta
    Spinner

    Note that this notebook was automatically generated from an RDocumentation page. It depends on the package and the example code whether this code will run without errors. You may need to edit the code to make things work.

    if(!require('stats')) {
        install.packages('stats')
        library('stats')
    }
    var(1:10)  # 9.166667
    
    var(1:5, 1:5) # 2.5
    
    ## Two simple vectors
    cor(1:10, 2:11) # == 1
    
    ## Correlation Matrix of Multivariate sample:
    (Cl <- cor(longley))
    ## Graphical Correlation Matrix:
    symnum(Cl) # highly correlated
    
    ## Spearman's rho  and  Kendall's tau
    symnum(clS <- cor(longley, method = "spearman"))
    symnum(clK <- cor(longley, method = "kendall"))
    ## How much do they differ?
    i <- lower.tri(Cl)
    cor(cbind(P = Cl[i], S = clS[i], K = clK[i]))
    
    
    ## cov2cor() scales a covariance matrix by its diagonal
    ##           to become the correlation matrix.
    cov2cor # see the function definition {and learn ..}
    stopifnot(all.equal(Cl, cov2cor(cov(longley))),
              all.equal(cor(longley, method = "kendall"),
                cov2cor(cov(longley, method = "kendall"))))
    
    ##--- Missing value treatment:
    <-- % "everything", "all.obs", "complete.obs", "na.or.complete", "pairwise.complete.obs" -->
    C1 <- cov(swiss)
    range(eigen(C1, only.values = TRUE)$values) # 6.19        1921
    
    ## swM := "swiss" with  3 "missing"s :
    swM <- swiss
    colnames(swM) <- abbreviate(colnames(swiss), min=6)
    swM[1,2] <- swM[7,3] <- swM[25,5] <- NA # create 3 "missing"
    
    ## Consider all 5 "use" cases :
    (C. <- cov(swM)) # use="everything"  quite a few NA's in cov.matrix
    try(cov(swM, use = "all")) # Error: missing obs...
    C2 <- cov(swM, use = "complete")
    stopifnot(identical(C2, cov(swM, use = "na.or.complete")))
    range(eigen(C2, only.values = TRUE)$values) # 6.46   1930
    C3 <- cov(swM, use = "pairwise")
    range(eigen(C3, only.values = TRUE)$values) # 6.19   1938
    
    ## Kendall's tau doesn't change much:
    symnum(Rc <- cor(swM, method = "kendall", use = "complete"))
    symnum(Rp <- cor(swM, method = "kendall", use = "pairwise"))
    symnum(R. <- cor(swiss, method = "kendall"))
    
    ## "pairwise" is closer componentwise,
    summary(abs(c(1 - Rp/R.)))
    summary(abs(c(1 - Rc/R.)))
    
    ## but "complete" is closer in Eigen space:
    EV <- function(m) eigen(m, only.values=TRUE)$values
    summary(abs(1 - EV(Rp)/EV(R.)) / abs(1 - EV(Rc)/EV(R.)))