免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4031 | 回复: 10
打印 上一主题 下一主题

抽样问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-09-08 23:53 |只看该作者 |倒序浏览
大侠们,我有一个有关bootstrap再抽样的问题想请教一下。

我现在有一组数,@array=(1,2,3..)有20个数,现在想用bootstrap重复1000次进行一个再抽样,产生一组新的20个数。
不知道该怎么写,

或者perl里有没有相关的模块是进行bootstrap再抽样的。

劳烦大家了

论坛徽章:
8
技术图书徽章
日期:2013-09-30 08:51:28技术图书徽章
日期:2013-12-11 09:26:39白羊座
日期:2013-12-27 15:27:13金牛座
日期:2014-01-06 09:13:05天蝎座
日期:2014-01-21 14:23:28酉鸡
日期:2014-05-09 16:51:12卯兔
日期:2014-08-11 16:49:1515-16赛季CBA联赛之八一
日期:2017-08-14 23:24:57
2 [报告]
发表于 2014-09-09 09:57 |只看该作者
本帖最后由 xiumu2280 于 2014-09-09 09:57 编辑
  1. Bootstrap(进化树)编辑
  2. 本词条缺少概述、信息栏、名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!
  3. 即自展值,是用来检验你所计算的进化树分支可信度的。简单地讲就是把序列的位点都重排,重排后的序列再用相同的办法构树,如果原来树的分枝在重排后构的树中也出现了,就给这个分枝打上一分,如果没出现就给0分,这样经过你给定的repetitions次(至少1000次)重排构树打分后,每个分枝就都得出分值,计算机会给你换算成bootstrap值。重排的序列有很多组合,值越小说明分枝的可信度越低,最好根据数据的情况选用不同的构树方法和模型。
复制代码
帮楼主补充下  百度百科


是这个意思?

论坛徽章:
0
3 [报告]
发表于 2014-09-09 12:51 |只看该作者
回复 2# xiumu2280

恩,意思是这样子的,但bootstrap是一个抽样方法,叫自助抽样方法。它也可以用于进化树的分析。
   

论坛徽章:
0
4 [报告]
发表于 2014-09-09 13:25 |只看该作者
回复 1# newfinder


你是要boostrap 1000次

那會產生1000個包含20個element的array

所以你的題目到底是要什麼?

论坛徽章:
0
5 [报告]
发表于 2014-09-09 13:27 |只看该作者
回复 4# afukada
是根据原来的20个数,进行1000次重复抽样,从而产生一个经验分布,然后再从这个分布中随机抽取20个数

   

论坛徽章:
0
6 [报告]
发表于 2014-09-09 13:37 |只看该作者
你的意思是:

假設有 @array=(1,2,3,4,5)

然後做bootstrap 5次

         位置  12345
可以得到 1. 23445
             2. 33412
             3. 23215
             4. 54112
             5. 14412

然後依據第一個位置上各數字的比例(1:1次, 2:2次, 3:1次, 4:0次, 5:1次)來抽在第一個位置上的數字

以此類推

是這樣嗎?

论坛徽章:
0
7 [报告]
发表于 2014-09-09 13:52 |只看该作者
回复 6# afukada
对,对,是的,是这样子的

   

论坛徽章:
0
8 [报告]
发表于 2014-09-09 15:47 |只看该作者
  1. @array=(1..20);
  2. $rtimes=1000;

  3. map{$list[$_][int(rand(scalar(@array)))]++}(0..$#array) for(0..$rtimes-1);
  4. @acclist=map{$i=$_;[map{eval(join("+",@{$list[$i]}[0..$_]))}(0..$#{$list[$i]})]}(0..$#array);
  5. @newarray=map{$array[$_]}map{$i=$_;$cannum=rand($rtimes);@sortlist=sort{$a<=>$b}(@{$acclist[$i]},$cannum);grep{$sortlist[$_]==$cannum}(0..$#sortlist)}(0..$#array);
复制代码
請自己好好想一下該怎麼做

论坛徽章:
0
9 [报告]
发表于 2014-09-09 16:15 |只看该作者
回复 8# afukada

好的,受教了大侠,以后好好学
   

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
10 [报告]
发表于 2014-09-09 23:04 |只看该作者
{:2_172:}
  1. #!/usr/bin/perl

  2. use 5.010;

  3. my @old = ( 14, 30, 26, 26, 34, 18, 19, 20, 29, 21, 29, 24, 24, 25 );

  4. sub bs(\@$) {
  5.     my ( $array, $resample ) = @_;
  6.     my $len = @$array;
  7.     my @resample = map {
  8.         my $sum;
  9.         $sum += $array->[ rand($len) ] for 1 .. $len;
  10.         int( $sum / $len )    # int or not int
  11.     } 1 .. $resample;
  12.     @resample[ map rand($resample), 1 .. $len ];
  13. }

  14. my @new = bs @old, 1000;
复制代码
old:
[ 14, 30, 26, 26, 34, 18, 19, 20, 29, 21, 29, 24, 24, 25 ]
new:
[ 24, 25, 27, 24, 24, 23, 23, 24, 25, 23, 26, 25, 24, 22 ]

回复 1# newfinder


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

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP