我正在使用robust::lmRob()
。
lmRob()
的文档非常清楚,示例运行良好(对于文档和示例,请参阅here)
基于此,我原以为这个简单的脚本会起作用,但是它失败了' msg.UCV'找不到
library(robust)
xx = c(c(2.1111,3.1111,4.1111),seq(1,7,by=0.3))
yy = 0.5+1.5*xx
yy[1] = -21; yy[2] = 0; yy[3] = -10
df = data.frame(x=xx,y=yy)
mf = lmRob(y~x, data=df)
请注意,数据是21个完全线性的行,加上三个异常值。
如果使用
yy = 0.5+1.5*xx + 0.01*xx^2
然后不会出现错误。
我会切换到robustbase::lmrob()
,但lmRob.fit.compute()
似乎做了一些公平nontrivial things。
防止近线性数据导致程序错误的防御性编程技术是什么?