楼主: xueqi0105
1222 2

[统计软件] 我已经用一个程序算出来了一个值,怎样把这个程序重复500次啊?求500个v1,c1 [推广有奖]

  • 0关注
  • 0粉丝

小学生

50%

还不是VIP/贵宾

-

威望
0
论坛币
7 个
通用积分
0
学术水平
1 点
热心指数
1 点
信用等级
0 点
经验
129 点
帖子
6
精华
0
在线时间
2 小时
注册时间
2014-11-12
最后登录
2022-5-2

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

n=50

x=rep(0,n)

i=1

while(i < n){

  x[i+1]=0.3*x+ rnorm(1)

  i=i+1

}

x

v=sort(x)[3]

fzero<-function(f,a,b,eps=1e-5)

{if(f(a)*f(b)>0) list(fail="finding root is fail!")

else {repeat{if(abs(b-a)<eps) break

t<-(a+b)/2

if(f(a)*f(t)<0) b<-t else a<-t}

list(root=(a+b)/2,fun=f(t))}}

f<-function(t) v *mean(exp(t*x))-mean(x*exp(t*x))

t=fzero(f,-5,0,1e-5)$root

t

y=rep(0,n)

for(i in 1:n){

y=exp(t*x)

i=i+1

}

y

mean(y)

log(mean(y))

L=rep(0,n)

pha=log(mean(y))

for(i in 1:n){

L=exp(-t*x+pha)

i=i+1

}

L

twof=function(f,a,b){

eps=1e-5

while(abs(b-a)>eps){

h=(a+b)/2

if(f(h)-0.05<0) a=h

else b=h

}

list(root=h,fun=f(h))}

g=function(h){

sum(ifelse(x<=h,L,0))/n

}

h=twof(g,-1.59735561,2.39419319)$root

v1=h

v1

alpha=0.05

z=rep(0,n)

for(i in 1:n){

if(-v1-x<=0)z=0

else z=(-v1-x)*L

i=i+1

}

c1=v1-(1/alpha)*mean(z)

c1

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Finding repeat while fzero Fail function repeat 程序

沙发
bookaccount 发表于 2014-11-13 22:52:34 |只看作者 |坛友微信交流群
500次不就是加个循环么

使用道具

藤椅
xueqi0105 发表于 2014-11-14 22:12:50 |只看作者 |坛友微信交流群
bookaccount 发表于 2014-11-13 22:52
500次不就是加个循环么
要怎么加呢?我今天加了出现错误:错误于-t : 一进列运算符的参数不对。

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加JingGuanBbs
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-18 22:02