R中连续变量和分类变量之间的相互作用:是否可以包含所有类别?

时间:2019-01-22 16:43:39

标签: r linear-regression categorical-data interaction

是否有一种方法可以在连续变量和类别变量之间使用交互项,但不包括连续变量本身,从而使用R进行线性回归?

我正在研究房屋租金与居住面积之间的关系。我的数据集中有四个不同的区域,我假设它们之间的关系是不同的。我正在使用rent上的region的线性回归以及floorspaceregion之间的相互作用,我想在region和相互作用项上具有系数,但是将lm与交互作用项一起使用也会迫使floorspace出现为自变量。

就是这样:

lm(formula = rent ~ factor(region) + factor(region) * floorspace, 
    data = mydataset)

Coefficients:
                                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)                       4.67252    0.06792  68.792  < 2e-16 ***
factor(region)2                  -0.39859    0.09453  -4.216 2.52e-05 ***
factor(region)3                  -0.23631    0.17870  -1.322 0.186078    
factor(region)4                  -0.49076    0.10329  -4.751 2.07e-06 ***
floorspace                       -0.38658    0.01539 -25.119  < 2e-16 ***
factor(region)2:floorspace        0.20481    0.02145   9.550  < 2e-16 ***
factor(region)3:floorspace       -0.00884    0.03987  -0.222 0.824552    
factor(region)4:floorspace        0.08022    0.02348   3.416 0.000638 ***

我想要的是这个

Coefficients:
                                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)                       4.67252    0.06792  68.792  < 2e-16 ***
factor(region)2                  -0.39859    0.09453  -4.216 2.52e-05 ***
factor(region)3                  -0.23631    0.17870  -1.322 0.186078    
factor(region)4                  -0.49076    0.10329  -4.751 2.07e-06 ***
factor(region)1:floorspace       -0.38658    0.01539 -25.119  < 2e-16 ***
factor(region)2:floorspace       -0.18177    ???????   ?????  ??????? 
factor(region)3:floorspace       -0.39543    ???????   ?????  ???????    
factor(region)4:floorspace       -0.30636    ???????   ?????  ??????? 

原因是,从解释的角度来看,更有意义的是分别显示每个区域的floorspace效果,而不是将region=1floorspace一起显示,其余显示为给定区域和region=1

的效果之间的差异

1 个答案:

答案 0 :(得分:1)

首先,我将使用以下内容建立测试数据集:<div id="map" leaflet [leafletOptions]="options" [leafletLayers]="layers" [leafletFitBounds]="fitBounds"> </div>

通过减去在公式中mydataset = data.frame(rent=runif(100), region=sample(1:4, 100,TRUE), floorspace=runif(100))中的线性项:

floorspace