簡體   English   中英

執行引導程序時 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")

我的model和output:

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)

但是我收到一條錯誤消息,即使我在我的線性 model 中包含了 Case 變量: Error in eval(predvars, data, env): object 'Case' not found

誰能幫我解釋為什么會出現此錯誤以及如何解決? 非常感謝你的幫助。

您的問題是由於數據框的名稱與 function data之間的名稱沖突,這是由於Bootboot使用非標准評估的方式。 這就是為什么最好避免為您自己的對象使用這樣的名稱。 您需要做的就是將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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM