执行引导程序时 eval(predvars, data, env) 出错

Error in eval(predvars, data, env) when doing Bootstrapping

我正在尝试拟合线性回归模型来检查 COVID 对交通量的影响。这是我的数据集,有 31 个观察值,我使用最小-最大缩放比例对其进行了归一化。

structure(list(Date = c("Jul-19", "Aug-19", "Sep-19", "Oct-19", 
"Nov-19", "Dec-19", "Jan-20", "Feb-20", "Mar-20", "Apr-20", "May-20", 
"Jun-20", "Jul-20", "Aug-20", "Sep-20", "Oct-20", "Nov-20", "Dec-20", 
"Jan-21", "Feb-21", "Mar-21", "Apr-21", "May-21", "Jun-21", "Jul-21", 
"Aug-21", "Sep-21", "Oct-21", "Nov-21", "Dec-21", "Jan-22"), 
    Average.Weekday.Daily.Traffic..Veh.day. = c(0.888327194565519, 
    0.957155270369628, 0.895880165623604, 0.942066917846049, 
    1, 0.877361842545003, 0.703731456172012, 0.898082382615854, 
    0.607783746512863, 0, 0.317277553217312, 0.560830088053501, 
    0.706464878860476, 0.747561202987416, 0.737478848514911, 
    0.800118905645907, 0.857496156674019, 0.809655982748128, 
    0.708357519023144, 0.926517717996616, 0.895669090512526, 
    0.856018630896471, 0.925733222167108, 0.825782121234508, 
    0.798338838875814, 0.533903939716948, 0.819263418220707, 
    0.84537340946109, 0.792752384269276, 0.64987564158039, 0.365423786054267
    ), Case = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0.00543532109442455, 
    0.00036093929142663, 5.66179280669224e-05, 0, 0.000134467579158941, 
    0.000339707568401534, 0.000127390338150575, 0.000113235856133845, 
    0, 0.000169853784200767, 0.000106158615125479, 0.00106158615125479, 
    0.0015286840578069, 0, 0, 0.00110404959730499, 0.00312814052569746, 
    0, 0.000268935158317881, 0, 0.00153576129881527, 1), Regulation = c(0, 
    0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0.666666666666667, 0.333333333333333, 
    0.333333333333333, 0.166666666666667, 0.166666666666667, 
    0.166666666666667, 0.166666666666667, 0.333333333333333, 
    0.166666666666667, 0.333333333333333, 0.166666666666667, 
    0.166666666666667, 0.333333333333333, 0.166666666666667, 
    0.166666666666667, 0.166666666666667, 0.166666666666667, 
    0, 0, 0)), row.names = c(NA, -31L), class = "data.frame")

我的模型和输出:

m1 <- lm(Average.Weekday.Daily.Traffic..Veh.day. ~ Case + Regulation, data = data)
summary(m1)

Call:
lm(formula = Average.Weekday.Daily.Traffic..Veh.day. ~ Case + 
    Regulation, data = data)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.35325 -0.00991  0.00712  0.05537  0.25166 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  0.89096    0.03061  29.104  < 2e-16 ***
Case        -0.52838    0.13368  -3.952 0.000477 ***
Regulation  -0.53484    0.08077  -6.622 3.49e-07 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.1301 on 28 degrees of freedom
Multiple R-squared:  0.6548,    Adjusted R-squared:  0.6301 
F-statistic: 26.55 on 2 and 28 DF,  p-value: 3.413e-07

虽然自变量很重要,但我发现使用 Jarque-Bera 检验时误差不是正态分布的。我试图通过使用以下代码进行引导来修复它:

set.seed(4321)
m2 <- Boot(m1, R = 100, method = "residual")
summary(m2)

但是我收到一条错误消息,即使我在我的线性模型中包含了 Case 变量:Error in eval(predvars, data, env) : object 'Case' not found

谁能帮我解释一下为什么会出现这个错误以及如何解决?非常感谢您的帮助。

您的问题是由于 Bootboot 使用 non-standard 的方式导致数据框名称与函数 data 之间的名称冲突评估。这就是为什么最好避免为您自己的对象使用这样的名称。您需要做的就是将 data 更改为 mydata,问题就会消失。

library(car)
#> Loading required package: carData

mydata <- data
m1 <- lm(Average.Weekday.Daily.Traffic..Veh.day. ~ Case + Regulation, data = mydata)

set.seed(4321)
m2 <- Boot(m1, R = 100, method = "residual")
#> Loading required namespace: boot
summary(m2)
#> 
#> Number of bootstrap replications R = 100 
#>             original    bootBias   bootSE  bootMed
#> (Intercept)  0.89096  0.00248002 0.038248  0.89308
#> Case        -0.52838  0.00555811 0.187270 -0.51458
#> Regulation  -0.53484 -0.00088829 0.099065 -0.53900

reprex package (v2.0.1)

于 2022-04-03 创建