【问题标题】:Linear model regressing on every level of a numeric field在数字字段的每个级别上回归的线性模型
【发布时间】:2021-02-20 21:40:45
【问题描述】:

我目前正在尝试在大型数据集上运行线性模型,但遇到了一些特定变量的问题。

    pv_model <- lm(SalePrice ~ MSSubClass + LotConfig + GarageArea + LotFrontage, data = train)
    summary(pv_model)

这是我的回归代码。 SalePrice、MSSubClass、GarageArea 和 LotFrontage 都是数值字段,而 LotConfig 是因子变量。

这是我的 pv_model 的输出:

                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)       98154.64   17235.51   5.695 1.75e-08 ***
MSSubClass           50.05      58.38   0.857 0.391539    
LotConfigCulDSac  69949.50   12740.62   5.490 5.42e-08 ***
LotConfigFR2      19998.34   14592.31   1.370 0.170932    
LotConfigFR3      21390.99   34126.44   0.627 0.530962    
LotConfigInside   21666.04    5597.33   3.871 0.000118 ***
GarageArea          175.67      10.96  16.035  < 2e-16 ***
LotFrontage101    42571.20   42664.89   0.998 0.318682    
LotFrontage102    26051.49   35876.54   0.726 0.467968    
LotFrontage103    36528.81   35967.56   1.016 0.310131    
LotFrontage104   218129.42   58129.56   3.752 0.000188 ***
LotFrontage105    61737.12   27618.21   2.235 0.025673 *  
LotFrontage106    40806.22   58159.42   0.702 0.483120    
LotFrontage107    36744.69   29494.94   1.246 0.213211    
LotFrontage108    71537.30   42565.91   1.681 0.093234 .  
LotFrontage109   -29193.02   42528.98  -0.686 0.492647    
LotFrontage110    73589.28   27706.92   2.656 0.008068 ** 

如您所见,第一个变量运行正常。因式分解和数值型字段都做出适当的响应。也就是说,直到它到达 LotFrontage。无论出于何种原因,该模型都会在每个 LotFrontage 级别上运行回归。

作为参考,LotFrontage 描述了对象前院的平方英尺。我已经正确清理了数据并替换了 NA 值。我真的不知道为什么这个特定的专栏表现得如此不寻常。

非常感谢任何帮助。

【问题讨论】:

  • 没有看到您的数据,在我看来,变量 LotFrontage 充当了一个因素,而不是一个协变量。您可以使用class() 进行检查。您需要分享数据集的一小部分样本(例如,使用 dput()),以便人们更好地帮助您。
  • LotFrontage 存储为factorcharacter。您可以使用class(train$LotFrontage) 来查看此描述,这是此类列的默认行为。您可以使用as.numeric 和类似功能来更改此设置。对于您可能希望使用LF &lt;- train$LotFrontage;train$LotFrontage &lt;- as.numeric(levels(LF))[as.integer(LF)] 映射到实际平方英尺级别的因素。 (请注意,as.integer(train$LotFrontage) 返回一个向量 1:Nlevels,因此代码 sn-p 将这些转换为 LotFrontage 中的级别)。对于字符,只需使用 as.numeric

标签: r dataset regression linear-regression factoring


【解决方案1】:

如果我从the kaggle link 下载数据或使用a github link 并执行以下操作:

train = read.csv("train.csv")

class(x$LotFrontage)
[1] "integer"

pv_model <- lm(SalePrice ~ MSSubClass + LotConfig + GarageArea + LotFrontage, 
data = train)
    summary(pv_model)

Call:
lm(formula = SalePrice ~ MSSubClass + LotConfig + GarageArea + 
    LotFrontage, data = train)

Residuals:
    Min      1Q  Median      3Q     Max 
-380310  -33812   -4418   24345  487970 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)      11915.866   9455.677   1.260  0.20785    
MSSubClass         105.699     45.345   2.331  0.01992 *  
LotConfigCulDSac 81789.113  10547.120   7.755 1.89e-14 ***
LotConfigFR2     17736.355  11787.227   1.505  0.13266    
LotConfigFR3     17649.409  31418.281   0.562  0.57439    
LotConfigInside  13073.201   5002.092   2.614  0.00907 ** 
GarageArea         208.708      8.725  23.920  < 2e-16 ***
LotFrontage        722.380     88.294   8.182 7.12e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

建议您像上面一样再次阅读 csv。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-01
    • 2019-10-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 2021-01-11
    • 1970-01-01
    • 2018-04-28
    相关资源
    最近更新 更多