predict() - 多项逻辑回归

机器算法验证 r 多项分布
2022-04-06 08:37:02

我今天来找你是因为我面临一个我无法解释的大问题。

我对行为数据运行了多项逻辑回归(使用 mlgit 包)。我通过做准备数据

    mlogit <- mlogit.data(Merge, choice = "Choice", shape = "long", alt.var = "Comp", 
                          drop.index = TRUE)

在我的合并数据上。

这给了我以下信息:

                Date     Time ActivityX ActivityY Temp Behavior Valley Age Month Year kid Individual Choice
    1.F   01/05/2012 00:00:00        80        58   10        F  Fuorn   8     5 2012   Y         26   TRUE
    1.R   01/05/2012 00:00:00        80        58   10        F  Fuorn   8     5 2012   Y         26  FALSE
    1.M   01/05/2012 00:00:00        80        58   10        F  Fuorn   8     5 2012   Y         26  FALSE
    1.RUN 01/05/2012 00:00:00        80        58   10        F  Fuorn   8     5 2012   Y         26  FALSE
    2.F   01/05/2012 00:05:00        90        76   10        F  Fuorn   8     5 2012   Y         26   TRUE
    2.R   01/05/2012 00:05:00        90        76   10        F  Fuorn   8     5 2012   Y         26  FALSE
    2.M   01/05/2012 00:05:00        90        76   10        F  Fuorn   8     5 2012   Y         26  FALSE
    2.RUN 01/05/2012 00:05:00        90        76   10        F  Fuorn   8     5 2012   Y         26  FALSE
    3.F   01/05/2012 00:10:00        51        47   10        M  Fuorn   8     5 2012   Y         26  FALSE
    3.R   01/05/2012 00:10:00        51        47   10        M  Fuorn   8     5 2012   Y         26  FALSE
    3.M   01/05/2012 00:10:00        51        47   10        M  Fuorn   8     5 2012   Y         26   TRUE
    3.RUN 01/05/2012 00:10:00        51        47   10        M  Fuorn   8     5 2012   Y         26  FALSE
    4.F   01/05/2012 00:15:00         0         0   10        R  Fuorn   8     5 2012   Y         26  FALSE
    4.R   01/05/2012 00:15:00         0         0   10        R  Fuorn   8     5 2012   Y         26   TRUE
    4.M   01/05/2012 00:15:00         0         0   10        R  Fuorn   8     5 2012   Y         26  FALSE
    4.RUN 01/05/2012 00:15:00         0         0   10        R  Fuorn   8     5 2012   Y         26  FALSE
    5.F   01/05/2012 00:20:00         0         0    9        R  Fuorn   8     5 2012   Y         26  FALSE
    5.R   01/05/2012 00:20:00         0         0    9        R  Fuorn   8     5 2012   Y         26   TRUE
    5.M   01/05/2012 00:20:00         0         0    9        R  Fuorn   8     5 2012   Y         26  FALSE
    5.RUN 01/05/2012 00:20:00         0         0    9        R  Fuorn   8     5 2012   Y         26  FALSE

然后我进行了回归:

m1 <- mlogit(Choice ~ 1 |Temp + Valley + Age + kid + Month , mlogit)

它给了我显着的结果:

                          Estimate  Std. Error  t-value  Pr(>|t|)    
    M:(intercept)      -4.2153e-01  5.7533e-02  -7.3268 2.358e-13 ***
    R:(intercept)       6.2325e-01  3.4958e-02  17.8284 < 2.2e-16 ***
    RUN:(intercept)    -1.2275e+01  4.0526e-01 -30.2895 < 2.2e-16 ***
    M:Temp              1.5371e-02  9.8680e-04  15.5764 < 2.2e-16 ***
    R:Temp             -3.9871e-02  6.7926e-04 -58.6975 < 2.2e-16 ***
    RUN:Temp           -4.4532e-02  6.8696e-03  -6.4825 9.023e-11 ***
    M:ValleyTrupchun   -3.6154e-01  1.6362e-02 -22.0968 < 2.2e-16 ***
    R:ValleyTrupchun   -4.0186e-02  9.7968e-03  -4.1020 4.096e-05 ***
    RUN:ValleyTrupchun  1.2895e+00  8.5357e-02  15.1066 < 2.2e-16 ***
    M:Age              -1.1026e-02  2.6902e-03  -4.0985 4.158e-05 ***
    R:Age               1.9465e-02  1.6479e-03  11.8119 < 2.2e-16 ***
    RUN:Age             5.5473e-02  1.6661e-02   3.3294 0.0008703 ***
    M:kidY              6.0686e-02  2.2638e-02   2.6807 0.0073460 ** 
    R:kidY             -4.1638e-01  1.2391e-02 -33.6024 < 2.2e-16 ***
    RUN:kidY            6.2311e-01  1.0410e-01   5.9854 2.158e-09 ***
    M:Month            -2.0466e-01  8.4448e-03 -24.2346 < 2.2e-16 ***
    R:Month             2.4148e-02  5.2317e-03   4.6157 3.917e-06 ***
    RUN:Month           9.8715e-01  5.6209e-02  17.5622 < 2.2e-16 ***

这些结果与我期望在文学中找到的结果一致,所以我很高兴。

我的下一步是绘制我的结果,这是我遇到麻烦的时候。

首先,当我绘制原始数据并将其与回归结果进行比较时,我发现了一些巨大的差异。例如,当我根据年龄绘制行为中花费的时间百分比(M 表示移动,F 表示进食,R 表示休息,跑步表示跑步,在我的回归中 F 是参考)随年龄变化时,我发现年龄越大的个人得到,他们休息得越多,他们就会移动得越多,但我从回归中得到的估计表明,他们应该休息更多(当他们变老时)但移动得更少。总而言之,我的原始数据图表与我从回归中得到的结果相反。

我不知道这是否正常,因为我不知道我是否可以将我的原始数据与我的回归结果进行比较,以使我的回归显示从彼此切换到行为的概率我的变量增长一个单位的时间。

所以我想使用该predict()功能,但我不知道该怎么做。我希望在这里得到一些帮助。

1个回答

当估计值没有预期符号时,通常怀疑是多重共线性以下是维基百科页面的一段话。

中一个单位变化的影响的估计,保持其他变量不变。如果在给定的数据集中与另一个自变量高度相关,那么我们有一组观察值,其中具有特定的线性随机关系。我们没有一组观察值,其中的所有变化都独立于的独立变化的影响有一个不精确的估计X1X2X1X2X1X2X1

您可以通过阅读这个问题那个问题找到更多关于多重共线性的不利影响以及对抗它的策略