随机抽样替换是否有可能做到这一点?它似乎没有出现表->子集功能。
我知道您可以在JMP Pro平台的各个部分中获得Bootstrap估计,但是我特别想知道有关生成数据表的信息。
谢谢!
回复:随机抽样与替换嗨,温迪,
是的,请参见下面的脚本。它需要一个4行表,并抽取10个样本进行替换。需要使用AsList()函数来完成此操作,否则,很不幸会出现错误。
Names Default To Here( 1 );
dt = astable((1::4)`);
nSamples = 10;
dt2 = dt << subset( rows( As List( J( nSamples, 1, Random Integer( 1, N Row( dt ) ) ) ) ) );
回复:随机抽样与替换嗨,温迪,您可以从数据表中执行此操作。右键单击列标题,选择“新建公式列”,“随机”,然后选择“替换样品”。
回复:随机抽样与替换嗨,温迪,我应该澄清一下。
只要用户想要一个大小小于或等于表中行数的样本,Mia提到的“新公式列”技术就可以使用。如果您需要更大的样本,我不知道有一种方法可以通过点击来做到这一点(有效地是,将表与其自身连接起来,直到其大小足够大,效率低下但可以使用)。也许其他人会用一种方法做到这一点。
该脚本适用于任何样本大小,但是每当请求的行数超过原始表中的行数时,都需要在行矩阵周围包裹As List()函数。
回复:随机抽样与替换谢谢你俩!是的-我认为客户可能需要超采样,因此了解其他人如何做到这一点会有所帮助。
另一个相关的问题是关于分层。 是否可以通过替换重新采样以确保另一个属性的分布?
回复:随机抽样与替换你好 @wendytseng ,
有一个带替换外接程序的样本可以执行过采样,但不能针对另一个变量进行分层。
@朱莲
回复:随机抽样与替换嗨,温迪,
不确定您的客户是否愿意编写脚本,但是可以轻松扩展该想法以对分类变量进行分层。下面的简短脚本针对“汽车物理数据”数据集和“类型”列执行此操作。请求1000行,其中原始表有116行。请注意,由于将每个类别的样本大小四舍五入到最接近的整数,因此返回了1002行。
这不是最快的方法,但是相对容易理解。如果您通过这种方式与客户交谈,也许您的客户将能够编写他们想要的脚本?
干杯,
布雷迪
Names Default To Here( 1 );
dt = Open( "$Sample_Data\Car Physical Data.jmp" );
stratCol = Column( dt, "Type" );
nSample = 1000;
//determine the (over)sampling ratio
sRatio = nSample / N Row( dt );
//get a list of the stratification column's values
categories = ((Associative Array( stratCol << get values ) << get keys));
// initialize the master row matrix
rowMat = [];
//For each category
For( i = 1, i <= N Items( categories ), i++,
// Get the table rows belonging to this category
catRows = dt << getrowswhere( dt:stratCol == categories[i] );
// Determine how many rows belong to this category
catN = N Items( catRows );
// Oversample these row values by the specified ratio, and append them to the master row list
rowMat |/= catRows[As List( J( Ceiling( catN * sRatio ), 1, Random Integer( 1, catN ) ) )];
);
// Subset the data table, using the final master row list
dt << subset( rows( As List( rowMat ) ) );
回复:随机抽样与替换对于过采样,还有以下加载项: 分层数据分区(带有平衡选项)加载项
尚未在JMP 15中进行测试...
回复:随机抽样与替换那就是我们为UC Denver教授指定的那个,对吗?我查看了它的代码,并且想不出一种方法来使其工作,而又不涉及Train / Test / Validate。