首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有分类调查数据的奇点

有分类调查数据的奇点
EN

Stack Overflow用户
提问于 2020-05-19 11:26:31
回答 1查看 671关注 0票数 2

在我的学士学位论文中,我试图对来自一项调查(见A.Blass公式(2008年))的常数和数据应用线性中值回归模型。这是对A. Blass等人(2008)提出的概率启发方法的尝试--利用启发式选择概率估计随机效用模型:电力可靠性偏好

我的因变量是常数和分配的对数-赔率变换。使用下列公式计算:

代码语言:javascript
复制
PE_raw <- PE_raw %>% group_by(sys_RespNum, Task) %>% mutate(LogProb = c(log(Response[1]/Response[1]),
                                                         log(Response[2]/Response[1]),
                                                         log(Response[3]/Response[1])))

我的自变量是交货成本、最小订单数量和交货窗口,每个类别变量的级别为0、1、2和3。在这里,0表示无选项。

数据快照

我尝试运行以下分位数回归(使用R的quantreg包):

代码语言:javascript
复制
LAD.factor <- rq(LogProb ~ factor(`Delivery costs`) + factor(`Minimum order quantity`) + factor(`Delivery window`) + factor(NoneOpt), data=PE_raw, tau=0.5)

但是,我遇到了以下错误,表示奇点:

代码语言:javascript
复制
Error in rq.fit.br(x, y, tau = tau, ...) : Singular design matrix

我进行了线性回归,并应用R的别名函数进行进一步的研究。这使我了解到三种完美的多重共线性情况:

  • 最低订购数量3=交货费用1+交货费用2+交货费用3-最低订购数量1-最低订购数量2
  • 交货窗口3=交货费用1+交货费用2+交货费用3-交货窗口1-交货窗口2
  • NoneOpt =拦截-交货费用1-交货费用2-交货费用3

事后看来,这些案件都是有道理的。当R二分分类变量时,通过构造得到这些结果:交货成本1 +交货成本2+交货成本3=1,最小订购量1+最小订购量2+最小订购量3=1。重写给出了第一个公式。

看起来像个经典的假陷阱。为了解决这个问题,我尝试手动对数据进行二分法,并使用了以下公式:

代码语言:javascript
复制
LM.factor <- rq(LogProb ~ Delivery.costs_1 + Delivery.costs_2 + Minimum.order.quantity_1 + Minimum.order.quantity_2 + Delivery.window_1 + Delivery.window_2 + factor(NoneOpt), data=PE_dichomitzed, tau=0.5)

我现在得到的不是错误消息,而是下面的内容:

代码语言:javascript
复制
    Warning message:
In rq.fit.br(x, y, tau = tau, ...) : Solution may be nonunique

当使用摘要函数时:

代码语言:javascript
复制
 > summary(LM.factor)
Error in base::backsolve(r, x, k = k, upper.tri = upper.tri, transpose = transpose,  : 
  singular matrix in 'backsolve'. First zero in diagonal [2]
In addition: Warning message:
In summary.rq(LM.factor) : 153 non-positive fis

有人熟悉这个问题吗?我正在寻找替代的解决方案。也许我在使用rq()函数时出错了,或者数据可能被错误地描述了。

我很感谢您提供的任何意见,谢谢。

可复制示例

代码语言:javascript
复制
library(quantreg)

#### Raw dataset (PE_raw_SO) ####

# quantile regression (produces singularity error)
LAD.factor <- rq(
  LogProb ~ factor(`Delivery costs`) +
    factor(`Minimum order quantity`) + factor(`Delivery window`) +
    factor(NoneOpt),
  data = PE_raw_SO,
  tau = 0.5
) 

# linear regression to check for singularity
LM.factor <- lm(
  LogProb ~ factor(`Delivery costs`) +
    factor(`Minimum order quantity`) + factor(`Delivery window`) +
    factor(NoneOpt),
  data = PE_raw_SO
)
alias(LM.factor)

# impose assumptions on standard errors
summary(LM.factor, se = "iid")
summary(LM.factor, se = "boot")


#### Manually created dummy variables to get rid of
#### collinearity (PE_dichotomized_SO) ####
LAD.di.factor <- rq(
  LogProb ~ Delivery.costs_1 + Delivery.costs_2 +
    Minimum.order.quantity_1 + Minimum.order.quantity_2 +
    Delivery.window_1 + Delivery.window_2 + factor(NoneOpt),
  data = PE_dichotomized_SO,
  tau = 0.5
)

summary(LAD.di.factor)  #backsolve error

# impose assumptions (unusual results)
summary(LAD.di.factor, se = "iid") 
summary(LAD.di.factor, se = "boot")

# linear regression to check for singularity
LM.di.factor <- lm(
  LogProb ~ Delivery.costs_1 + Delivery.costs_2 +
    Minimum.order.quantity_1 + Minimum.order.quantity_2 +
    Delivery.window_1 + Delivery.window_2 + factor(NoneOpt),
  data = PE_dichotomized_SO
)
alias(LM.di.factor)

summary(LM.di.factor)  #regular results, all significant

链接到示例数据+代码:GitHub

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-19 11:43:46

当使用虚拟解释变量进行分位数回归时,Solution may be nonunique行为并不少见。

参见,例如,四重常见问题

回归分位数的估计是一个线性规划问题。最优解可能不是唯一的。

对于正在发生的事情,罗杰·肯克(quantreg的作者)在2006年的r-帮助上给出了一个更直观的解释。

当从具有偶数不同值的样本计算中值时,其值本质上存在一些模糊性:中间统计数据之间的任何值都是“一个”中值。类似地,在回归设置中,由单纯形算法的"br“版本解决的优化问题,经过修改以进行一般分位数回归,可以确定这种类型可能存在非唯一性的情况。当存在“连续”协变量时,这是非常罕见的,当协变量是离散的时,它是相对常见的,至少当τ是从理性主义中选择的时候。对于单变量分位数R提供了几种通过插值解决这类歧义的方法,"br“不尝试这样做,而是返回第一个顶点解。

你的第二个警告-- "153非正fis“--是一个与rq如何计算局部密度有关的警告。有时,分位数回归函数的局部密度可能为负(这显然是不可能的)。如果发生这种情况,rq会自动将其设置为零。再次引用常见问题的话

这通常是无害的,导致对标准误差的保守(更大)估计,但是,如果报告的非阳性fis数量相对于样本大小较大,那么它就是模型不规范的迹象。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61889890

复制
相关文章

相似问题

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