使用定义的函数时,轮廓图在 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 上没有轮廓