我在R中使用glm
函数时遇到了问题。
具体来说,我不确定如何包含名义变量。
运行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
然而,当我在 Wolfram Mathematica 中运行 LogitModelFit 函数时,输出的参数有所不同。
以下是 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中做错了什么吗?