【问题标题】:Interval regression with R使用 R 进行区间回归
【发布时间】:2013-04-10 08:51:02
【问题描述】:

我需要对表示为区间(下限和上限)的响应数据执行多元回归分析,我假设该区间是对数正态分布的,关于多个解释变量。

我发现包intReg 可以执行此操作,但没有取得太大成功,因为我不断收到消息。

There were 50 or more warnings (use warnings() to see the first 50) 

这些是我的响应数据的日志:

> head(y)
       lb       ub
[1,] 6.756932 6.852243
[2,] 6.246107 6.400257
[3,] 6.063785 6.246107
[4,] 7.019297 7.093405
[5,] 6.756932 6.852243
[6,] 6.400257 6.533789

以下是我认为最重要的两个变量:

> head(inc_lev)
[1] low    high   high   low    high   middle
Levels: high low middle

> head(usage)
[1] 12.9  8.6  4.3 17.2 12.9 12.9

然后我尝试运行回归,但我得到的只是:

> intreg<-intReg(y~inc_lev+usage, data=data)
There were 50 or more warnings (use warnings() to see the first 50)
Warning messages:
1: In Sys.setlocale("LC_COLLATE", loc) :
  OS reports request to set locale to "" cannot be honored

等等……

所以我的问题是:1)这里有什么问题,2)我做错了什么,3)还有其他方法可以在 R 中执行区间回归吗?

感谢您的帮助!

【问题讨论】:

  • 如果你运行Sys.setlocale(category="LC_COLLATE"),它会说什么?另外,尽管有警告,您是否得到了结果?
  • 当我运行你的命令时,我得到[1] "" Warning message: In Sys.setlocale(category = "LC_COLLATE") : OS reports request to set locale to "" cannot be honored。我也没有得到任何结果。
  • 你确定吗?试试summary(intreg)。该功能并没有停止,它只是发出警告。据我了解,此警告是关于您的系统语言环境和 R 之间的一些不兼容。查看您的系统(Windows?)中设置了哪些语言环境(区域设置?),以及是否“。”在那里用作小数。
  • 好吧,你是对的。我确实得到了对两个变量进行更简单回归的结果,但是当我包含所有解释变量时出现了另一个错误。 summary(intreg) Error in class(coefValues) &lt;- c("coef.intReg", class(coefValues)) : attempt to set an attribute on NULL
  • 我收到了同样的错误信息。你有没有发现问题是什么?

标签: r regression intervals linear-regression


【解决方案1】:

我在日期处理方面遇到了同样的问题,到目前为止一直忽略它,但发现了这个(旧)帖子并决定修复它。

您需要做的是将LC_COLLATE 设置为某个合理的值,无论是在启动R 之前的环境中(export LC_COLLATE=C)还是在R 中:

> as.gset(as.POSIXct(Sys.time()))
{<<POSIXct>>}
Warning message:
In Sys.setlocale("LC_COLLATE", loc) :
  OS reports request to set locale to "" cannot be honored
> Sys.getenv("LC_COLLATE")
[1] ""
> Sys.setenv("LC_COLLATE"="C")
> as.gset(as.POSIXct(Sys.time()))
{<<POSIXct>>}
> Sys.unsetenv("LC_COLLATE")
> as.gset(as.POSIXct(Sys.time()))
{<<POSIXct>>}
Warning message:
In Sys.setlocale("LC_COLLATE", loc) :
  OS reports request to set locale to "" cannot be honored

请注意,Sys.setenv(LC_COLLATE="C") 之后没有错误消息,用于带日期的 gset 操作。我知道您没有使用集合或日期,但我认为这两种情况下的警告可能是由相同的根本原因(排序规则和语言环境)引起的。

如果有人有类似的警告并且可以测试Sys.setlocale 是否有助于解决此问题,请写下关于它是如何工作的评论。

【讨论】:

  • 您的修复有效!我首先在自己的数据上尝试了 intReg,得到了 user224081 遇到的问题。所以我尝试运行 intReg 包的示例,我也收到了警告消息!我希望他们在包参考中提到这个问题。谢谢!
猜你喜欢
  • 2018-03-05
  • 1970-01-01
  • 2017-11-09
  • 2021-12-14
  • 2015-01-06
  • 1970-01-01
  • 1970-01-01
  • 2013-07-29
  • 1970-01-01
相关资源
最近更新 更多