首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >执行看似无关的回归R时出错

执行看似无关的回归R时出错
EN

Stack Overflow用户
提问于 2018-09-11 11:05:39
回答 1查看 301关注 0票数 0

我想在R中做大量看似不相关的回归(SUR)。为了便于对包含的变量的数量进行操作,我想要自动化这个过程。然而,在使用for循环运行回归时,我遇到了一个错误,而手动方法没有给出任何错误。我使用下面的代码。我收到的错误是:

代码语言:javascript
复制
Error in solve(sigma, tol = solvetol) : 
Lapack routine dsptrf returned error code 11

我使用下面的代码。

代码语言:javascript
复制
region=12
vars=4

# Performing Seemingly Unrelated Regression per variable and every region
for (i in 1:vars){
    system <- list()
    for (j in 1:region){
        eq_single <- data_mat[,j]~data_mat[,j+12] +  data_mat[,j+24] + data_mat[,j+36]
        system[[j]] <- eq_single
        }
    sur <- systemfit(system, method="SUR")
}


# Manually performing Seemingly Unrelated Regression for 2 regions only
Y1 <- data_mat[,1]
Y2 <- data_mat[,region]
X2 <- cbind(data_mat[,j+region] +  data_mat[,26])
eq1 <- Y1 ~ data_mat[,13] +  data_mat[,25]
eq2 <- Y2 ~ X2
system <- list(eq1=eq1, eq2=eq2)
sur <- systemfit(system, method="SUR")
summary(sur)

我在R方面非常缺乏经验,我肯定我做错了什么。如果是的话,我做错了什么?

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-12 10:20:49

R中的公式是不计算的,所以j+12存储的方式完全相同:"j+12"而不是1314等等。这就是为什么您在eq_single中多次使用相同公式的原因。

还请注意,vars不在当前代码中使用。

代码语言:javascript
复制
library(systemfit)
region=12
vars=4

# Performing Seemingly Unrelated Regression per variable and every region
# for (i in 1:vars){ # i is not used in the loop
system <- list()
for (j in 1:region){ 
  # using paste0() to create correct formulas
  eq_single <- formula(paste0('data_mat[,',j,'] ~ data_mat[,',j+12,'] + 
                               data_mat[,',j+24,'] + data_mat[,',j+36,']'))
  system[[j]] = eq_single
}
sur <- systemfit(system,method="SUR")
# }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52274474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档