下面显示的我的因变量不适合我所知的任何股票分布。线性回归会以某种奇怪的方式生成与预测的Y相关的某种非正态,右偏残差(第二个图)。对转换或以其他方式获得最有效结果和最佳预测准确性的任何建议?如果可能,我希望避免将笨拙的分类分为5个值(例如0,lo%,med%,hi%,1)。
下面显示的我的因变量不适合我所知的任何股票分布。线性回归会以某种奇怪的方式生成与预测的Y相关的某种非正态,右偏残差(第二个图)。对转换或以其他方式获得最有效结果和最佳预测准确性的任何建议?如果可能,我希望避免将笨拙的分类分为5个值(例如0,lo%,med%,hi%,1)。
Answers:
审查回归的方法可以处理这样的数据。 他们假设残差的行为与普通线性回归相同,但已对其进行了修改,以便
(左审查):所有小于下限阈值的值(与数据无关)(但在不同情况下可能有所不同)尚未量化;和/或
(右审查):所有大于高阈值的值都与数据无关(但可能因情况而异),尚未量化。
“未量化”表示我们知道某个值是否低于(或高于)其阈值,仅此而已。
拟合方法通常使用最大似然。当用于响应模型对应于向量X的形式为
与IID 具有共同分配˚F σ与PDF ˚F σ(其中σ是未知的“多余参数”),然后-在没有审查的-观察的对数似然(X 我,ÿ 我)是
在存在审查的情况下,我们可以将案例分为三类(可能是空的):对于索引到n 1,y i包含较低的阈值并代表左审查数据。用于索引我= Ñ 1 + 1至Ñ 2中,ÿ 我被量化; 对于其余索引,y i包含较高的阈值并表示已检查的权利数据。对数似然率的获取方法与之前相同:它是概率乘积的对数。
这在数值上是的函数最大化。
以我的经验,在审查少于一半的数据时,这种方法可以很好地工作。否则,结果可能会不稳定。
这是一个R
使用censReg
软件包的简单示例,说明了即使有大量数据,OLS和审查结果也可能有很大不同。它定性地再现问题中的数据。
library("censReg")
set.seed(17)
n.data <- 2960
coeff <- c(-0.001, 0.005)
sigma <- 0.005
x <- rnorm(n.data, 0.5)
y <- as.vector(coeff %*% rbind(rep(1, n.data), x) + rnorm(n.data, 0, sigma))
y.cen <- y
y.cen[y < 0] <- 0
y.cen[y > 0.01] <- 0.01
data = data.frame(list(x, y.cen))
需要注意的关键参数是:真实斜率是,真实截距是− 0.001,真实误差SD是0.005。
让我们同时使用lm
和censReg
来拟合一条线:
fit <- censReg(y.cen ~ x, data=data, left=0.0, right=0.01)
summary(fit)
该审查回归,通过给出的结果print(fit)
,是
(Intercept) x sigma
-0.001028 0.004935 0.004856
fit.OLS <- lm(y.cen ~ x, data=data)
summary(fit.OLS)
给出的OLS拟合print(fit.OLS)
为
(Intercept) x
0.001996 0.002345
summary
为了进行比较,让我们将回归限制为量化数据:
fit.part <- lm(y[0 <= y & y <= 0.01] ~ x[0 <= y & y <= 0.01])
summary(fit.part)
(Intercept) x[0 <= y & y <= 0.01]
0.003240 0.001461
甚至更糟!
一些图片总结了这种情况。
lineplot <- function() {
abline(coef(fit)[1:2], col="Red", lwd=2)
abline(coef(fit.OLS), col="Blue", lty=2, lwd=2)
abline(coef(fit.part), col=rgb(.2, .6, .2), lty=3, lwd=2)
}
par(mfrow=c(1,4))
plot(x,y, pch=19, cex=0.5, col="Gray", main="Hypothetical Data")
lineplot()
plot(x,y.cen, pch=19, cex=0.5, col="Gray", main="Censored Data")
lineplot()
hist(y.cen, breaks=50, main="Censored Data")
hist(y[0 <= y & y <= 0.01], breaks=50, main="Quantified Data")
值是否始终在0到1之间?
如果是这样,您可以考虑Beta分布和Beta回归。
但是请确保仔细考虑导致数据的过程。您还可以创建0和1膨胀模型(0膨胀模型是常见的,您可能需要自己扩展到1膨胀模型)。最大的区别是,这些尖峰代表大量精确的0和1,还是仅接近0和1的值。
最好咨询当地的统计人员(达成保密协议,以便您可以讨论数据来源的详细信息)以制定最佳方法。
根据格雷格·斯诺(Greg Snow)的建议,我听说beta模型在这种情况下也很有用(请参阅Smithson&verkuilen,2006,A Better Lemon Squeezer),以及分位数回归(Bottai等人,2010),但是这些地板和天花板效果似乎非常明显,因此可能不合适(尤其是beta回归)。
另一种选择是考虑审查类型的审查回归模型,特别是Tobit模型,在该模型中,我们认为观察到的结果是由某个连续的(可能是正常的)潜在潜变量产生的。考虑到直方图,我不会说这个基础的连续模型是合理的,但是您会发现它的一些支持,因为您看到分布(忽略底部)在较低的工具值处具有较高的密度,并逐渐减小至较高的值价值观。
幸运的是,审查是如此的剧烈,以至于很难想象在极端情况下会恢复很多有用的信息。在我看来,您的样本中几乎有一半落在地板和天花板的垃圾箱中。