You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python构建房屋能耗评级与房价回归模型无意义问题求解

现有模型的核心遗漏要点

  • 缺失混淆变量控制:房价的影响因素远不止能耗评级,房屋面积、建成年代、区位、房间数量、配套设施都是优先级远高于能耗评级的影响因子,你当前使用的单变量回归会把所有其他因素的波动都归为噪声,直接淹没能耗评级的真实效应,甚至会出现系数偏差。你之前尝试对能耗评级做平方没有效果,核心原因就是没有解决这个根本问题,单纯调整特征形式无法提升效果。
  • 未做合理的数据预处理
    • 房价属于典型的右偏分布,从你的散点图也能看到高价极值点很多,这类目标变量通常需要做对数变换压缩极值影响,否则会严重拉偏回归结果;
    • 能耗评级大多是A/B/C/D这类分级转换来的1/2/3/4有序分类值,本质不是连续变量,直接放入线性回归不符合模型假设,需要做哑变量编码或者有序编码适配。
    • 没有做异常值处理:远高于市场价的特殊房源、评级异常的样本都会干扰系数拟合,需要先做分位数截断或者盖帽法处理。
  • 未验证模型有效性:你当前只输出了回归系数,没有查看模型的p值、R²、残差分布,这类单变量回归的R²通常不足0.1,解释力极低,系数大概率也不显著,自然没有参考价值。

有效关联模型的构建步骤

  1. 数据预处理
import numpy as np
import pandas as pd

# 对右偏的房价做对数变换,降低极值影响
df['log_price'] = np.log(df['price'])
# 能耗评级做哑变量编码,避免有序分类被误判为连续变量的偏差
df = pd.get_dummies(df, columns=['energyrating'], drop_first=True)
  1. 构建多变量回归模型,加入核心控制变量
import statsmodels.formula.api as smf

# 示例:加入房屋面积、房间数、建成年代三个核心混淆变量,可根据你的数据集补充区位、配套等其他特征
model = smf.ols('log_price ~ energyrating_2 + energyrating_3 + energyrating_4 + area + room_count + build_year', data=df)
model = model.fit()
# 输出完整统计结果,重点看能耗评级相关变量的p值(<0.05为显著)、模型整体R²
print(model.summary())
  1. 优化可视化方式
    相比散点图,分组箱线图更适合展示离散的能耗评级对应的房价分布:
import seaborn as sns
import matplotlib.pyplot as plt

plt.figure(figsize=(12, 6))
sns.boxplot(x='energyrating', y='price', data=df)
plt.xlabel('能耗评级')
plt.ylabel('房价')
plt.title('不同能耗评级的房价分布')
plt.show()

其他适用模型推荐

  • 如果你的核心需求是验证能耗评级对房价的影响显著性,优先使用固定效应模型:加入城市/区县的固定效应,控制区位的不可观测影响,输出的结果因果性更强。
  • 如果需要更高的预测精度,可以使用XGBoost、LightGBM这类树模型,训练完成后通过SHAP值拆解能耗评级对房价的边际影响,鲁棒性远高于线性回归,也不需要提前假设变量间的线性关系。
  • 如果后续验证能耗评级和房价确实存在非线性关联,可以在回归模型中加入能耗评级的多项式项,或者使用非参数回归拟合关联曲线。

内容的提问来源于stack exchange,提问作者kirti purohit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 03:57:03