产生自举样品在T-SQL(Generating Bootstrapped Samples in T-

2019-10-20 18:55发布

有没有人对如何生成行的T-SQL自举样品的一些想法? 用类似的问题NEWID()RAND()则只是排序是你最终产生不更换随机样本。 引导应该由放回抽样来完成。

Answer 1:

这里有一个解决方案。 它首先在人口表中分配行标识符到每一行。

接着,1之间,人口,包括的行数的均匀随机整数,经由视图和RandMod()函数以使用RAND()的调用中产生,如在描述的问题3531450 。

这两个查询加盟,共同创造与更换的随机样本。

得到的,排序上NEWID()的大小为K <N自举样本并抓住顶部K行。

SELECT TOP K 
    key
    , NEWID()
FROM 
(
    SELECT CAST(1 + (SELECT COUNT(*) FROM table))*RandMod() AS int) AS rowchoice
    FROM table
) AS r
LEFT OUTER JOIN
(
    SELECT key
        , ROW_NUMBER() OVER(ORDER BY key) AS rowid
    FROM table
) AS t
ON rowchoice = rowid
ORDER BY 2


文章来源: Generating Bootstrapped Samples in T-SQL