glmulti是一个R函数/包,用于一般线性模型的自动模型选择,它构造了给定因变量和一组预测变量的所有可能的一般线性模型,通过经典的 glm函数拟合它们,然后允许进行多模型推理(例如,使用从AICc,BIC得到的模型权重.glmulti在理论上也与任何其他函数一起工作,它返回系数,模型的对数似然和自由参数的数量(以及可能的其他信息?),与 glm的格式相同.
我想使用glmulti对定量因变量的误差进行稳健建模,以防止异常值的影响.
例如,我可以假设线性模型中的误差分布为t分布而不是正态分布.利用其峰度参数,t分布可以具有较重的尾部,因此对于异常值(与正态分布相比)更稳健.
但是,我不承诺使用t分配方法.我很满意任何回馈对数似然的方法,因此可以使用glmulti中的多模式方法.但是,这意味着,不幸的是我不能(例如,使用R中的知名强大的线性模型lmRob从稳健或lmrob从robustbase),因为他们没有对数似然框架下运作,因此无法一起工作glmulti.
RI的唯一强大的线性回归函数发现在对数似然框架下运行的是heavyLm(来自重包); 它用分布模拟错误.不幸的是,heavyLm不适用于glmulti(至少没有开箱即用),因为它没有用于loglik的 S3方法(可能还有其他东西).
为了显示:
library(glmulti)
library(heavy)
Run Code Online (Sandbox Code Playgroud)
使用数据集stackloss
head(stackloss)
Run Code Online (Sandbox Code Playgroud)
常规高斯线性模型:
summary(glm(stack.loss ~ ., data = stackloss))
Run Code Online (Sandbox Code Playgroud)
使用glm的默认高斯链接函数的glmulti多模型推理
stackloss.glmulti <- glmulti(stack.loss ~ ., data = stackloss, level=1, crit=bic)
print(stackloss.glmulti)
plot(stackloss.glmulti)
Run Code Online (Sandbox Code Playgroud)
具有t分布误差的线性模型(默认为df = 4)
summary(heavyLm(stack.loss …Run Code Online (Sandbox Code Playgroud)