基于澳大利亚汽车市场数据的车辆价格影响因素分析与预测_第1页
基于澳大利亚汽车市场数据的车辆价格影响因素分析与预测_第2页
基于澳大利亚汽车市场数据的车辆价格影响因素分析与预测_第3页
基于澳大利亚汽车市场数据的车辆价格影响因素分析与预测_第4页
基于澳大利亚汽车市场数据的车辆价格影响因素分析与预测_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于澳大利亚汽车市场数据的车辆价格影响因素分析与预测目录一、分析背景与问题提出 61.1分析背景 61.2分析目标 61.3分析流程 6二、数据来源与变量说明 72.1数据来源 72.2变量类型与主要字段说明 72.3重复记录与数据质量初步检查 8三、数据预处理与变量构造 93.1基础字段整理 93.2描述性统计变量构造 10四、汽车挂牌价格的描述性统计分析 104.1汽车挂牌价格总体分布 104.2不同价格区间的样本结构 114.3品牌分布与品牌价格差异 114.4生产年份与挂牌价格关系 124.5行驶公里数与挂牌价格关系 124.6车辆状态、车身类型与燃料类型差异 134.7地区分布与空间差异 134.8数值变量相关性分析 14五、建模方法与评价指标 145.1建模前样本处理与变量确定 145.2模型选择思路 155.3模型评价指标 165.4模型筛选原则 16六、模型结果与比较 166.1线性模型与正则化模型结果 166.2随机森林候选模型结果 186.3XGBoost候选模型结果 186.4模型综合比较 19七、最终模型诊断与解释 217.1XGBoost-3预测值与真实值比较 217.2XGBoost-3分价格区间误差分析 217.3XGBoost-3变量重要性分析 227.4SHAP模型解释 23八、结论与建议 248.1主要结论 248.2分析建议 258.3不足与展望 26附录A补充结果 27附录BRMarkdown核心代码 30

表目录表1数据基本规模 7表2原始变量类型与缺失情况 8表3重复记录检查 8表4基础整理后关键变量非缺失情况 9表5汽车挂牌价格描述性统计 10表6不同价格区间车辆的样本结构 11表7样本量前十品牌的数量与价格中位数 11表8不同行驶公里数区间的价格中位数 12表9IQR极端值处理前后样本量变化 14表10建模变量说明 15表11训练集与测试集划分 15表12模型评价指标说明 16表13线性回归系数绝对值前10个变量 17表14Lasso非零系数绝对值前10个变量 17表15随机森林候选模型核心结果 18表16XGBoost候选模型核心结果 18表17各模型训练集与测试集预测效果比较 19表18模型综合筛选结果 20表19XGBoost-3在不同价格区间的预测误差 21表20XGBoost-3变量重要性前20个变量 22表21XGBoost-3的SHAP平均绝对值前20个变量 23

图目录图1分析流程图 7图2汽车挂牌价格分布与箱线图 10图3不同价格区间车辆数量与中位行驶公里数 11图4主要品牌的样本数量与价格中位数关系 12图5主要品牌挂牌价格分布 12图6不同生产年份车辆数量与价格中位数趋势 12图7行驶公里数分布及其与挂牌价格关系 13图8不同类别变量下的车辆挂牌价格中位数比较 13图9澳大利亚各州车辆挂牌样本数量分布 13图10澳大利亚各州车辆挂牌价格中位数分布 13图11数值变量相关性热力图 14图12各模型测试集RMSE与R²综合比较 20图13XGBoost-3预测值与真实值比较 21图14SHAP蜂群图 24图15主要连续变量的SHAP依赖关系 24

