一個不能改善樣本外預測的“重要變量”——如何解釋?
我有一個我認為對很多用戶來說非常基本的問題。
我使用線性回歸模型(i)研究幾個解釋變量和我的響應變量的關係,以及(ii)使用解釋變量預測我的響應變量。
一個特定的解釋變量 X 似乎顯著影響了我的響應變量。為了測試這個解釋變量 X 的附加值,以便對我的響應變量進行樣本外預測,我使用了兩個模型:使用所有解釋變量的模型 (a) 和使用所有變量的模型 (b)除了變量 X。對於這兩個模型,我只報告樣本外的表現。看起來這兩種模型的表現幾乎一樣好。換句話說,添加解釋變量 X 不會改善樣本外預測。請注意,我還使用了模型 (a),即具有所有解釋變量的模型,以發現解釋變量 X 確實顯著影響了我的響應變量。
我現在的問題是:如何解釋這一發現?直截了當的結論是,即使變量 X 使用推理模型似乎顯著影響了我的響應變量,但它並沒有改善樣本外預測。但是,我很難進一步解釋這一發現。這怎麼可能?對這一發現有什麼解釋?
提前致謝!
額外信息:“顯著影響”我的意思是 0 不包括在參數估計的最高 95% 後驗密度區間中(我使用貝葉斯方法)。在常客術語中,這大致對應於 p 值低於 0.05。對於我的所有模型參數,我只使用擴散(無信息)先驗。我的數據具有縱向結構,總共包含大約 7000 個觀測值。對於樣本外預測,我使用 90% 的數據來擬合我的模型,並使用 10% 的數據來使用多次復制來評估模型。也就是說,我多次執行訓練測試拆分並最終報告平均性能指標。
當一個特定的預測變量具有統計顯著性並不意味著它也顯著提高了模型的預測性能。預測性能與效應大小更相關。例如,下面的函數模擬來自具有兩個預測變量
x1
和的線性回歸模型的數據x2
,並擬合兩個模型,一個具有兩個x1
和x2
,一個具有x1
單獨的模型。在該函數中,您可以更改 的效果大小x2
。該函數報告 和 的係數的置信區間x1
,x2
以及兩個模型的值作為預測性能的度量。功能是:
sim_ES <- function (effect_size = 1, sd = 2, n = 200) { # simulate some data DF <- data.frame(x1 = runif(n, -3, 3), x2 = runif(n, -3, 3)) DF$y <- 2 + 5 * DF$x1 + (effect_size * sd) * DF$x2 + rnorm(n, sd = sd) # fit the models with and without x2 fm1 <- lm(y ~ x1 + x2, data = DF) fm2 <- lm(y ~ x1, data = DF) # results list("95% CIs" = confint(fm1), "R2_X1_X2" = summary(fm1)$r.squared, "R2_only_X1" = summary(fm2)$r.squared) }
例如,對於我們得到的默認值,
$`95% CIs` 2.5 % 97.5 % (Intercept) 1.769235 2.349051 x1 4.857439 5.196503 x2 1.759917 2.094877 $R2_X1_X2 [1] 0.9512757 $R2_only_X1 [1] 0.8238826
所以
x2
很重要,並且不將其包含在模型中會對.但是如果我們將效果大小設置為 0.3,我們會得到:
> sim_ES(effect_size = 0.3) $`95% CIs` 2.5 % 97.5 % (Intercept) 1.9888073 2.5563233 x1 4.9383698 5.2547929 x2 0.3512024 0.6717464 $R2_X1_X2 [1] 0.9542341 $R2_only_X1 [1] 0.9450327
係數仍然顯著,但在改善非常小。