楼主: yhzhong
1311 2

[问答] 程序报错 [推广有奖]

  • 2关注
  • 1粉丝

博士生

86%

还不是VIP/贵宾

-

威望
0
论坛币
20 个
通用积分
0.3700
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
5783 点
帖子
75
精华
0
在线时间
566 小时
注册时间
2009-11-9
最后登录
2025-12-14

楼主
yhzhong 发表于 2016-1-7 14:05:51 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
set.seed(2016-1-7)
alpha<-0.9;
theta<-3.0;
N<-300;
lamda<-0.8;
T<-10;
r<-0.1;
sum<-matrix(0,N,1);  
for (i in 1:N){
    n<-rpois(1,lamda*T);
    U<-runif(n,0,1);
    Tau<-sort(T*U);
    u<-runif(n,0,1);
    X<-((1-u)^(-1/alpha)-1)*theta;
    sx<-0;
    for (j in 1:n){
      sx<-sx+X[j]*exp(-r*Tau[j])
      }
    sum[i]<-sx
}


当N=300时程序运行没问题,N=400时就会报错 Error in sum[i] <- sx : 更换参数长度为零
二维码

扫码加我 拉你入群

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

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

关键词:Alpha seed Pha see Set 程序

沙发
jiangbeilu 学生认证  发表于 2016-1-7 14:41:19
提示:尽量不要用sum来作变量名,因为sum是一个函数,求和的。
替代了你原来中的循环,还有原来的sum我用fresut来表示,循环变成了sapply的一个函数。具体代码如下:300和400运行都没有问题。
  1. set.seed(2016-1-7)
  2. alpha<-0.9;
  3. theta<-3.0;
  4. # N<-300;
  5. N=400
  6. lamda<-0.8;
  7. T<-10;
  8. r<-0.1;
  9. fresult <- rep(0,N)
  10. for (i in 1:N){
  11.     n<-rpois(1,lamda*T);
  12.     U<-runif(n,0,1);
  13.     Tau<-sort(T*U);
  14.     u<-runif(n,0,1);
  15.     X<-((1-u)^(-1/alpha)-1)*theta;
  16.     sx=sum(sapply(1:n,function(zz) X[zz]*exp(-r*Tau[zz])))
  17.     fresult[i]<-sx
  18. }
  19. fresult
复制代码

已有 1 人评分热心指数 收起 理由
ryoeng + 1 热心帮助其他会员

总评分: 热心指数 + 1   查看全部评分

藤椅
yhzhong 发表于 2016-1-7 15:19:29
谢谢!N=400时还是报错,Error in sum(sapply(1:n, function(zz) X[zz] * exp(-r * Tau[zz]))) :
  'type'(list)参数不对。另外,为什么后面的结果都是0,而N=300时不会出现这种情况?

[296] 1.715599e+01 1.844760e+02 2.849128e+01 4.407274e+01 2.674957e+02
[301] 2.517262e+01 3.877120e+01 5.086761e+01 2.799154e+01 6.866180e+01
[306] 1.545210e+02 1.510225e+02 4.250927e+00 1.151784e+02 8.829865e+01
[311] 3.042271e+02 2.094030e+02 5.243597e+01 1.029788e+02 1.597304e+01
[316] 3.147163e+01 2.136466e+01 2.570007e+01 2.521057e+01 5.511813e+01
[321] 8.940982e+00 2.435143e+01 9.874882e+01 5.694553e+01 3.452902e+01
[326] 1.073983e+01 3.924277e+01 6.431995e+01 2.860025e+01 2.418842e+01
[331] 6.632322e+01 4.796219e+01 7.033704e+01 5.337526e+01 2.179925e+01
[336] 7.760121e+01 4.155280e+01 9.086832e+01 2.431554e+01 1.305181e+02
[341] 3.319084e+01 5.662898e+01 2.284593e+02 3.355941e+01 6.498167e+00
[346] 4.916112e+01 1.858761e+01 3.889017e+01 2.981668e+02 9.048130e+00
[351] 5.875322e+01 1.799199e+03 8.686442e+00 5.814813e+01 1.996969e+01
[356] 1.855769e+01 1.497204e+01 1.091483e+01 4.314209e+01 1.364585e+01
[361] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
[366] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
[371] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
[376] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
[381] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
[386] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
[391] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
[396] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-16 23:22