微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R:由于反转矩阵而导致循环终止

如何解决R:由于反转矩阵而导致循环终止

我正在尝试使用 R 重现 Wang 和 Xia (2009) 结果,并且我有以下 for 循环:

B #  'initialization'. Matrix of estimates based on varying Coefficient Model
a = c(seq(0,1,length = 50),seq(2,100,length = 10))
all_B = list()

for(i in 1:length(a)){
  tol = 1e-6
  itr = 0
  Bhat_old = B
  lambdaj  = a/ n**(-0.5)/apply(B,2,euclidean)
   
 repeat{

    itr = itr + 1
    Bhat_new = My_fn(Bhat_old,x,y,z,lambdaj)

    criterion = max(abs(Bhat_new - Bhat_old))
    if(criterion < tol) break 

    Bhat_old = Bhat_new
  }
  all_B[[i]] = Bhat_new
  
}

其中 euclideanMy_fn 分别是计算欧氏距离和新估计值的函数z 是索引变量。

我的问题是 My_fn 需要计算某个矩阵的逆。有时,经过几次迭代后,我会收到以下错误

系统在计算上是奇异的:倒数条件数 = 0

我在 tol = 1e-20 中设置了参数 solve(),但仍然出现相同的错误。我在需要求逆的矩阵的对角线上添加一个小数 1e-4,但也无济于事。

我想执行以下操作之一:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。