如何在optim函数和for循环中为R stat重复$par
我只希望$par重复5次。我仍然可以运行我的代码,但我有如下警告消息: 结果[i]=m1: 要替换的项目数不是替换长度的倍数如何在optim函数和for循环中为R stat重复$par,r,R,我只希望$par重复5次。我仍然可以运行我的代码,但我有如下警告消息: 结果[i]=m1: 要替换的项目数不是替换长度的倍数 library(evd) results=0 for(i in 1:5) { trendgev=function(v,z) { beta0=v[1] beta1=v[2] mu=v[1]+v[2]*t sig=v[3] xi=v[4] if (min(1+xi*(z-mu)/sig) <=0) return (10^10) if (sig<0) return(
library(evd)
results=0
for(i in 1:5)
{
trendgev=function(v,z)
{
beta0=v[1]
beta1=v[2]
mu=v[1]+v[2]*t
sig=v[3]
xi=v[4]
if (min(1+xi*(z-mu)/sig) <=0) return (10^10)
if (sig<0) return(10^10)
a=(1+xi*(z-mu))/sig
b=(-1/xi)
f=(1/sig)*(a^(b-1))*exp(-a^b)
ff=log(f)
ans=-sum(ff)
return(ans)
}
t=c(1:1000)
beta0=1
beta1=0.4
z=rgev(50,0,1,1)
zz=z+beta1*t
starts=c(0.1, -0.9,1.1,0.5)
m1=optim(par=starts, fn=trendgev, z=zz) ; m1
results[i]=m1
print(results[i])
}
print(m1)
我可以得到如下输出(仅重复并提及“票面价值”)吗
请在此示例中提供所需的结果。类似于期望的结果:xy…同样,问题中给出的代码是不完整的。将其粘贴到R中后,会留下a+,要求更多输入。请修复。这是否意味着我的编码不正确?但为什么我仍然有输出?
[[1]]
[1] 0.07303119 0.39996344 1.11404626 0.93861174
[[1]]
[1] -0.01384496 0.39998626 1.14267411 1.05170904
[[1]]
[1] -1.0078745 0.4004017 1.0993075 4.3916078
[[1]]
[1] 0.06992641 0.39997072 1.05224910 1.09107480
Warning messages:
1: In results[i] = m1 :
number of items to replace is not a multiple of replacement length
2: In results[i] = m1 :
number of items to replace is not a multiple of replacement length
3: In results[i] = m1 :
number of items to replace is not a multiple of replacement length
4: In results[i] = m1 :
number of items to replace is not a multiple of replacement length
5: In results[i] = m1 :
number of items to replace is not a multiple of replacement length
> print(m1)
$par
[1] 0.06992641 0.39997072 1.05224910 1.09107480
$value
[1] 2080.907
$counts
function gradient
501 NA
$convergence
[1] 1
$message
NULL
[[1]]
[1] -0.2053160 0.4000491 2.3253354 1.3603900
[[1]]
[1] 0.07303119 0.39996344 1.11404626 0.93861174
[[1]]
[1] -0.01384496 0.39998626 1.14267411 1.05170904
[[1]]
[1] -1.0078745 0.4004017 1.0993075 4.3916078
[[1]]
[1] 0.06992641 0.39997072 1.05224910 1.09107480