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

R代码拟合正态曲线方法及绘图曲线不显示问题排查

问题排查与解决方案

一、为什么你的拟合曲线没显示?

咱们先拆解你代码里的核心问题:

  1. 自变量范围完全偏离:你定义的xx <- seq(1,80, length=3)完全超出了Decline_Category的实际范围(1-3),这会导致预测值对应的x轴位置和原始数据的图表可视区域完全脱节,就算后续代码正常,曲线也看不到。
  2. 语法错误导致预测失败:predict(fit, data.frame(=xx))这里缺失了关键的列名!你需要指定数据框的列名为Decline_Category(和线性模型中的自变量名保持一致),也就是写成data.frame(Decline_Category=xx),否则R根本不知道你要给模型传递什么自变量值,预测步骤直接出错,自然画不出曲线。

修正后的线性拟合代码如下:

Decline_Category <- c(1,2,3)
Number_of_Trees <- c(80,15,5)
# 绘制原始数据点,提前设置y轴范围
plot(Decline_Category, Number_of_Trees, pch=19, ylim=c(0,100))
# 拟合线性模型
fit <- lm(Number_of_Trees ~ Decline_Category)
# 生成和自变量范围匹配的x序列(生成100个点让曲线更平滑)
xx <- seq(min(Decline_Category), max(Decline_Category), length=100)
# 预测并绘制红色拟合曲线
lines(xx, predict(fit, data.frame(Decline_Category=xx)), col="red", lwd=2)

运行这段代码后,红色的线性拟合曲线就会正常显示在你的散点图上了。

二、如何在R中拟合正态曲线?

针对你的数据集(类别+计数),拟合正态曲线分两种常见场景,我分别说明:

场景1:为响应变量拟合正态分布并绘制密度曲线

如果你想探索Number_of_Trees的正态分布特征,可以用直方图搭配正态密度曲线:

# 计算数据的均值和标准差
mu <- mean(Number_of_Trees)
sigma <- sd(Number_of_Trees)
# 绘制带概率密度的直方图
hist(Number_of_Trees, prob=TRUE, main="正态分布拟合", col="lightblue", border="white")
# 生成覆盖数据范围的x序列
x_seq <- seq(min(Number_of_Trees)-5, max(Number_of_Trees)+5, length=100)
# 计算正态分布的概率密度值
norm_density <- dnorm(x_seq, mean=mu, sd=sigma)
# 绘制红色正态曲线
lines(x_seq, norm_density, col="darkred", lwd=2)

场景2:针对计数数据的更优拟合(替代正态线性模型)

注意:你的Number_of_Trees是计数数据,普通线性模型(lm)基于正态分布假设,并不适配这类数据。更合适的是用泊松回归(基于泊松分布,专门针对计数响应变量):

# 拟合泊松回归模型
poisson_fit <- glm(Number_of_Trees ~ Decline_Category, family=poisson)
# 绘制原始数据点
plot(Decline_Category, Number_of_Trees, pch=19, ylim=c(0,100))
# 生成x序列并预测响应值
xx <- seq(min(Decline_Category), max(Decline_Category), length=100)
preds <- predict(poisson_fit, data.frame(Decline_Category=xx), type="response")
# 绘制绿色拟合曲线
lines(xx, preds, col="darkgreen", lwd=2)

这种模型的预测结果会更符合计数数据的特性,比正态线性模型更合理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:06:23