gpt4 book ai didi

r - 如何绘制对数似然函数

转载 作者:行者123 更新时间:2023-12-01 09:27:00 25 4
gpt4 key购买 nike

我想绘制 -pi 和 pi 之间的对数似然函数。

对数似然函数

llh <- function (teta,x) {

sum(log((1-cos(x-teta))/(2*pi)))
}

x=c(3.91,4.85,2.28,4.06,3.70,4.04,5.46,3.53,2.28,1.96,2.53,3.88,2.22,3.47,4.82,2.46,2.99,2.54,0.52,2.50)

teta=seq(-4,4, by=0.01)

y = llh(teta,x)

plot(teta, llh(teta,x), pch=16)

绘制函数失败。以下是错误消息:

Warning message:
In x - teta :
longer object length is not a multiple of shorter object length
>
> plot(teta, llh(teta,x), pch=16)
Error in xy.coords(x, y, xlabel, ylabel, log) :
'x' and 'y' lengths differ
In addition: Warning message:
In x - teta :
longer object length is not a multiple of shorter object length

最佳答案

在编写时,您的函数将适用于 teta 的一个值和多个 x 值,或 teta 的多个值和一个 x 值。否则你会得到一个不正确的值或警告。

示例:llh 用于 teta=1teta=2:

> llh(1,x)
[1] -34.88704>
> llh(2,x)
[1] -60.00497

不等于:

> llh(c(1,2),x)
[1] -49.50943

如果你尝试做三个:

> llh(c(1,2,3),x)
[1] -49.52109
Warning message:
In x - teta :
longer object length is not a multiple of shorter object length

这基本上来自:

> cos(x-c(1,2,3))
[...]
Warning message:
In x - c(1, 2, 3) :
longer object length is not a multiple of shorter object length

因为 R 试图从长度为 20 的向量中减去长度为 3 的向量。它在长度为 20 的向量上重复长度为 3 的向量,直到它完成六次,然后它只剩下两个元素。嗯...认为 R,我会这样做,但它看起来不对,所以这里有一个警告。

您可以重写函数以处理两个参数的向量,或者通过包装函数来向量化函数。

> vllh = Vectorize(llh,"teta")
> vllh(c(1,2,3),x)
[1] -34.88704 -60.00497 -67.30765
> plot(teta, vllh(teta,x))

ll plot

关于r - 如何绘制对数似然函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21671515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com