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

R语言使用自定义函数绘制contour等高线图报错及输出异常求解

问题排查与修复方案

核心问题原因

  • outer()函数使用错误:原代码未传入自定义计算函数,默认计算的是y1和y2的外积矩阵,和你需要的y_t网格计算结果完全不符
  • y_t的计算逻辑错误:原代码仅对y1、y2的对等位置元素做计算,没有覆盖两个变量所有取值组合的网格点
  • 随机误差维度不匹配:原代码生成的e_1长度仅等于y1的长度,无法匹配y1×y2网格点的矩阵维度
  • filled.contour()参数传入错误:该函数不能直接接收contour()的返回对象,需要直接传入x、y、z三个核心参数

修复后可运行代码

# 固定随机种子保证结果可复现,不需要可删除
set.seed(123)
# 定义Y_{t-1}、Y_{t-2}的取值序列
y_1 <- seq(-1, 1, 0.05)
y_2 <- seq(-1, 1, 0.05)
# 用outer计算所有y1、y2组合对应的y_t值
z <- outer(y_1, y_2, function(yt1, yt2) {
  # 生成对应维度的正态误差
  e_t <- rnorm(length(yt1), mean = 0, sd = 0.2)
  # 按公式计算y_t
  0.8*yt1 - 0.5*yt2 + (-1.6*yt1 + yt2)/(1 + exp(-10*yt1)) + e_t
})
# 绘制普通等高线图
contour(y_1, y_2, z, xlab = expression(Y[t-1]), ylab = expression(Y[t-2]))
# 绘制填充等高线图
filled.contour(y_1, y_2, z, xlab = expression(Y[t-1]), ylab = expression(Y[t-2]),
               color.palette = terrain.colors)

补充说明

如果不需要每次绘图结果都变化,可以把随机误差e_t的生成放到outer外面,预先生成对应维度的矩阵即可,也可以根据需求调整等高线的层级、颜色映射等参数匹配参考示例的样式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:15:02