1

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

我发现该软件包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

ETC...

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

感谢您的帮助!

4

1 回答 1

0

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

您需要做的是LC_COLLATE在启动 R ( ) 之前的环境中或从 R 内部设置一些合理的值export LC_COLLATE=C

> 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帮助,请写下关于它是如何工作的评论。

于 2015-03-04T08:51:27.240 回答