一、分析背景与问题提出1.1分析背景近年来,全球汽车市场持续变化。一方面,新能源车、混合动力车等车型不断增加,消费者在购车时更加关注车辆动力类型、使用成本和配置水平;另一方面,不同品牌、不同年份、不同车况的车辆本身也存在明显价格差异。因此,在分析汽车价格时,不能只简单区分“新车”或“二手车”,还需要综合考虑车辆年份、行驶公里数、品牌定位、燃料类型、车身类型和地区等因素。本文使用AustralianVehiclePrices数据进行分析。虽然数据来自澳大利亚汽车市场,但该数据集包含较完整的车辆挂牌信息,包括品牌、生产年份、行驶公里数、车辆状态、燃料类型、车身类型、地区和挂牌价格等变量,比较适合用来分析汽车价格差异的来源。本文选择这一数据集,并不是单纯为了讨论澳大利亚市场本身,而是希望借助这一相对完整的车辆挂牌数据,分析不同车辆属性与挂牌价格之间的关系,并利用统计学习方法构建车辆价格预测模型,为后续价格判断提供数据参考。基于此,本文的分析思路是先从数据本身出发,观察汽车挂牌价格的总体分布,以及不同品牌、年份、公里数、车辆状态、车身类型、燃料类型和地区下的价格差异;再在此基础上进行数据预处理和建模分析,比较不同模型对挂牌价格的预测能力,从而判断哪些因素对汽车挂牌价格影响更明显。1.2分析目标基于AustralianVehiclePrices数据,本文主要回答以下三个问题。第一,汽车挂牌价格本身呈现什么样的分布特征?是否存在明显的右偏分布和极端高价车辆?如果价格分布较偏,那么在描述性统计和建模过程中就需要更加注意均值、中位数和极端值的影响。第二,不同车辆属性是否会造成明显的价格差异?本文重点关注品牌、生产年份、行驶公里数、车辆新旧状态、变速箱类型、驱动方式、燃料类型、车身类型和地区等变量,分析这些因素与挂牌价格之间的关系。第三,在经过数据清洗和变量整理后,能否利用这些车辆属性较好地预测挂牌价格?本文将比较线性回归、Ridge回归、Lasso回归、随机森林和XGBoost模型的预测效果,并结合MAE、RMSE、R²以及训练集与测试集R²差距选择最终模型。在此基础上,再结合变量重要性和SHAP解释结果,归纳哪些因素在车辆价格预测中更关键,并形成本文的主要结论。1.3分析流程本文按照“先理解数据,再建立模型,最后解释结果并形成结论”的思路展开。首先,对原始数据进行读取和变量整理,了解样本规模、变量类型、缺失情况和重复记录情况;其次,从价格分布、价格区间、品牌、生产年份、行驶公里数、类别变量和地区差异等角度进行描述性统计分析,初步判断哪些因素可能影响汽车价格;然后,结合描述性统计结果进行建模前样本处理和变量确定;最后,建立多种预测模型并比较其测试集表现和泛化稳定性,在确定最终模型后,结合变量重要性和SHAP结果解释模型主要依据哪些因素进行预测,进一步总结汽车挂牌价格的主要影响因素。需要说明的是,本文中的“价格预测”指的是基于车辆已有属性,对测试集中未参与训练的车辆挂牌价格进行预测,并不是对未来几年汽车市场价格走势进行时间序列预测。因此,本文不进行未来价格趋势预测,而是重点比较不同模型对当前挂牌车辆价格的预测能力。本文具体分析流程见图1。图1分析流程图二、数据来源与变量说明2.1数据来源本文使用的数据为AustralianVehiclePrices数据集,样本单位为一辆在澳大利亚汽车市场中挂牌的车辆。原始数据共包含16734条记录和19个变量,涵盖车辆品牌、生产年份、车型名称、车辆状态、变速箱类型、发动机信息、驱动方式、燃料类型、油耗、行驶公里数、所在地区、车身类型、座位数、车门数以及挂牌价格等信息。从分析目的来看,本文的核心变量是车辆挂牌价格price。其他变量则主要用于解释价格差异和构建预测模型。由于该数据既包含数值型信息,也包含大量类别型和字符型信息,因此在正式分析前,需要先对变量类型、缺失情况和字段格式进行初步检查。数据基本规模如表1所示。表1数据基本规模指标数值样本量16734变量数量19由表1可知,原始数据样本量为16734,变量数量为19,整体规模能够支持后续的描述性统计和建模分析。2.2变量类型与主要字段说明原始数据中的变量可以大致分为四类。第一类是车辆基本信息,包括brand、year、model、title和used_or_new。其中,brand表示车辆品牌,year表示生产年份,used_or_new用于区分新车、二手车和展示车。第二类是车辆配置和性能信息,包括transmission、engine、drive_type、fuel_type、fuel_consumption、cylindersin_engine、body_type、doors和seats。这些变量反映车辆的动力系统、燃料类型、车身结构和配置差异。第三类是车辆使用情况和地区信息,包括kilometres和location。第四类是目标变量price,即车辆挂牌价格。为了更具体地了解每个变量的数据类型和缺失情况,本文对原始变量进行统计,结果见表2。表2原始变量类型与缺失情况变量名数据类型缺失数量缺失比例brandcharacter10.01%yearnumeric10.01%modelcharacter10.01%car_suvcharacter00.00%titlecharacter10.01%used_or_newcharacter00.00%transmissioncharacter2521.51%enginecharacter167510.01%drive_typecharacter10.01%fuel_typecharacter6383.81%fuel_consumptioncharacter169810.15%kilometrescharacter1430.85%colour_ext_intcharacter10.01%locationcharacter4502.69%cylindersin_enginecharacter167410.00%body_typecharacter2821.69%doorscharacter16049.59%seatscharacter170510.19%pricenumeric530.32%由表2可知,brand、year、model、price等变量缺失比例较低,说明核心价格分析具有较好的数据基础。但engine、fuel_consumption、cylindersin_engine、doors和seats等变量存在一定缺失,其中部分变量缺失比例接近或超过10%。这说明后续在变量整理和建模时,不能简单把所有原始字段直接放入模型,而需要结合缺失情况和变量含义进行筛选。2.3重复记录与数据质量初步检查在正式分析前,本文还对重复记录进行了检查,结果如表3所示。表3重复记录检查检查项数值重复记录数量0由表3可知,原始数据中没有完全重复的记录,说明样本层面不存在明显的重复录入问题。不过,虽然数据没有重复记录,但部分字段仍然需要进一步整理。例如,kilometres在原始数据中是字符型变量,不能直接用于数值分析;engine中同时包含气缸数和发动机排量,需要进一步提取排量信息;fuel_consumption中包含“L/100km”等单位,需要转换为数值型油耗变量;location中包含城市和州,需要从中提取州信息。因此,本文在完成数据来源和变量情况说明后,将进一步进行字段整理和变量构造,为描述性统计分析和后续建模打好基础。三、数据预处理与变量构造3.1基础字段整理原始数据中有些变量虽然包含有用信息,但不能直接用于描述性统计或建模分析。例如,kilometres在原始数据中为字符型变量,engine中同时包含气缸数和发动机排量,fuel_consumption中带有“L/100km”这样的单位,location中也同时包含城市和州信息。因此,在正式分析前,本文先对这些字段进行基础整理。具体来说,本文将price和kilometres转换为数值型变量;从engine中提取发动机排量,构造engine_litre;从fuel_consumption中提取百公里油耗,构造fuel_consumption_l_100km;从location中提取州信息,构造states;同时根据生产年份构造car_age,用于描述车辆新旧程度。对于车身类型,本文将Commercial合并为Van,将Ute/Tray合并为UTE,以减少类别过细带来的影响。对于含义不够明确的drive_type中的Other,本文将其作为缺失值处理。完成基础整理后,关键变量的非缺失情况见表4。表4基础整理后关键变量非缺失情况指标数值整理后样本量16734Price非缺失样本量16681Year非缺失样本量16733Kilometres非缺失样本量16142Engine非缺失样本量15058FuelConsumption非缺失样本量15036States非缺失样本量16284由表4可知,price、year和kilometres的非缺失样本量较多,能够支持后续价格分布和车辆使用情况分析;而engine_litre和fuel_consumption_l_100km的非缺失样本量相对少一些,这与原始数据中发动机和油耗字段存在缺失有关。整体来看,整理后的变量已经能够覆盖价格、年份、公里数、发动机排量、油耗、地区和主要类别变量等信息,为后续分析提供了基础。3.2描述性统计变量构造在描述性统计阶段,本文除了保留原始变量中的品牌、车辆状态、变速箱类型、驱动方式、燃料类型和车身类型外,还根据分析需要构造了几个辅助变量。首先,根据生产年份构造car_age,用于辅助理解车辆新旧程度。由于生产年份和车龄本质上来自同一信息,二者在相关性分析中会呈现较强负相关,但车龄在解释车辆折旧时更加直观。其次,根据行驶公里数构造公里数区间,将车辆划分为“0-2万”“2万-5万”“5万-10万”“10万-15万”和“15万以上”几类,用于比较不同使用程度车辆的价格中位数。再次,根据挂牌价格构造价格区间,将车辆划分为“2万以下”“2万-4万”“4万-6万”“6万-10万”和“10万以上”五个层级。价格区间分析可以帮助判断样本主要集中在哪些价格段,也能进一步比较不同价格层级车辆在生产年份和行驶公里数上的差异。四、汽车挂牌价格的描述性统计分析在正式建模之前,本文先对汽车挂牌价格及主要解释变量进行描述性统计分析。这样做的目的,一方面是了解价格本身的分布特征,判断是否存在明显偏态和极端值;另一方面是初步观察品牌、年份、公里数、车辆状态、车身类型、燃料类型和地区等因素是否与价格差异有关。后续建模部分也将基于这些描述性分析结果进一步选择变量和解释模型结果。4.1汽车挂牌价格总体分布首先观察目标变量price的总体分布情况。汽车挂牌价格描述性统计结果见表5。表5汽车挂牌价格描述性统计样本量均值中位数标准差最小值第一四分位数第三四分位数最大值1668137303.332950037177.878818999439901500000由表5可知,样本中汽车挂牌价格的均值为37303.33澳元,中位数为29500澳元,均值明显高于中位数。同时,价格最大值达到1500000澳元,远高于第三四分位数43990澳元,说明样本中存在少数非常高价的车辆。这也说明,汽车挂牌价格并不是对称分布,而是具有明显右偏特征。价格分布和箱线图见图2。图2汽车挂牌价格分布与箱线图由图2可知,大部分车辆集中在相对较低和中等价格区间,少数高价车把价格分布向右拉长。这个结果与描述性统计中的均值、中位数和最大值差异是一致的。由于少数极端高价车辆会对均值和模型误差产生较大影响,后续分析中,本文在进行分组比较时更多使用中位数刻画价格水平。4.2不同价格区间的样本结构仅观察总体价格分布还不够,因为汽车市场本身存在明显价格层级。为了进一步了解样本主要集中在哪些价格段,本文将车辆挂牌价格划分为“2万以下”“2万-4万”“4万-6万”“6万-10万”和“10万以上”五个区间,并比较各价格区间的样本数量、生产年份和行驶公里数,结果见表6。表6不同价格区间车辆的样本结构价格区间样本量占比价格中位数年份中位数公里数中位数2万以下477728.6%1399920121584572万-4万702342.1%289992018782544万-6万290117.4%479902020428126万-10万14348.6%7198620212421610万以上5463.3%137990202217906由表6可知,样本主要集中在2万-4万澳元区间,占比为42.1%;其次是2万以下区间,占比为28.6%。相比之下,10万澳元以上的车辆仅占3.3%,属于样本中较少的一部分。进一步观察不同价格区间的车辆特征可以发现,随着价格区间提高,车辆的中位生产年份整体更新,行驶公里数中位数明显下降。不同价格区间的车辆数量与中位行驶公里数见图3。图3不同价格区间车辆数量与中位行驶公里数由图3可知,较新的车辆和低公里数车辆更容易出现在高价格区间,而低价车辆通常对应更长使用年限和更高行驶里程。这也为后续将year和kilometres纳入模型提供了直观依据。4.3品牌分布与品牌价格差异品牌是影响汽车价格的重要因素之一。不同品牌不仅代表不同市场定位,也可能对应不同的车辆配置、保值率和消费者认可度。本文首先统计样本量前十的品牌,并比较其价格中位数和均值,结果见表7。表7样本量前十品牌的数量与价格中位数品牌样本量价格中位数价格均值Toyota27823395938796Hyundai12312399026208Mazda11692699030236Holden10871799021107Ford10552899833335Mitsubishi10342699228569Nissan10302479027757Volkswagen8903492937435Kia8072549028589Mercedes-Benz6234393657543由表7可知,Toyota的样本数量最多,达到2782辆,说明其在样本中覆盖面较广。但从价格中位数看,样本数量多的品牌并不一定价格最高。例如,Toyota的价格中位数为33959澳元,而Mercedes-Benz虽然样本数量少于Toyota,但价格中位数达到43936澳元,明显高于多数普通品牌。主要品牌的样本数量与价格中位数关系见图4,主要品牌挂牌价格分布见图5。图4主要品牌的样本数量与价格中位数关系图5主要品牌挂牌价格分布由图4和图5可知,不同品牌在样本数量和价格水平上并不完全一致。Toyota属于样本数量大、价格中位数也相对较高的品牌;Mercedes-Benz样本数量不算最多,但价格中位数较高,体现出豪华品牌的价格定位;而Holden、Hyundai等品牌样本量较大,但价格中位数相对较低。说明品牌变量不仅影响样本结构,也会造成明显的价格分层。4.4生产年份与挂牌价格关系生产年份可以近似反映车辆新旧程度。一般来说,年份越新的车辆,折旧程度越低,挂牌价格通常也越高。本文对不同生产年份的车辆数量和价格中位数进行统计,结果见图6。图6不同生产年份车辆数量与价格中位数趋势由图6可知,样本中的车辆主要集中在较近年份,说明数据中近年生产的车辆占比较高。从价格趋势看,生产年份较新的车辆价格中位数整体更高,而年份较早的车辆价格中位数相对较低。这符合汽车折旧的一般规律。4.5行驶公里数与挂牌价格关系行驶公里数反映车辆使用程度,也是二手车价格判断中非常重要的因素。本文先将车辆按照公里数划分为几个区间,并比较不同区间的价格中位数,结果见表8。表8不同行驶公里数区间的价格中位数公里数区间样本量价格中位数0-2万250448957.52万-5万227037144.55万-10万446329999.010万-15万301522990.015万以上385415980.0由表8可知,0-2万公里车辆的价格中位数最高,为48957.5澳元;随着公里数增加,价格中位数逐渐下降;15万公里以上车辆的价格中位数降至15980澳元。这说明行驶公里数与挂牌价格之间存在明显负向关系,公里数越高,车辆价格通常越低。行驶公里数分布及其与挂牌价格关系见图7。图7行驶公里数分布及其与挂牌价格关系由图7可知,低公里数车辆中既有中低价车,也有部分高价车;而高公里数车辆的价格整体较低。平滑趋势线也显示出价格随公里数增加而下降的趋势。不过,散点分布并不集中在一条简单直线上,说明价格还受到品牌、年份、车身类型等因素共同影响。4.6车辆状态、车身类型与燃料类型差异除了年份和公里数这些数值变量外,车辆状态、变速箱类型、车身类型和燃料类型等类别变量也可能对价格产生影响。本文分别比较这些类别变量下的价格中位数,结果见图8。图8不同类别变量下的车辆挂牌价格中位数比较由图8可知,新车和展示车的价格中位数明显高于二手车,说明车辆新旧状态对价格具有直接影响。从车身类型和燃料类型看,不同类型车辆之间价格差异也比较明显,说明类别变量能够补充年份和公里数等数值变量无法完全解释的价格差异。4.7地区分布与空间差异车辆挂牌价格还可能受到地区因素影响。不同地区在车辆供给、消费需求、市场规模和样本数量上可能存在差异,因此本文进一步从州的角度观察样本分布和价格水平。澳大利亚各州车辆挂牌样本数量分布见图9,车辆挂牌价格中位数分布见图10。图9澳大利亚各州车辆挂牌样本数量分布图10澳大利亚各州车辆挂牌价格中位数分布由图9可知,NSW、VIC和QLD的挂牌车辆数量较多,其中NSW样本数最多,达到6376辆,VIC和QLD分别为3847辆和2743辆,说明样本主要集中在这些州。由图10可知,不同州之间的价格中位数确实存在一定差异,例如TAS的价格中位数相对较高,但其样本量较少,因此解释时需要更加谨慎。总体来看,地区价格差异不能简单理解为地区本身直接决定价格,还可能与该地区挂牌车辆的品牌、年份和车型结构有关。4.8数值变量相关性分析最后,本文对主要数值变量进行相关性分析,包括生产年份、车龄、发动机排量、油耗、行驶公里数和挂牌价格。相关性热力图见图11。图11数值变量相关性热力图由图11可知,生产年份和车龄之间呈现接近完全负相关,这是因为车龄由生产年份转换而来,二者本质上反映的是同一类信息。除此之外,价格与生产年份、车龄、行驶公里数等变量之间存在一定相关关系。不过,相关性分析只能反映数值变量之间的线性关系,不能充分体现类别变量和非线性关系的影响,因此后续还需要建立预测模型进行综合比较。五、建模方法与评价指标5.1建模前样本处理与变量确定前面的描述性统计分析显示,汽车挂牌价格存在明显右偏,少数高价车辆会显著拉高均值。同时,行驶公里数、发动机排量和油耗变量中也可能存在极端影响点。如果不对这些样本进行处理,模型容易受到少数极端值影响,导致误差指标和模型拟合结果不够稳定。因此,在正式建模前,本文对price、kilometres、engine_litre和fuel_consumption_l_100km采用IQR方法进行极端值处理。这里并不是认为所有极端样本都是错误数据,而是为了降低少数极端样本对模型训练和误差指标的影响,使模型主要反映样本中主流挂牌车辆的价格规律。IQR处理前后样本量变化见表9。表9IQR极端值处理前后样本量变化处理阶段样本量保留比例IQR处理前14452100.0%IQR处理后1261487.3%由表9可知,处理后样本量从14452条减少到12614条,保留比例为87.3%。这说明IQR方法剔除了一部分极端影响点,但仍保留了大部分有效样本。后续建模结果主要适用于较常见的主流挂牌车辆,对于极端豪华车、稀缺车型或特殊配置车辆的预测仍需要结合具体车况进一步判断。在建模阶段,本文没有直接将所有原始字段放入模型,而是构造了一个可解释性较强的建模变量集。最终纳入模型的变量包括year、kilometres、engine_litre、fuel_consumption_l_100km、brand、used_or_new、transmission、drive_type、fuel_type、body_type和states,具体说明见表10。表10建模变量说明变量含义year生产年份,反映车辆新旧程度kilometres行驶公里数,反映车辆使用程度engine_litre发动机排量,反映动力和车型级别fuel_consumption_l_100km百公里油耗,反映能源效率和车型结构brand车辆品牌,反映品牌定位和市场差异used_or_new车辆状态,区分新车、二手车和展示车transmission变速箱类型drive_type驱动方式fuel_type燃料类型body_type车身类型,反映车辆用途和产品类型states所在州或地区这些变量基本覆盖了车辆价格分析中较重要的几个方面:year和kilometres反映车辆新旧程度和使用程度;engine_litre、fuel_consumption_l_100km、transmission、drive_type和fuel_type反映车辆动力配置和使用成本;brand、body_type和used_or_new反映车辆市场定位和车辆状态;states则用于刻画地区差异。本文没有纳入title和model等过细文本字段,主要是因为这些字段类别过多,容易让模型过度依赖具体车型或文本信息。doors和seats虽然也与车辆结构有关,但缺失比例较高,并且与body_type存在一定重叠,因此没有作为主要建模变量。经过字段整理和IQR极端值处理后,最终用于建模的数据共包含12614条样本。本文按照80%和20%的比例划分训练集和测试集,其中训练集用于模型训练和参数选择,测试集用于评价模型在新样本上的预测效果。训练集与测试集划分结果见表11。表11训练集与测试集划分数据集样本量占比训练集1009180.0%测试集252320.0%5.2模型选择思路本文采用由简单到复杂的建模思路,依次比较线性回归、Ridge回归、Lasso回归、随机森林和XGBoost模型。其中,线性回归作为基准模型,用来观察车辆属性与挂牌价格之间是否具有基本的线性解释关系;Ridge回归和Lasso回归在普通线性回归基础上加入正则化,可以提高模型稳定性,并对高维哑变量情况进行一定约束;随机森林和XGBoost则属于树模型,能够更好地捕捉年份、公里数、品牌、车身类型等变量之间可能存在的非线性关系和交互作用。通过同时比较线性模型和树模型,可以判断汽车挂牌价格是否主要由简单线性关系决定,还是需要更复杂的非线性模型来提高预测效果。5.3模型评价指标为了比较不同模型的预测效果,本文选取MAE、RMSE、R²和R²gap作为主要评价指标,具体含义见表12。表12模型评价指标说明指标含义MAE平均绝对误差,数值越小表示平均预测偏差越小RMSE均方根误差,对较大预测误差更敏感,数值越小越好R²决定系数,数值越接近1表示模型解释能力越强R²gap训练集R²与测试集R²的差距,用于辅助观察过拟合在模型比较中,本文主要关注测试集MAE、RMSE和R²,因为测试集结果更能反映模型在未参与训练样本上的预测能力。同时,本文也参考R²gap,避免只选择训练集表现好但泛化能力较弱的模型。由于本文预测对象是汽车挂牌价格,MAE和RMSE的单位均为澳元,因此需要结合车辆价格本身的量级进行理解。5.4模型筛选原则本文选择最终模型时,主要遵循两个原则:一是测试集预测效果较好,即测试集RMSE较低、R²较高;二是模型稳定性较好,即训练集和测试集之间的R²gap不宜过大。因此,本文不会只看训练集表现,也不会单纯追求最复杂的模型,而是综合比较各模型在测试集上的误差、解释能力和过拟合情况。六、模型结果与比较6.1线性模型与正则化模型结果本文首先建立线性回归、Ridge回归和Lasso回归模型,主要作为后续树模型的比较基准。线性模型的作用不是追求最优预测效果,而是先观察在相对简单的线性关系下,车辆属性是否已经能够解释一部分挂牌价格差异。需要说明的是,虽然原始数据变量数量并不多,但brand、fuel_type、body_type、states等类别变量在建模前进行了哑变量处理,一个原始类别变量会被展开为多个0-1变量,因此线性回归和Lasso回归中的系数数量会多于原始变量数量。为了避免表格过长,本文只展示线性回归中系数绝对值排名前10的变量,结果见表13。表13线性回归系数绝对值前10个变量变量系数系数绝对值brandLDV-22473.71922473.719brandMG-19124.07119124.071brandGWM-19078.06519078.065brandSsangyong-18705.66118705.661brandHolden-11598.12611598.126brandJeep-10640.43810640.438brandSubaru-9751.9769751.976brandRenault-9467.6039467.603brandSuzuki-9291.6279291.627brandMitsubishi-8899.1368899.136由表13可知,线性回归中系数绝对值较大的变量主要集中在品牌变量上,说明在控制其他变量后,不同品牌相对于基准品牌仍存在较明显的价格差异。这也说明品牌定位和市场差异在车辆价格中具有较强影响。在此基础上,本文进一步建立Ridge回归和Lasso回归。通过5折交叉验证,Ridge回归得到的λmin为1056.4028,Lasso回归得到的λmin为3.8859。Ridge回归主要用于控制系数过大,提高模型稳定性;Lasso回归则可以将部分变量系数压缩为0,具有一定变量筛选作用。本次Lasso回归最终保留61个非零系数,其中绝对值排名前10的变量见表14。Ridge与Lasso的交叉验证结果和Lasso变量筛选数量见附录A.1、附录A.2。表14Lasso非零系数绝对值前10个变量变量系数系数绝对值year7377.9487377.948kilometres-5479.7825479.782drive_typeFront-4353.3524353.352brandHolden-2736.2112736.211fuel_typeUnleaded-2731.9732731.973brandMG-2340.3132340.313brandMitsubishi-2118.2962118.296engine_litre2095.7232095.723brandHyundai-2055.0512055.051drive_typeRear-2029.6552029.655由表14可知,year、kilometres、drive_typeFront、fuel_typeUnleaded、engine_litre以及部分品牌变量被保留下来,并且系数绝对值相对较大。这说明在加入正则化约束后,生产年份、行驶公里数、驱动方式、燃料类型、发动机排量和品牌信息仍然具有较强的信息价值。这个结果也与前面描述性统计基本一致。不过,从测试集表现看,线性回归、Lasso回归和Ridge回归的测试集R²分别为0.7884、0.7877和0.7804,测试集RMSE分别为7053.771、7066.106和7186.167澳元。整体来看,线性模型能够解释一部分价格差异,但预测能力仍然有限。因此,后续进一步比较随机森林和XGBoost等非线性模型。6.2随机森林候选模型结果随机森林通过多棵决策树进行集成,能够处理变量之间较复杂的非线性关系和交互作用。本文设置多组随机森林候选参数,并利用OOB误差和测试集表现选择代表模型。为了避免表格过长,正文主要展示测试表现较好的随机森林候选模型核心结果,见表15。完整随机森林候选模型结果见附录A.3。表15随机森林候选模型核心结果模型mtrymin_node_sizesplitrule测试MAE测试RMSE测试R²R²gapRF-693extratrees3286.8524754.7610.90390.0779RF-563extratrees3304.3544755.5550.90380.0754RF-995extratrees3322.7924799.3070.90200.0723RF-443extratrees3358.1004819.3800.90120.0719RF-233variance3369.6674881.5660.89870.0762由表15可知,不同随机森林候选模型的测试集表现较为接近,其中RF-6的测试集MAE为3286.852,RMSE为4754.761,测试集R²为0.9039,整体表现最好,因此本文将RF-6作为随机森林代表模型进入后续综合比较。与线性模型相比,随机森林模型的测试集R²明显提高,说明汽车挂牌价格并不完全由简单线性关系决定,树模型能够更好地利用年份、公里数、品牌、车身类型和燃料类型等变量之间的组合信息。6.3XGBoost候选模型结果XGBoost是本文重点比较的树模型。与随机森林相比,XGBoost通过逐轮迭代修正前一轮模型的预测误差,通常能够在结构化数据预测任务中取得较好的效果。本文设置多组候选参数组合,并通过5折交叉验证和earlystopping确定最佳迭代轮数。XGBoost候选模型核心结果见表16。完整XGBoost候选模型结果见附录A.4。表16XGBoost候选模型核心结果模型max_depthetamin_child_weightbest_nrounds测试MAE测试RMSE测试R²R²gapXGBoost-360.0557982975.7364173.1350.92590.0403XGBoost-560.0858002978.6424196.2270.92510.0514XGBoost-670.0815082964.7164198.4230.92500.0586XGBoost-750.1057913011.5234220.7060.92420.0449由表16可知,XGBoost-3的测试集MAE为2975.736,RMSE为4173.135,测试集R²为0.9259,R²gap为0.0403。相比RF-6,XGBoost-3在MAE、RMSE和测试集R²上都有进一步提升,同时R²gap小于0.05,说明模型在测试集上保持较好预测效果的同时,训练集与测试集之间的差距也相对可控。虽然XGBoost-5和XGBoost-6的测试集R²与XGBoost-3接近,但它们的R²gap分别为0.0514和0.0586,说明模型复杂度提高后,训练集拟合增强,但测试集提升并不明显。综合测试集误差、测试集R²和R²gap,本文最终选择XGBoost-3作为主模型。XGBoost-3的主要参数设置为:max_depth=6,eta=0.05,min_child_weight=5,subsample=0.8,colsample_bytree=0.8,最佳迭代轮数为798。该模型既保持了较好的预测效果,也没有出现过大的训练集与测试集差距,因此更适合作为后续模型解释的对象。6.4模型综合比较为了更清楚地比较不同模型的预测效果,本文将线性回归、Ridge回归、Lasso回归、随机森林代表模型和XGBoost-3的主要指标进行汇总,结果见表17。表17各模型训练集与测试集预测效果比较模型训练MAE测试MAE训练RMSE测试RMSE训练R²测试R²R²gapXGBoost-32054.1502975.7362814.2984173.1350.96630.92590.0403RF-61450.5973286.8522068.2024754.7610.98180.90390.0779线性回归5197.5715332.7766880.2757053.7710.79850.78840.0101Lasso回归5200.2755342.9726882.8917066.1060.79840.78770.0107Ridge回归5242.1915378.2406995.0477186.1670.79170.78040.0113在解释模型误差时,需要注意本文的价格单位为澳元,因此MAE和RMSE也都是以澳元为单位。由于汽车挂牌价格本身的量级较大,样本中既有两万澳元以下的车辆,也有十万澳元以上的车辆,价格波动范围较宽,所以RMSE达到几千澳元并不代表模型完全不可用,而需要结合汽车价格本身的量级来理解。尤其是在比较不同模型时,RMSE更重要的作用是观察不同模型之间的误差是否明显下降。为了同时观察模型误差和解释能力,本文进一步绘制了各模型测试集RMSE与R²的综合比较图,结果见图12。其中,左侧面板表示测试集RMSE,数值越小代表预测误差越低;右侧面板表示测试集R²,数值越大代表模型对价格差异的解释能力越强。图12各模型测试集RMSE与R²综合比较由图12可知,线性回归、Lasso回归和Ridge回归的测试集RMSE均在7000澳元左右,测试集R²约为0.78,说明线性模型能够解释一部分价格差异,但整体预测误差仍然较大。相比之下,RF-6的测试集RMSE降至4754.761澳元,测试集R²提高到0.9039;XGBoost-3的测试集RMSE进一步降至4173.135澳元,测试集R²提高到0.9259。由此可见,树模型相比线性模型明显降低了预测误差,也提高了对挂牌价格差异的解释能力。综合来看,XGBoost-3同时具有最低的测试集RMSE和最高的测试集R²,说明其在误差控制和解释能力上都表现最好。结合表17中的R²gap可以看到,XGBoost-3的R²gap为0.0403,训练集与测试集之间的差距相对可控。因此,本文进一步整理模型综合筛选结果,见表18。表18模型综合筛选结果模型筛选说明测试MAE测试RMSE测试R²R²gapMAE增加%R²下降XGBoost-3兼顾预测效果与R²gap2975.7364173.1350.92590.04030.00000.0000RF-6OOB误差最低3286.8524754.7610.90390.077910.45510.0221线性回归无调参,基准模型5332.7767053.7710.78840.010179.20870.1375Lasso回归5折CV选择lambda5342.9727066.1060.78770.010779.55130.1383Ridge回归5折CV选择lambda5378.2407186.1670.78040.011380.73650.1455由表18可知,XGBoost-3的测试集MAE为2975.736,测试集RMSE为4173.135,测试集R²为0.9259,R²gap为0.0403,整体表现较好。与XGBoost-3相比,RF-6的MAE高出约10.46%,测试集R²低0.0221;线性回归、Lasso回归和Ridge回归的MAE则比XGBoost-3高出约79%—81%,测试集R²下降也更加明显。因此,本文最终选择XGBoost-3作为主模型。后续分析将围绕该模型进一步观察预测值与真实值的关系、不同价格区间下的误差表现,并通过变量重要性和SHAP方法解释模型主要依据哪些因素进行价格预测。七、最终模型诊断与解释前一部分已经比较了线性模型、正则化模型、随机森林和XGBoost的预测效果,并最终选择XGBoost-3作为主模型。本部分不再重复模型筛选过程,而是进一步结合预测结果与前文的车辆价格结构分析,从预测值与真实值关系、不同价格区间误差、变量重要性和SHAP解释几个方面展开分析。这样既可以判断XGBoost-3对主流挂牌车辆价格的预测是否稳定,也可以进一步理解澳大利亚汽车挂牌市场中,车辆年份、行驶公里数、动力配置、燃料类型和品牌定位等因素是如何共同影响价格水平的。7.1XGBoost-3预测值与真实值比较首先,本文将XGBoost-3在测试集上的预测价格与真实挂牌价格进行比较,结果见图13。图13XGBoost-3预测值与真实值比较由图13可知,大部分样本分布在对角线附近,说明模型预测价格与真实挂牌价格整体较接近。结合前文模型比较结果,XGBoost-3在测试集上的MAE为2975.736澳元,RMSE为4173.135澳元,测试集R²为0.9259,说明该模型能够解释大部分汽车挂牌价格差异。不过,在较高价格区间,部分样本的预测值和真实值之间仍存在一定偏差。这与汽车价格本身的特点有关:主流价格区间样本数量较多,模型更容易学习其价格规律;而高价车辆样本相对较少,且往往受到品牌、配置、稀缺性和具体车况等因素影响更大,因此预测难度也更高。7.2XGBoost-3分价格区间误差分析仅观察整体误差指标还不够,因为汽车价格本身存在明显分层。一个模型即使整体RMSE较低,也可能在某些价格区间表现较差。因此,本文进一步按照真实挂牌价格划分区间,分析XGBoost-3在不同价格区间下的预测误差,结果见表19。表19XGBoost-3在不同价格区间的预测误差价格区间样本量MAERMSE平均残差2万以下7092057.282783.00-889.762万-4万12032618.053542.21-207.024万-6万4784308.355608.19710.986万-10万1336317.807908.615613.03由表19可知,XGBoost-3在2万以下区间的MAE为2057.28澳元,在2万-4万区间的MAE为2618.05澳元,误差相对较小;而在4万-6万区间和6万-10万区间,MAE分别上升到4308.35澳元和6317.80澳元,说明随着车辆价格提高,模型预测难度也有所增加。这一结果与前面的价格分布分析是一致的。样本主要集中在2万-4万澳元区间,低价和中价车辆数量更多,模型能够学习到更稳定的价格规律;而高价车辆样本数量较少,价格又更容易受到品牌、配置和车辆个体差异影响,因此误差更大。尤其在6万-10万区间,XGBoost-3的平均残差为正,说明该区间存在一定低估倾向,即模型预测价格整体低于真实挂牌价格。树模型候选模型残差分布作为补充诊断见附录A.8。7.3XGBoost-3变量重要性分析为了理解最终模型主要依靠哪些变量进行价格预测,本文进一步查看XGBoost-3的变量重要性结果。XGBoost-3变量重要性前20个变量见表20。表20XGBoost-3变量重要性前20个变量FeatureGainCoverFrequencyyear0.38970.07650.1166kilometres0.18170.21750.2389engine_litre0.09200.06870.0921drive_typeFront0.09100.01180.0156fuel_typeUnleaded0.06850.01580.0222fuel_consumption_l_100km0.04110.11210.1648brandMercedes.Benz0.01170.01450.0086brandToyota0.01090.01220.0106brandHolden0.01040.01580.0084body_typeSUV0.01010.00730.0194brandLDV0.00700.01310.0036brandMG0.00690.01680.0049drive_typeRear0.00560.01550.0126drive_typeAWD0.00530.01280.0193brandLand0.00500.01400.0053fuel_typePremium0.00470.01030.0201body_typeHatchback0.00450.00590.0093brandLexus0.00420.01120.0032body_typeUTE0.00320.01000.0107brandBMW0.00320.01170.0058由表20可知,year、kilometres、engine_litre、drive_typeFront、fuel_typeUnleaded和fuel_consumption_l_100km等变量排名靠前。其中,year的重要性最高,说明生产年份是模型判断车辆价格时最核心的变量之一;kilometres排名也很靠前,说明车辆使用程度对价格预测具有重要作用。这一结果与前面的描述性统计基本一致:生产年份越新的车辆价格中位数通常越高,行驶公里数越大的车辆价格中位数通常越低。从现实市场含义看,year和kilometres的重要性较高也比较符合汽车定价逻辑。车辆年份越新,通常意味着折旧程度较低、配置更新、剩余使用价值更高;行驶公里数越高,则往往代表车辆使用强度更大,未来维修和保养风险也可能更高,因此会拉低价格。engine_litre、fuel_consumption_l_100km、drive_typeFront和fuel_typeUnleaded等变量进入前列,则说明模型还同时考虑了动力配置、用车成本和车辆类型差异。品牌变量的进入也具有一定现实解释意义。例如,前文描述性统计中Toyota样本量最多,说明其在样本中覆盖较广,更接近主流消费市场;Mercedes-Benz虽然样本量不是最多,但价格中位数明显较高,更能体现豪华品牌的品牌溢价和配置差异。因此,模型中出现brandToyota、brandMercedes.Benz、brandHolden等变量,并不是简单的统计结果,而是反映了不同品牌在市场定位、消费者认知和车辆保值程度上的差异。需要注意的是,变量重要性可以告诉我们模型主要使用了哪些变量,但不能直接说明变量取值变大时价格一定上升或下降。例如,同样是品牌变量,Toyota更多体现主流市场覆盖,Mercedes-Benz更多体现豪华品牌定位,二者对价格的作用方式并不相同。因此,下一步还需要结合SHAP方法进一步观察变量对预测价格的具体影响方向。7.4SHAP模型解释为了进一步解释XGBoost-3的预测逻辑,本文使用SHAP方法分析各变量对预测价格的影响。SHAP可以将单个样本的预测结果拆分到各个变量上,从而更直观地观察变量对预测价格的正向或负向贡献。XGBoost-3的SHAP平均绝对值前20个变量见表21。表21XGBoost-3的SHAP平均绝对值前20个变量Featuremean_abs_shapyear6599.9985kilometres3557.4111drive_typeFront2985.9446fuel_typeUnleaded2893.2344engine_litre2431.5812fuel_consumption_l_100km987.6721brandToyota788.5507brandHolden634.3677statesVIC469.3362brandMercedes.Benz456.9440body_typeSUV379.7153drive_typeRear371.1155brandMG339.2266transmissionManual258.2874brandLand199.9008brandSubaru199.7648brandBMW194.0997drive_typeAWD192.1184body_typeHatchback186.8623brandGWM170.4645由表21可知,year、kilometres、drive_typeFront、fuel_typeUnleaded、engine_litre和fuel_consumption_l_100km等变量排名靠前。其中,year的平均绝对SHAP值最高,达到6599.9985,说明生产年份对单个车辆价格预测的影响幅度最大;kilometres的平均绝对SHAP值为3557.4111,也说明行驶公里数是模型预测中非常重要的变量。这个结果与XGBoost变量重要性基本一致,进一步验证了年份和公里数在价格预测中的核心作用。SHAP平均绝对值重要性图见附录A.7。为了观察变量取值对预测价格的影响方向,本文进一步绘制SHAP蜂群图,结果见图14。图14SHAP蜂群图由图14可知,年份较新的车辆通常对应正向SHAP值,说明较新的生产年份会提高模型预测价格;而行驶公里数较高的车辆通常对应负向SHAP值,说明高公里数会降低模型预测价格。这与汽车折旧规律基本一致。发动机排量、燃料类型和驱动方式等变量也会对预测价格产生影响,说明模型不仅考虑车辆新旧程度和使用程度,也结合了车辆配置和动力类型信息。进一步来看,本文分别绘制year、kilometres、engine_litre和fuel_consumption_l_100km的SHAP依赖关系图,结果见图15。图15主要连续变量的SHAP依赖关系由图15可知,year与SHAP值整体呈正向关系,生产年份越新,对预测价格的正向贡献通常越明显;kilometres与SHAP值整体呈负向关系,行驶公里数越高,对预测价格的负向影响越明显;engine_litre的影响相对更复杂,较大排量车辆在部分情况下会提高预测价格,但其作用还会受到品牌和车型定位影响;fuel_consumption_l_100km与价格之间也不是简单线性关系,说明油耗水平往往需要结合车辆类型和动力配置一起理解。结合变量重要性和SHAP结果可以看出,XGBoost-3的预测逻辑与前面的描述性统计结果基本一致。模型最重视的是车辆生产年份和行驶公里数,其次是动力配置、燃料类型、驱动方式和品牌信息。这说明模型并不是单纯依靠某一个变量进行预测,而是在综合车辆新旧程度、使用程度、配置水平和品牌定位后形成价格判断。从现实角度看,这也比较符合二手车和挂牌车市场的定价逻辑。消费者在判断一辆车是否值得购买时,通常会先关注年份和公里数,再进一步比较品牌、动力类型、油耗和车身结构;平台或经销商在定价时,也需要同时考虑车辆折旧、品牌溢价、配置水平和使用成本。因此,SHAP结果不仅解释了模型本身,也进一步说明了车辆挂牌价格背后的市场结构。八、结论与建议8.1主要结论本文基于AustralianVehiclePrices数据,主要回答了三个问题:价格本身呈现什么分布特征、不同车辆属性是否会造成价格差异,以及这些车辆属性能否用于预测挂牌价格。第一,汽车挂牌价格呈现明显右偏分布,少数高价车辆对整体价格水平有较大影响。样本价格均值为37303.33澳元,中位数为29500澳元,均值明显高于中位数,最大值达到1500000澳元,说明数据中存在少数极端高价车辆。从价格区间看,车辆主要集中在2万-4万澳元和2万澳元以下区间,其中2万-4万澳元车辆占比最高,为42.1%。因此,在描述性统计中使用中位数进行比较,以及在建模前采用IQR方法处理极端影响点,是比较合理的处理方式。第二,不同车辆属性确实会造成明显价格差异。其中,生产年份和行驶公里数是最直观的两个因素。年份较新的车辆通常价格更高,行驶公里数较大的车辆价格更低。例如,0-2万公里车辆的价格中位数为48957.5澳元,而15万公里以上车辆的价格中位数降至15980澳元。除此之外,品牌、车辆状态、车身类型、燃料类型和地区等变量也会造成价格分层。第三,这些车辆属性能够较好地用于汽车挂牌价格预测,但不同模型的表现差异明显。线性回归、Ridge回归和Lasso回归可以解释一部分价格差异,测试集R²大约在0.78左右;随机森林和XGBoost的预测效果明显更好,说明汽车价格与车辆属性之间存在一定非线性关系。综合MAE、RMSE、测试集R²和R²gap,本文最终选择XGBoost-3作为主模型。该模型测试集MAE为2975.736澳元,RMSE为4173.135澳元,测试集R²为0.9259,R²gap为0.0403,整体预测效果较好。变量重要性和SHAP结果也显示,year、kilometres、engine_litre、drive_typeFront、fuel_typeUnleaded和fuel_consumption_l_100km等变量在模型中较为重要,其中生产年份和行驶公里数是最核心的影响因素。总体来看,本文通过描述性统计先观察了汽车价格差异的来源,再通过模型比较验证了这些变量的预测价值。最终结果说明,汽车挂牌价格既受到车辆折旧和使用程度影响,也受到品牌、配置和燃料类型等因素影响;在这些变量基础上,XGBoost模型能够较好地预测主流挂牌车辆价格。8.2分析建议对于消费者而言,在判断一辆车的挂牌价格是否合理时,不应只看车辆是新车还是二手车,而应综合比较生产年份、行驶公里数、品牌、燃料类型、车身类型和车辆状态等信息。尤其是年份和公里数,它们与车辆折旧关系较明显,是判断价格水平时最基础的参考因素。例如,同样是较新的车辆,如果行驶公里数明显更高,其价格也应相应下降;而对于Mercedes-Benz等豪华品牌,价格较高可能与品牌定位和配置水平有关,但仍需要结合年份、公里数和具体车况判断是否合理。对于汽车销售平台而言,可以利用类似XGBoost的预测模型建立车辆挂牌价格参考区间。平台在车辆发布或审核时,可以根据车辆年份、公里数、品牌、动力配置、燃料类型和地区等信息,对挂牌价格进行初步评估,辅助识别明显偏高或偏低的挂牌价格。例如,对于Toyota这类样本量较大、市场覆盖较广的品牌,模型可以较稳定地形成价格参考;而对于豪华品牌、稀缺车型或样本较少的特殊车型,则可以将模型预测结果作为辅助判断,再结合人工审核。对于经销商而言,模型结果可以作为辅助定价工具,但不能完全替代人工判断。对于主流价格区间的车辆,模型预测相对稳定,可以作为定价参考;但对于高价车、豪华车、稀缺车型或特殊配置车辆,由于样本数量较少、影响因素更复杂,仍需要结合具体车况、配置水平、保养记录和市场供需情况进行判断。特别是在新能源车和混合动力车逐渐增多的背景下,燃料类型、用车成本、电池状态和充电便利性等因素也可能影响消费者对车辆价格的接受程度,后续定价时应给予更多关注。8.3不足与展望本文仍存在一些不足。首先,本文使用的是车辆挂牌价格,而不是最终成交价格,因此模型预测的是市场展示价格,不一定完全等同于真实交易价格。现实交易中,卖家议价空间、库存压力、促销活动和地区供需变化都可能导致成交价格与挂牌价格存在差异。其次,数据中缺少一些会明显影响汽车价格的细节变量,例如事故记录、维修保养情况、具体配置版本、是否一手车、车况评分、销售周期等。对于新能源车或混合动力车而言,电池状态、续航能力和充电便利性等信息也可能影响车辆价值,但这些变量在当前数据中没有体现。再次,本文在建模前采用IQR方法处理极端影响点,使模型更关注主流挂牌车辆的价格规律。这样做有助于提高模型稳定性,但对极端高价车、豪华稀缺车型或特殊配置车辆的适用性相对有限。例如,部分高价豪华车的价格可能更多取决于配置、车况、稀缺性和品牌溢价,而不仅仅是年份和公里数。后续如果进一步改进,可以加入更细的车型配置、车况和成交价数据,也可以针对豪华车、新能源车或高价车辆单独建立模型,从而提高模型在不同细分市场中的预测稳定性和解释能力。附录A补充结果本附录整理正文中未展开呈现的部分补充表格和图形,主要用于说明模型筛选过程、变量重要性和补充诊断结果。附录A.1Ridge与Lasso的交叉验证结果模型lambda_minlambda_1seRidge回归1056.4027741532.65955Lasso回归3.88585147.90658附录A.2Lasso变量筛选结果指标数值Lasso非零系数数量61附录A.3随机森林完整候选模型结果模型mtrymin_node_sizesplitrule测试MAE测试RMSE测试R²R²gapRF-693extratrees3286.8524754.7610.90390.0779RF-563extratrees3304.3544755.5550.90380.0754RF-995extratrees3322.7924799.3070.90200.0723RF-443extratrees3358.1004819.3800.90120.0719RF-233variance3369.6674881.5660.89870.0762RF-765variance3359.6604895.8180.89810.0799RF-135variance3407.3644924.4140.89690.0727RF-10410variance3433.0314972.8790.89480.0672RF-8610extratrees3500.7165004.4790.89350.0581RF-335extratrees3544.1095054.5850.89140.0619附录A.4XGBoost完整候选模型结果模型max_depthetamin_child_weightbest_nrounds测试MAE测试RMSE测试R²R²gapXGBoost-360.0557982975.7364173.1350.92590.0403XGBoost-560.0858002978.6424196.2270.92510.0514XGBoost-670.0815082964.7164198.4230.92500.0586XGBoost-750.157913011.5234220.7060.92420.0449XGBoost-860.155902991.2504225.6360.92410.0515XGBoost-450.0858003004.3224231.8640.92380.0412XGBoost-1250.0858003031.8984262.6810.92270.0386XGBoost-970.113693010.8174270.2570.92250.0596XGBoost-1160.05108003038.1494292.2090.92170.0360XGBoost-150.0558003061.0944297.5120.92150.0326XGBoost-1050.05108003110.8234360.1890.91920.0264XGBoost-240.0558003224.2434492.5010.91420.0227

