gpt4 book ai didi

R直方图打破错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:44:30 26 4
gpt4 key购买 nike

我必须为我的论文准备一个算法来交叉检查一个理论结果,即 N 周期的二项式模型收敛到 N\to\infty 的对数正态分布。对于那些不熟悉这个概念的人,我必须创建一个算法,该算法采用初始值并将其与向上乘数和向下乘数相乘,并继续为 N 步的每个值这样做。该算法应返回一个向量,其元素的形式为 StarterValueu^id^{N-i} i=0,\dots,N我提出的简单算法是

rata<-function(N,r,u,d,S){

length(x)<-N
for(i in 0:N){
x[i]<-S*u^{i}*d^{N-i}
}
return(x)
}

N 是周期数,其余只是不重要的值(u 代表向上 d 代表向下等)为了提取我的结果,我需要制作生成的向量对数的直方图以证明它们是正态分布的。然而,对于 N=100000(我需要大量步骤来证明收敛),当我键入 hist(x) 时,我得到了 error :(invalid number of breaks)谁能帮忙??提前致谢。一个例子

 taf<-rata(100000,1,1.1,0.9,1)
taf1<-log(taf)
hist(taf1,xlim=c(-400,400))

最佳答案

首先我修复你的函数:

rata<-function(N,r,u,d,S){
x <- numeric(N+1)
for(i in 0:N){
x[i]<-S*u^{i}*d^{N-i}
}
return(x)
}

或者依赖向量化:

rata<-function(N,r,u,d,S){
x<-S*u^{0:N}*d^{N-(0:N)}
return(x)
}

taf<-rata(100000,1,1.1,0.9,1)

查看结果,我们注意到它包含 NaN 值:

taf[7440 + 7:8]
#[1] 0 NaN

发生了什么事?显然乘法变成了 NaN:

1.1^7448*0.9^(1e5-7448)
#[1] NaN

1.1^7448
#[1] Inf

0.9^(1e5-7448)
#[1] 0

Inf * 0
#[1] NaN

为什么会出现 Inf 值?嗯,由于双重溢出(阅读 help("double")):

1.1^(7440 + 7:8)
#[1] 1.783719e+308 Inf

当乘数接近 0 时,您会遇到类似的浮点精度问题(阅读 help(".Machine"))。

您可能需要使用任意精度数字。

关于R直方图打破错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32139579/

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