【问题标题】:Error in eigen(Sigma, symmetric = TRUE) : 0 x 0 matrix in MetRology uncertMC with 2x2 correlation matrix特征误差(Sigma,对称 = TRUE):MetRology uncertMC 中的 0 x 0 矩阵与 2x2 相关矩阵
【发布时间】:2020-04-01 13:26:40
【问题描述】:

我正在尝试学习如何在 R 中使用 MetRology 包。我一直使用 GUM 手册附录 H.2 中的数据作为一个简单的示例来尝试蒙特卡罗不确定性传播,包括相关性。我有两个变量 V 和 I。因此,我有一个 2x2 相关矩阵,其中 I,V 在非对角线元素中的相关性。如果我将此矩阵提供给 uncertMC 函数,则会收到错误消息:“特征错误(Sigma,对称 = TRUE):0 x 0 矩阵”。如果我不包括相关矩阵,我不会得到错误。为什么在包含相关性时会出现错误?计量手册有一个包含四个变量和一个 4x4 相关矩阵的示例,适用于我。有什么明显的我做错了吗?

提前谢谢你!

library(errors) # for gum H.2 dataset
library(metRology) # for uncertMC

#extract relevant data

meanV  <-  with(GUM.H.2, mean(V))
meanI  <-  with(GUM.H.2, mean(I))

#uncertainties of the mean as per GUM (over sqrt(N))

uV <-  with(GUM.H.2, sd(V)/sqrt(length(V)))
uI <-  with(GUM.H.2, sd(I)/sqrt(length(I)))

# correlation between V and I

corIV  <-  with(GUM.H.2, cor(I,V))

#set up a 2 x 2 correlation matrix

u.cor <-  diag(1,2)

# off-diagonal elements

u.cor[1,2] <- u.cor[2,1] <-  corIV

#set up inputs for uncertMC

# the expression Z = V/I

expr <-  expression(V/I)

x <- list(V= meanV, I= meanI)

u  <-  list(V=uV, I=uI)

u.MC <-  uncertMC(expr = expr, x = x, u = u, cor = u.cor)

#errors with Error in eigen(Sigma, symmetric = TRUE) : 0 x 0 matrix

【问题讨论】:

    标签: r montecarlo


    【解决方案1】:

    我正在检查 traceback 和 uncertMC 函数,并且有一段代码可以定义 Sigma:

    Sigma = cov[cor.vars, cor.vars]
    

    但是cor.vars被定义为:

    cor.vars <- which(rowSums(cor) > (1 + .Machine$double.eps * 
                nrow(cor)))
    

    问题是如果你有负相关,最终rowSums(cor)将不满足条件,所以你会得到integer(0)

    正如您所说,metRology 手册有一个示例,其中包含四个变量和一个 4x4 相关矩阵,对您有用,但如果您更改相关符号,您会得到相同的错误:

    expr <- expression(a+b*2+c*3+d/2)
    x <- list(a=1, b=3, c=2, d=11)
    u <- lapply(x, function(x) x/10)
    u.cor<-diag(1,4)
    u.cor[3,4]<-u.cor[4,3]<- -0.5 # change sign to negative
    u.formc.MC<-uncertMC(~a+b*2+c*3+d/2, x, u, cor=u.cor, keep.x=TRUE)
    u.formc.MC
    
    # Error in eigen(Sigma, symmetric = TRUE) : 0 x 0 matrix
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-29
      • 2019-04-15
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-29
      相关资源
      最近更新 更多