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

如何解决R中xy.coords报错:'x'和'y'长度不一致问题?

修复R语言线性回归绘图的长度不匹配问题

报错原因分析

你遇到的Error in xy.coords(x, y, xlabel, ylabel, log) : 'x' and 'y' lengths differ错误,核心原因是绘图时混用了训练集的观测价格(train$Price,占总数据75%)和测试集的预测价格(predprice,占总数据25%),两者样本数量不一致,导致坐标映射时长度不匹配。

同时你的多项式回归线逻辑也存在问题:当前代码基于线性回归的预测值构建二次多项式回归,且绘图时未将预测值与观测值按顺序对应,会导致回归线混乱。

修复方案

  1. 绘图统一使用训练集的观测值和训练集的预测值,保证数据长度一致;
  2. 重新构建多项式回归模型,直接基于数据集的特征而非线性回归的预测值;
  3. 绘制回归线时,先对观测值排序,再对应排序后的多项式预测值,确保线条连续合理。

修复后的完整代码

library(rstudioapi) 
options(scipen = 999) 
options(digits = 3)
rm(list=ls())
load("carData.rdata")
set.seed(25)
trainIndex <- sample(1:nrow(carData), trunc(nrow(carData) * 0.75))
train <- carData[trainIndex,]
test <- carData[-trainIndex,]

# 构建基础线性回归模型
lm.results <- lm(Price~., data=train)

library(car)
numeric_columns <- sapply(carData, is.numeric)
numeric_data <- carData[, numeric_columns]
correlation_matrix <- cor(numeric_data)
vif_values <- vif(lm(Price ~ ., data = numeric_data))
print(correlation_matrix)
print(vif_values) 
summary(lm.results)

# 处理因子水平匹配
train$Model <- factor(train$Model)
test$Model <- factor(test$Model)
test$Model <- factor(test$Model, levels = levels(train$Model))

# 测试集预测与RMSE计算
predprice_test <- predict(lm.results, newdata = test)
rmse <- sqrt(mean((test$Price-predprice_test)^2, na.rm=TRUE))
print(round(rmse,2))

# 构建基于训练集特征的二次多项式回归(示例针对Horsepower做二次项,可按需替换)
poly_results <- lm(Price ~ . + poly(Horsepower, 2), data = train)
# 生成训练集的多项式预测值
poly_predprice_train <- predict(poly_results)

# 训练集的线性回归预测值(用于绘图散点)
predprice_train <- predict(lm.results)

par(mar = c(3, 3, 1, 1))
# 绘图:训练集观测值 vs 训练集线性预测值,保证x和y长度一致
plot(train$Price, 
     predprice_train, 
     xlab = "观测价格", ylab = "预测价格", 
     main = "线性回归:观测 vs 预测价格", 
     cex.axis = 0.8)

# 绘制多项式回归线:按观测价格排序后对应预测值,保证线条连贯
sorted_idx <- order(train$Price)
lines(train$Price[sorted_idx], poly_predprice_train[sorted_idx], col = "blue")  

关键修改点说明

  • 将测试集预测值重命名为predprice_test,避免和训练集预测值混淆;
  • 绘图时使用train$Price和predprice_train(训练集的线性预测值),确保两者长度完全匹配;
  • 调整多项式回归模型的构建逻辑,直接基于数据集的特征(示例中选择Horsepower做二次项,你可根据需求替换为其他特征或扩展为所有数值特征);
  • 通过order()获取观测值的排序索引,让预测值和观测值一一对应,保证回归线的连续性和合理性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 21:05:02