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

如何在R中基于水深建立海豚出现情况的二项式GLM模型?

代码验证与绘图问题解决

数据样本

部分水深与海豚出现情况数据:

Depthpresence
80
311
311
290

原代码问题排查

你写的代码存在几处需要修正的细节:

  1. read.csv的文件名未加引号,R会将其识别为变量而非文件路径,需改为read.csv("presence.data.csv", header=TRUE)。
  2. 列名不匹配:数据表头是Depth.(带点),但代码中用的是depth,大小写和符号不一致会导致模型无法找到对应列,需统一两者。
  3. 仅绘制了散点,未添加GLM模型的拟合曲线,这是你所说“无法添加(拟合线)”的核心问题。

修正后的完整代码

# 读取数据,注意文件名加引号
data <- read.csv("presence.data.csv", header=TRUE)

# 统一列名(也可直接在后续代码中使用原表头Depth.)
colnames(data) <- c("depth", "presence")

# 确保presence列是整数类型(处理数据中可能存在的格式问题)
data$presence <- as.integer(data$presence)

# 构建二项式GLM模型
M1 <- glm(presence ~ depth, family=binomial)

# 生成预测序列
x <- seq(min(data$depth), max(data$depth), length.out=100)
y <- predict(M1, list(depth=x), type=response)

# 绘制散点图并添加拟合曲线
plot(data$depth, data$presence, pch=16, xlab="水深", ylab="海豚出现概率", main="水深与海豚出现关系")
lines(x, y, col="red", lwd=2)

关键说明

  • 列名一致性:必须保证代码中调用的列名与CSV文件表头完全一致,若表头是Depth.,则将代码中所有depth替换为Depth.即可。
  • 拟合曲线添加:通过lines()函数将预测的x(水深序列)和y(预测出现概率)绘制到散点图上,就能得到GLM模型的拟合曲线。
  • 数据清洗:提前转换presence列为整数类型,避免数据中类似1.的格式问题影响模型构建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 09:19:59