楼主: axiaohuohu
4793 6

[问答] [求解]请大家帮忙看看这个boot函数程序。 [推广有奖]

  • 0关注
  • 0粉丝

高中生

22%

还不是VIP/贵宾

-

威望
0
论坛币
10 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
211 点
帖子
8
精华
0
在线时间
43 小时
注册时间
2011-8-1
最后登录
2023-8-19

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
第一次用boot函数,还不太懂。现在想要计算如下Diff函数的频数分布。程序总是报错,新手改不好。。。
  1. b<-data.frame(a$profit)

  2. library(boot)  
  3. beta<-function(data,indices){  
  4. d<-data[indices,]
  5. Max<-0;
  6. Diff<-0;
  7. SUM<-0;
  8. Diff=matrix(0,1,839);
  9. Max=matrix(0,1,840);
  10. SUM=matrix(0,1,839);

  11. for(i in 1:838){
  12.                   SUM[1,i+1]=SUM[1,i]+data[i+1,1]
  13.                   }

  14.   for(j in 1:839){
  15.                    if(SUM[1,j]>Max[1,j])
  16.                    {Diff[1,j]<-0
  17.                    Max[1,j+1]<-SUM[1,j]
  18.                    } else {
  19.                    Diff[1,j]<-Max[1,j]-SUM[1,j]
  20.                    Max[1,j+1]<-Max[1,j]
  21.                    }
  22.                   }
  23.             
  24. return(density(d))  
  25. }  

  26. result<-boot(data=b,statistic=beta,R=1000)  
  27. boot.ci(result);
复制代码




二维码

扫码加我 拉你入群

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

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

关键词:boot Diff DIF IFF 程序 function library return matrix

沙发
gratee 发表于 2014-8-2 16:20:16 |只看作者 |坛友微信交流群
不懂,看看

使用道具

藤椅
mymei 发表于 2014-8-4 15:42:58 |只看作者 |坛友微信交流群
不知道楼主这个函数的目的是什么。
看代码的话第14行data似乎应该改成d。
最后返回值是density(d),函数本身用不改变d,这样的话其实第6行到第25行都是没用的。

使用道具

板凳
axiaohuohu 发表于 2014-8-5 10:36:35 |只看作者 |坛友微信交流群
mymei 发表于 2014-8-4 15:42
不知道楼主这个函数的目的是什么。
看代码的话第14行data似乎应该改成d。
最后返回值是density(d),函数本 ...
额。复制错了,应该是
b<-data.frame(a$profit)

library(boot)  
beta<-function(data,indices){  
d<-data[indices,]
Max<-0;
Diff<-0;
SUM<-0;
Diff=matrix(0,1,839);
Max=matrix(0,1,840);
SUM=matrix(0,1,839);

for(i in 1:838){
                  SUM[1,i+1]=SUM[1,i]+d[i+1,1]
                  }

  for(j in 1:839){
                   if(SUM[1,j]>Max[1,j])
                   {Diff[1,j]<-0
                   Max[1,j+1]<-SUM[1,j]
                   } else {
                   Diff[1,j]<-Max[1,j]-SUM[1,j]
                   Max[1,j+1]<-Max[1,j]
                   }
                  }
            
return(density(Diff))  
}  

result<-boot(data=b,statistic=beta,R=1000)  
boot.ci(result);

使用道具

报纸
mymei 发表于 2014-8-5 19:31:42 |只看作者 |坛友微信交流群
axiaohuohu 发表于 2014-8-5 10:36
额。复制错了,应该是
b
还是不明白你的目的。是否能说得更清楚点?
boot函数是对某个统计量进行bootstrap,但beta函数返回的不是统计量,而是个list,因此会出错。
参看帮助文档:
statistic: A function which when applied to data returns a vector containing the statistic(s) of interest.

使用道具

地板
axiaohuohu 发表于 2014-8-6 10:45:34 |只看作者 |坛友微信交流群
mymei 发表于 2014-8-5 19:31
还是不明白你的目的。是否能说得更清楚点?
boot函数是对某个统计量进行bootstrap,但beta函数返回的不是 ...
想要得到定义的Diff数据的频率分布。所以这里beta函数只能返回统计量,不能是频率分布的list是吗?这里出错了是吧?

使用道具

7
mymei 发表于 2014-8-6 10:49:44 |只看作者 |坛友微信交流群
axiaohuohu 发表于 2014-8-6 10:45
想要得到定义的Diff数据的频率分布。所以这里beta函数只能返回统计量,不能是频率分布的list是吗 ...
对的。

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

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

GMT+8, 2024-4-28 18:51