最近做了一个高频数据分析的项目,因为高频的数据波动性很大,经常出现坏点,遂思考如何对这样的坏点做linear regression而不用担心ols estimation太过sensitive的难题。
以下是几个解决方案:
R/python Least Absolute Deviation(LAD)
即最小化与模型diff的绝对值而不是squares。
奇葩的是,这个模型竟然在比较大的包里python的任何实现,目前只有R有:
rqPen 和 hqreg 这两个包可以做quantile regression,选择median regression或者50% percentile的quantile regression即可。
目前python只有这个小包,内部实现使用的是tensorflow
https://mirca.github.io/lad/
matlab Robust Regression
mdl = fitlm(X,y); % not robust
mdlr = fitlm(X,y,'RobustOpts','on');
算法:Robust regression works by assigning a weight to each data point. Weighting is done automatically and iteratively using a process called iteratively reweighted least squares. In the first iteration, each point is assigned equal weight and model coefficients are estima