使用定义的函数时,轮廓图在 R 中失败

Posted

技术标签:

【中文标题】使用定义的函数时,轮廓图在 R 中失败【英文标题】:Contour plot fails in R when using a defined function 【发布时间】:2021-12-30 11:16:37 【问题描述】:

我正在尝试在 R 中生成以下函数的等高线图,

其中 Y_t-1 和 Y_t-2 的值介于 -1 和 1 之间,并且 e_t 服从均值 0 和标准差 0.2 的正态分布,即 e_t~N(0,. 2).

我已经开始设置代码来处理函数以及计算 y_t 的值,但是我遇到了以下两个问题。

    在 R 中定义 contour() 函数时,我在设置 z 值时遇到问题,并且输出不正确。

    当我尝试使用 filled.contour() 用颜色填充绘图时,我得到“seq.default(0, 1, length.out = ncol(z)) 中的错误:参数 'length.out' 必须是长度 1" 错误,我不确定如何解决。

最后,我想获得一个类似于以下或类似的等高线图,

下面我提供了一些我一直在玩弄的示例代码,它只会生成一个简单的等高线图,其中函数 y_t 未正确定义。

y_1<-seq(-1,1, 0.05)
y_2<-seq(-1,1, 0.05)
e_1<-rnorm(length(y_1), mean=0, sd=.2)
y_t<-0.8*y_1-0.5*y_2+(-1.6*y_1+y_2)*(1+exp(-10*y_1))^(-1)+e_1
z=outer(y_1,y_2)
Cont_test<-contour(y_1,y_2,z)
filled.contour(Cont_test)

提前感谢您的帮助。

【问题讨论】:

不清楚你要绘制什么,但是有一些技术问题:你没有将y_t定义为一个函数,你对z的定义忽略了y_t。跨度> 感谢您的回复,我也有点难以理解,因为我不确定如何将 y_t 作为函数实现到 R 中的轮廓函数中。 查看@BrianMontgomery 的回答。 【参考方案1】:

我不确定您是否想要其中的噪音,因为它会混淆等高线图。

set.seed(42)
y_1 <- seq(-1, 1, 0.05)
y_2 <- seq(-1, 1, 0.05)
y_t <- function(y_1, y_2) 
  0.8 * y_1 - 0.5 * y_2 + (-1.6 * y_1 + y_2) * (1 + exp(-10 * y_1)) ^ (-1) +
    rnorm(length(y_1), mean = 0, sd = .2)

z <- outer(y_1, y_2, y_t)
filled.contour(y_1, y_2, z)

没有噪音:

【讨论】:

哇,这太完美了。它非常接近我正在寻找的东西。是的,看看误差项(白噪声),没有它看起来会好得多。谢谢你,我明白我做错了什么。我没有使用 function 术语正确定义函数。

以上是关于使用定义的函数时,轮廓图在 R 中失败的主要内容,如果未能解决你的问题,请参考以下文章

Matplotlib 直方图或 Seaborn 分布图的 bin 上没有轮廓

基于运输时间的热图/轮廓(反向等时轮廓)

OpenCV:arcLength 断言失败并出现 cv::Mat

R - 如何在特定轮廓内找到点

除了轴(在R中)之外,我看不到轮廓图的结果

在R中相交轮廓和多边形