附录A.5随机森林变量重要性图附录A.6XGBoost-3变量重要性图

附录A.7XGBoost-3的SHAP平均绝对值重要性图附录A.8树模型候选模型残差分布图附录BRMarkdown核心代码#说明:本附录仅展示报告复现所需的核心代码,完整运行文件请见附件RMarkdown代码。#B.1第一阶段:数据读取与描述性统计分析#B.1.1环境准备与数据读取library(tidyverse)library(janitor)library(scales)library(knitr)library(patchwork)library(ggplot2)file_path<-"AustralianVehiclePrices.csv"if(!file.exists(file_path)&&file.exists("Kaggle-AustralianVehiclePrices.csv")){file_path<-"Kaggle-AustralianVehiclePrices.csv"}car_raw<-readr::read_csv(file_path,na=c("","NA","NaN","-","POA"),show_col_types=FALSE)%>%janitor::clean_names()basic_info<-tibble(指标=c("样本量","变量数量"),数值=c(nrow(car_raw),ncol(car_raw)))var_info<-tibble(变量名=names(car_raw),数据类型=map_chr(car_raw,~class(.x)[1]),缺失数量=map_int(car_raw,~sum(is.na(.x))),缺失比例=percent(缺失数量/nrow(car_raw),accuracy=0.01))dup_info<-tibble(检查项="重复记录数量",数值=sum(duplicated(car_raw)))#B.1.2字段整理与变量构造parse_num_safe<-function(x){if(is.numeric(x))as.numeric(x)elsereadr::parse_number(as.character(x))}car_eda<-car_raw%>%mutate(price=parse_num_safe(price),kilometres=parse_num_safe(kilometres),year=eger(parse_num_safe(year)),engine_litre=str_extract(as.character(engine),"\\d+\\.?\\d*(?=\\s*L)")%>%as.numeric(),fuel_consumption_l_100km=parse_num_safe(fuel_consumption),states=str_extract(as.character(location),"[A-Z]{2,3}\\s*$")%>%str_trim(),body_type=case_when(body_type=="Commercial"~"Van",body_type=="Ute/Tray"~"UTE",TRUE~as.character(body_type)),drive_type=na_if(as.character(drive_type),"Other"),fuel_type=na_if(as.character(fuel_type),"-"),car_age=max(year,na.rm=TRUE)-year,price_band=cut(price,breaks=c(-Inf,20000,40000,60000,100000,Inf),labels=c("2万以下","2万-4万","4万-6万","6万-10万","10万以上")),kilometre_group=cut(kilometres,breaks=c(-Inf,20000,50000,100000,150000,Inf),labels=c("0-2万","2万-5万","5万-10万","10万-15万","15万以上")))%>%mutate(across(any_of(c("brand","used_or_new","transmissi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论