代码之家  ›  专栏  ›  技术社区  ›  jo_

R中的错误消息:不是对称或三角形矩阵

  •  0
  • jo_  · 技术社区  · 3 年前

    我正在尝试使用 cor2cov 在R。

    library(MBESS)
    eff_1971 <- c(NA, .56, .25, .25, .22, -.47, -.01, -.06)
    eff_1972 <- c(NA, NA, .23, .23, .25, .47, -.01, .03)
    annual_earnings_1970 <- c(NA, NA, NA, .88, .83, -.02, -.28, -.14)
    annual_earnings_1971 <- c(NA, NA, NA, NA, .88, -.02, .21, -.29)
    annual_earnings_1972 <- c(NA, NA, NA, NA, NA, .03, .06, .21)
    change_eff_1971_1972 <- c(NA, NA, NA, NA, NA, NA, 0.0, .1)
    change_ann_earn_1970_1971 <- c(NA, NA, NA, NA, NA, NA, NA, -.29)
    change_ann_earn_1971_1972 <- c(NA, NA, NA, NA, NA, NA, NA, NA)
    df <- data.frame(eff_1971, 
                     eff_1972, 
                     annual_earnings_1970,
                     annual_earnings_1971,
                     annual_earnings_1972,
                     change_eff_1971_1972,
                     change_ann_earn_1970_1971,
                     change_ann_earn_1971_1972)
    df <- as.matrix(df)
    sd <- c(.82, .82, .52, .51, .50, .77, .25, .25)
    cor2cov(df, sd)
    

    但是,我收到了以下错误消息:

    Error in cor2cov(df, sd) : 
      The object 'cor.mat' should be either a symmetric or a triangular matrix
    

    有人知道我如何修复这个错误吗?

    非常感谢。

    1 回复  |  直到 3 年前
        1
  •  0
  •   langtang    3 年前

    通过将diag设置为1,将上限值设置为0,可以将df设置为三角形

    diag(df) <- 1
    df[is.na(df)] <- 0