有没有一种简单的方法可以在R中组合两个glm模型?


9

我在用制成的R中有两个逻辑回归模型glm()。它们都使用相同的变量,但使用不同的矩阵子集。是否有一种简单的方法来获取给出系数均值的平均模型,然后将其与predict()函数一起使用?

[抱歉,如果此类问题应发布在编程网站上,请告诉我,我会在此处发布]

谢谢


1
您可以在stats.stackexchange.com/q/8502/919的相关线程中找到一些有用的信息。
whuber

在R中,该caret软件包具有一些很酷的功能,可以组合模型。
screechOwl 2011年

Answers:


2

您是否要获取预测概率的平均值或系数的平均值?它们将给出不同的结果,因为逻辑回归涉及线性预测变量的非线性变换。

一个可以做的功能就是这样。设置avg"prob"获取前者,或获取其他东西。

pred_comb <- function(mod1, mod2, dat, avg="prob", ...)
{
    xb1 <- predict(mod1, dat, type="link", ...)
    xb2 <- predict(mod2, dat, type="link", ...)
    if(avg == "prob")
        (plogis(xb1) + plogis(xb2))/2
    else plogis((xb1 + xb2)/2)
}

@Hong Ooi:谢谢!这段代码确实有用,并且可以解决问题,但是我主要针对的是一个函数,该函数可以提供一个新的R模型,随后我可以在工作流中将它放入predict()中。但是,我认为您的函数非常优雅,并且喜欢将其设置为给出概率的方式。
Andrew

@Andrew为此可以利用R的面向对象编程。将您的两个模型放到一个列表中,然后给它一个类glm_2。调用上面的函数predict.glm_2,然后可以predict()根据需要在对象上使用。
Hong Ooi

2
为什么对系数求平均是合适的?如果两个数据集的大小不同,则肯定至少应使用某种形式的加权平均值。
whuber

@ Hong-谢谢,我会尝试的。@whuber-感谢您指出这一点。如果我的两个数据集大小相同,那么权重是个问题(我之前从未想到过)。如果它们不同,我是否仅按尺寸的比例进行加权(例如,如果尺寸是其两倍大,我是否为其赋予两倍的重量)?
安德鲁

@Andrew仅当两个子集中的自变量的值相同时才对数据计数加权是正确的。对于更好的方法(理论上也是有效的),请参阅我在对您的问题的评论中引用的线程。
whuber
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.