使用 Hedonic 回归对价格进行建模

机器算法验证 r 回归 估计 回归系数
2022-03-31 21:28:30

我正在使用 Hedonic 回归的概念来模拟房地产价格。我的方法有些麻烦。

我所拥有的和我所做的

  • 我的数据由具有以下特征的房地产组成:price | livingArea | propertyArea | condoFloorNumber | roomCount | elevator | garage | quiet | etc.
  • 我在没有截距的情况下进行了稳健的回归lmRob(price ~ . -1)

我想要的是

  • 一个模型,我可以用它来预测房地产价格,但不在使用的数据集中
  • 对系数有一些限制也很好

问题

  • 很多时候我的系数值都不好ex: bathroomCount = -80000有了附加浴室,房子的价格不可能下降80.000€
  • 我也尝试使用该函数pcls来对系数施加一些限制,但这种方法给出了非常糟糕的结果。在情节Y = priceX = livingArea如您所见,回归线不正确。 在此处输入图像描述

    • 另一个想法是将回归问题转换为最大化或最小化问题,但没能做到
    • 我也尝试使用不同的回归方法lm, lmrob, ltsReg, MARS,但它们也给了我不好的系数。(有时这个不好的系数可以很好地估计价格)
    • 我认为大量的虚拟变量会损害回归

我的方法是错误的吗?

有人对我有一些提示,技巧吗?我不是统计学家

[更新]

价格~生活区

这就是绘制数据的样子。LivingArea 是唯一的非虚拟变量。

[更新 2]

y = bX 

     means

y = b_0*X_0 + b_1*X_1 + ... + b_k*X_k

     which is an equation system like this:

y[0] = b_0*X_0[0] + b_1*X_1[0] + ... + b_k*X_k[0]
.
.
.
y[n] = b_0*X_0[n] + b_1*X_1[n] + ... + b_k*X_k[n]

我做对了吗?

如果是这样,则不可能向其添加一些不等式约束方程。例子:

b_0 >= 2000
b_2 <= b_0/2

[更新 3]

我正在运行没有截距的回归,因为如果房地产的所有特征 = 0,那么当然它的价格 = 0。没有人会为 0 平方米的公寓买单。 在此处输入图像描述 但似乎使用截距的回归线(蓝色)看起来比没有截距的回归线(绿色)要好得多。我不明白为什么会这样。为什么没有截距的回归线不是从点(0,0)开始?

4个回答

这种做法显然是行得通的(而且很明显,税务机关多年来一直使用这种方法对我的房子征收房产税),因此需要对这种困难的根源进行一些调查。

了解这个数据集的性质非常重要。如果要将其用于预测不在数据集中的房产的价格,您必须非常确定它充分代表了感兴趣的房产群体。收集这个特定样本的方式可能存在一些特殊性,因此共线因素的某些特定组合会导致诸如浴室数量的负系数之类的事情。重新评估样本收集和数据编码,这是一个经常被忽视的困难来源。此外,对于基于 PCA 的方法,主成分系数的符号取决于相关特征向量的方向,当您尝试返回原始因子的空间时,很容易产生错误。也检查一下。

您没有指定系数估计的标准误差,因此您的一些明显异常的系数可能与 0 没有显着差异。例如,标准误差为 +/- 100K 的每个浴室的 -80K 系数实际上不会是一个问题; 这可能只是意味着高共线性使得很难确定每间浴室的价值,因为它与土地面积、卧室数量等高度相关。如果是这种情况,您应该在进行预测时保留该系数,因为浴室的明显异常系数可能有助于纠正仅基于其一些共线性因素的价格高估。

您可以尝试找出导致这些问题的因素组合。尽管逐步选择因素对于构建最终模型并不明智,但对于故障排除,您可以考虑从价格-浴室关系的简单模型开始,并添加更多因素以查看哪些因素组合会导致您的问题。

您还应该利用对数据集进行结构化重新采样的信息来评估这些问题。你没有说你是否或如何处理模型验证的这个关键方面。如果你有,那么交叉验证或引导重采样可能已经为你的困难来源提供了洞察力。如果您还没有,请参阅统计学习简介或类似参考资料以了解如何继续。

我知道这是一个旧帖子;希望该消息可以帮助阅读此线程的人可能会遇到相同的问题。0个房间的逻辑前提;而 0 居住面积 = 零价值是不合适的,因为模型忽略的是土地的潜在价值。这也影响了“地理”分散特性,因为房屋大小完全相同;沐浴;床、生活区等仍将显示与位置(和潜在土地价值)相关的价值差异——但随着房子变旧、变小等——价值将收敛于土地价值;不为零。

我认为您的最后一句话(“我认为大量虚拟变量会稍微损害回归”)是正确的。您观察到的某些回归系数的异常值清楚地表明存在多重共线性。您可能想尝试岭回归或主成分回归。

  1. 在您的模型中使用拦截。这是一个非常强的假设,即当所有变量都等于 0 时,预测价格应该为零,并且不需要,尤其是这样的房地产不会出现在火车或测试数据集中。即使所有特征都等于零的房地产的价格应该等于零是正确的,它也需要假设您的模型控制了房地产价格的所有因素,这是相当错误的。如果你认为很明显只有所有特征都等于零的房地产的价格应该等于零,那么你会为面积为 5m 平方的房地产支付多少?因为我仍然可以为这样的房产支付零美元。是我不合理还是这个假设不合理?

  2. 使用半对数回归,即预测因变量的对数。当您使用正态线性回归时,就像假设房地产的总价值等于每个特征的价值之和。这可能是错误的假设。我认为,例如,如果房产位于安静的区域,它会使房产的价值增加 x%,比如说增加 30%,不增加 x $,而不是某些固定金额的美元。但是,这就是您的模型所假设的。假设两个庄园的价值(其中一个有 100 m,第二个有 10000 m)的价值会增加相同数量的美元,例如增加 10000 美元,这是不合理的。它宁愿增加一定的百分比。使用半对数模型,您的模型将假设,房地产的最终价值可以减少到其每个属性的乘积。它通常在这种情况下效果更好,并且是房地产价值模型的标准处理方式(看文献,不要试图发明轮子)。

  3. 尝试将其他项添加到您的模型中:例如变量的平方及其相互作用。

  4. 调查异常值。至少有两个点看起来像异常值,试着弄清楚它们是什么,以及为什么它们有奇怪的变量值。也许您可以在此数据中发现错误,或者您可以添加一些功能或交互来捕获此类情况。