gpt4 book ai didi

r - glm 和 LogitModelFit 之间的区别

转载 作者:行者123 更新时间:2023-12-03 20:21:18 24 4
gpt4 key购买 nike

我有问题 glm R 中的函数。

具体来说,我不确定如何包含 名义变量 .

运行 glm 函数后,我在 R 中得到的结果如下:

> df

x1 x2 y
1 a 2 0
2 b 4 1
3 a 4 0
4 b 2 1
5 a 4 1
6 b 2 0

> str(df)
'data.frame': 6 obs. of 3 variables:
$ x1: Factor w/ 2 levels "a","b": 1 2 1 2 1 2
$ x2: num 2 4 4 2 4 2
$ y: Factor w/ 2 levels "0","1": 1 2 1 2 2 1

Call:
glm(formula = y ~ x1 + x2, family = "binomial", data = df)

Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -39.132 15208.471 -0.003 0.998
x1b 19.566 7604.236 0.003 0.998
x2 9.783 3802.118 0.003 0.998

但是,当我运行 时LogitModelFit 函数在 Wolfram Mathematica 我得到不同的参数。

Wolfram 中的代码如下:
data = {{a, 2, 0}, {b, 4, 1}, {a, 4, 0}, {b, 2, 1}, {a, 4, 1}, {b, 2, 0}};

model = LogitModelFit[data, {x, y}, {x, y}, NominalVariables -> x]

model["BestFitParameters"]

这些是我估计的参数:
{-18.5661, -18.5661, 9.28303}

model // Normal

1/(1 + E^(18.5661 - 9.28303 y + 18.5661 DiscreteIndicator[x, a, {a, b}]))

那么,这里有什么不同呢?为什么结果相差如此之大?

我在 R 或 Wolfram 中做错了什么吗?

最佳答案

您实际上有 4 个组,您正在尝试为其估计 3 个参数:

library(dplyr)
df %>% group_by(x1, x2) %>% summarise(n = n(), y = mean(y))

从巨大的标准误差中可以看出,参数估计并不稳定。 wolfram 的标准误差也应该非常大(如果有的话)。

其次,wolfram,似乎对x1使用了不同的引用组:
> df$x1 <- relevel(df$x1, "b")
> m <- glm(y ~ x1 + x2, family = binomial(), data = df, control = list(maxit = 100))
> summary(m)

Call:
glm(formula = y ~ x1 + x2, family = binomial(), data = df, control = list(maxit = 100))

Deviance Residuals:
1 2 3 4 5 6
-0.00008 0.00008 -1.17741 1.17741 1.17741 -1.17741

Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -19.566 7604.236 -0.003 0.998
x1a -19.566 7604.236 -0.003 0.998
x2 9.783 3802.118 0.003 0.998

(Dispersion parameter for binomial family taken to be 1)

Null deviance: 8.3178 on 5 degrees of freedom
Residual deviance: 5.5452 on 3 degrees of freedom
AIC: 11.545

Number of Fisher Scoring iterations: 18

这更接近 wolfram 的结果(这实际上与您发现的模型相同;我只是选择了另一个引用组)。

两种模型(glm 和 wolfram)的预测实际上是相等的。实际上,任何具有前两个参数非常小的模型(最佳模型将是 -Inf)并且第三个参数等于前两个参数的一半 (9.783*2 = 19.566) 将给出几乎相同的结果。

因子 2 源于 x2 取值 2 和 4,这两个值相差 2 的事实。

关于r - glm 和 LogitModelFit 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48078356/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com