如何修复特征的回归模型解释?

数据挖掘 Python 回归 多元分布
2022-02-12 14:07:14

我正在构建一个回归模型来预测给定一组其他特征的值。YX1,X2,X3..Xn

根据领域的知识,这些其他特征中的一个,比如说成反比。成正比我尝试了很多不同的模型来验证是否可以获得更好的解释,例如 OLS、线性回归和逻辑回归,但我尝试的每个模型都未能解释系数。X1YYX1

我可以做些什么来获得更好地反映该系数的实际行为的回归?

2个回答

除非您的代码有错误,或者上的系数不显着,否则我倾向于相信模型输出。X1

数据以这种方式表现并不罕见。仅仅因为的边际分布成反比,正如可以从两个变量的散点图中得出的结论,并不意味着这种关系以其他变量为条件X1Y(X1,Y)

这是一个示例,其中负相关,但正相关取决于另一个值(该示例是使用 R 生成的——您已经标记了 python,但这个概念与语言无关):(X1,Y)X2

library(tidyverse)
library(broom)
set.seed(1)
N <- 100
dat <- tibble(
    x2 = sample(1:4, size = N, replace = TRUE),
    x1 = x2 + rnorm(N) / 3,
    y = x1 - 2 * x2 + rnorm(N) / 5
)
ggplot(dat, aes(x1, y)) +
    geom_point(aes(colour = factor(x2))) +
    theme_bw() +
    scale_colour_discrete("x2")

这是线性回归模型的输出。您会注意到,不涉及上的系数为负时为正。这是因为回归系数的解释是给定其他协变量的关系。X1X2X2

lm(y ~ x1, data = dat) %>% 
    tidy()
#> # A tibble: 2 x 5
#>   term        estimate std.error statistic  p.value
#>   <chr>          <dbl>     <dbl>     <dbl>    <dbl>
#> 1 (Intercept)   -0.492    0.154      -3.20 1.83e- 3
#> 2 x1            -0.809    0.0549    -14.7  1.33e-26
lm(y ~ x1 + x2, data = dat) %>% 
    tidy()
#> # A tibble: 3 x 5
#>   term        estimate std.error statistic  p.value
#>   <chr>          <dbl>     <dbl>     <dbl>    <dbl>
#> 1 (Intercept)   0.0189    0.0540     0.349 7.28e- 1
#> 2 x1            1.04      0.0681    15.3   1.42e-27
#> 3 x2           -2.05      0.0726   -28.2   1.60e-48

reprex 包(v0.3.0)于 2020-04-27 创建

这个概念扩展到两个以上的协变量,以及连续的协变量。

模型只能看到为训练提供的数据。不是领域真理。


1.你的 Y 是否与 X1 成反比
  - 用简单的散点图检查
  - 另外,尝试用相关矩阵查看相关强度(与 Y)


2.如果否
  - 检查数据源并了解冲突


3.如果是
可能的原因可能是任何其他变量的影响(在接受的答案中指出),您可以尝试这些

  --前向选择,用X1建立模型并查看coef_,必须是-ve然后添加其他变量一一查看哪个变量执行此操作
 - 检查与其他变量的相关性,X1 可能是一个不太重要的特征。这可能会给你一个新的洞察力来研究你的数据和领域