我有一个函数试图将分段回归模型应用于我的数据。 在某些情况下,数据有大量的缺失值,我没有很好的估计节点在哪里。 我决定绕过分段并进行简单的线性回归:

try(piecewise) if error go to lm with just one slope

这是执行此操作的代码。 请注意, lin.reg是一个辅助函数,它为 x 范围内的lm对象输出predict() 它不会造成任何问题。

piece <- function(x,y){

  # just in case this comes with column names or something
  y <- as.numeric(y)


    # create the lm object
      lm.obj <- lm(y~x)
    # Try to fit piecewise
      seg <- try(segmented(lm.obj,seg.Z=~x))

    #  print(seg)

      if("try-error" %in% class(seg)) {

        # Print that you are using a linear regression and not the piece-wise
          print("Using linear Regression")

        # Call helper function
          result <- lin.reg(x,y)

        # Get out of the error/function
        return(result)
        }

      # Use the piece-wise
      result <- predict(segmented::segmented(lm.obj,seg.Z=~x),
                       newdata = data.frame(x,y))
      print("Using piece-wise regression")

  return(result)

}

问题

当分段出错时,我收到此错误

错误:至少一个系数是 NA:边界处的断点? (可能复制了许多 x 值)

它不可靠/不可预测,有时会被忽略,有时会破坏功能。 我正在使用y值遍历数据帧的行,并且在制动之前相同的调用会到达不同的行。

我相信这与if("try-error" %in% class(seg))可能不是捕获错误的最佳方法有关。

我添加了一些印刷品以确保。 这是它正常工作的时候,注意迭代 284 出错并进入简单线性。

[1] "Using piece-wise regression"
[1] 283
[1] "segmented" "lm"       
[1] "Using piece-wise regression"
[1] 284
Error : at least one coef is NA: breakpoint(s) at the boundary? (possibly with many x-values replicated)
[1] "try-error"
[1] "Using linear Regression"

这是它没有的时候,似乎 try() 调用没有像它应该的那样返回错误

[1] "Using piece-wise regression"
[1] 312
[1] "segmented" "lm"       
[1] "Using piece-wise regression"
[1] 313
[1] "segmented" "lm"       
  Error: at least one coef is NA: breakpoint(s) at the boundary? (possibly with many x-values replicated) 

#1楼 票数:0

在 try 块中添加参数silent=T对我有用。

  ask by Matias Andina translate from so

未解决问题?本站智能推荐:

1回复

方差分析类型错误

我试图用我的数据做方差分析。 我想检查两个因素之间是否存在交互作用。 我使用代码: 但我有一个错误 在lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) :额外的参数 'type' 将被忽略无论我尝试什么类型,总是得到相同的答案
2回复

如何使用lm()修复此无效类型错误?

我有一个数据集(在读取 CSV 文件后称为数据),它包含“保护状态”和“纬度”列。 我正在尝试使用以下方法对这两个执行线性回归 但是,我不断收到上述错误。 好像是因为我的专栏里有两个字。 我尝试过 data$Conservation Status、data$'Conservation Status
2回复

RtryCatch处理一种错误

我想知道这是检查 tryCatch 函数类型的错误或警告的方法,例如在 Java 中。 在 RI 中只找到以一种方式处理所有错误的解决方案,例如
1回复

Sexpr中的错误处理

如何在\\Sexpr允许错误? 我有一个knitr文件。 本文档的一小部分是指无法共享的文件。 所以每当\\Sexpr{a}叫上一些反对a依赖于该文件中读取,则返回一个错误。 我想改为\\Sexpr打印它遇到错误。 例如, 将不会编译(当secret_file.txt不存在时)
1回复

R中的错误处理:tryCatch()语法

我试图绕过R中的错误处理。通过阅读文档,我找不到正确语法的明确定义。 这是一个自包含的示例: 预期产量: 实际输出: 我的问题: 为什么这个tryCatch()调用最终运行两个函数? 为什么我收到上面报告的错误? 我的tryCatch(someFunction(
2回复

使用tryCatch或其他处理Rfacebook中的callAPI错误

我有一个可能包含错误的Facebook用户名列表。 我想打电话给他们的很多人,并获得每个人有多少喜欢。 如果getUsers遇到错误的用户名,我想将其从列表中删除,然后重试。 我想在Rfacebook中做到这一点(但是如果答案是我必须使用httr并自己编写GET请求,就这样吧)。 有
1回复

R:创建一个带有tryCatch错误处理的txt文件

我想知道是否有可能创建带有“错误”信息的日志,从而迫使tryCatch进行“错误处理”? 是为了能够获得潜在错误的可见性。 我想避免打印。 谢谢!
1回复

在R中反复调用lmrob时如何处理错误

作为我正在使用R分析的大量数据的一部分,我对软件包robustbase重复调用了lmrob,以获取一系列数据集。 但是,某些数据集返回错误“本征错误(ret,对称= TRUE):'x'中的值无穷或缺失”。 上面的错误处理并没有抑制它们。 所以我尝试像 这确实可以消除错误和警告。