取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
The Discovery Summit 2025 Call for Content is open! Submit an abstract today to present at our premier analytics conference.
选择语言 隐藏翻译栏
查看原发布的话题

如何从数据集中选择配额样本

Samira
Level III

大家好

我正在开展一项研究,需要研究代表性样本。我已经收集了数据,但我需要选择一个满足代表性标准的子集,即 4:样本应满足以下配额:
-
性别方面:男性50%,女性50%。
-
年龄结构:1/3为18至30岁,1/3为31至50岁,1/3为51岁以上。
-
按家庭收入水平划分:1/3 来自低收入,1/3 来自中等收入,1/3 来自高收入。

该市五个区域(北区、南区、中区、东区和西区)各占研究人口的 1/5

我如何创建这个示例?

我正在使用 JMP pro 17

这篇帖子最初是用 English (US) 书写的,已做计算机翻译处理。当您回复时,文字也会被翻译成 English (US)。

20 条回复20
hogi
Level XII

回复:如何从数据集中选择配额样本

听起来像是教科书上的练习——是否有一章给出解决方案?

这篇帖子最初是用 English (US) 书写的,已做计算机翻译处理。当您回复时,文字也会被翻译成 English (US)。

Samira
Level III

回复:如何从数据集中选择配额样本


我实际上正在与一位同事讨论这个问题,用这种配额抽样技术开始一个项目的数据分析。

这篇帖子最初是用 English (US) 书写的,已做计算机翻译处理。当您回复时,文字也会被翻译成 English (US)。

txnelson
Super User

回复:如何从数据集中选择配额样本

这是一个复杂的问题。您从多大的数据表中提取数据。您提取的样本量有多大?您的 4 列有 90 种组合。您和您的同事是否想出了如何解决这个问题的主意?

这篇帖子最初是用 English (US) 书写的,已做计算机翻译处理。当您回复时,文字也会被翻译成 English (US)。

hogi
Level XII

回复:如何从数据集中选择配额样本

而且您不想根据分布的实际份额来选择样本数据,而是根据人为的分数来选择样本数据?

女性、> 51 岁、高收入、北方人怎么样?
它应该是 1/2 * 1/3 * 1/3 * 1/5 吗?(*)
这很容易计算 - 但可能太严格了 - 并且不是有意的?
试想一下原始分布中没有女性、> 51 岁、高收入、北部的情况。

另一方面:如果只需满足 1/2、1/3、1/3 和 1/5,则可以使用 0 个女性、> 51 岁、高收入、北方的样本数据来构成极端情况。

这篇帖子最初是用 English (US) 书写的,已做计算机翻译处理。当您回复时,文字也会被翻译成 English (US)。

Samira
Level III

回复:如何从数据集中选择配额样本

谢谢你的回复

这个想法是针对整个城市人口的代表性样本进行研究

这篇帖子最初是用 English (US) 书写的,已做计算机翻译处理。当您回复时,文字也会被翻译成 English (US)。

dlehman1
Level V

回复:如何从数据集中选择配额样本

这并不优雅,我甚至不确定它是否会起作用,但它可能会起作用。您可以为每个标准创建 0,1 列,然后将它们组合成单个 0,1 列,其中 1 表示所有单个标准列都 =1。这将给出所需的子集。并且,如果您想从这些行中随机选择,只需使用由该 0,1 列分层的验证列。正如我所说,这并不优雅,但可能会起作用。

这篇帖子最初是用 English (US) 书写的,已做计算机翻译处理。当您回复时,文字也会被翻译成 English (US)。

hogi
Level XII

回复:如何从数据集中选择配额样本

数据表-理想情况:

New Table( "quota_samples",
	Add Rows( 100000 ),
	Compress File When Saved( 1 ),
	New Column( "gender",
		Character,
		Formula( Match( Floor( Random Uniform() * 2 ), 0, "M", "F" ) ),
		Compact(),
		Set Selected
	),
	New Column( "income",
		Character,
		Formula(
			Match( Floor( Random Uniform() * 3 ), 0, "low", 1, "medium", "high" )
		),
		Compact()
	),
	New Column( "region",
		Character,
		Formula(
			Match( Floor( Random Uniform() * 5 ),
				0, "N",
				1, "S",
				2, "W",
				3, "E",
				"C"
			)
		)
	),
	New Column( "age",
		Character,
		Formula(
			Match( Floor( Random Uniform() * 3 ), 0, "young", 1, "medium", "old" )
		)
	)
)

这篇帖子最初是用 English (US) 书写的,已做计算机翻译处理。当您回复时,文字也会被翻译成 English (US)。

hogi
Level XII

回复:如何从数据集中选择配额样本

对于这样一个理想的表格,(如果您的数据集的概率适合您想要的分数),您可以选择随机样本 - 每个变体的随机样本或每个变体的特定数量的样本 - 或所有这三个的组合......
您将始终获得具有所需分数的子群(1/2、1/3、1/3 和 1/5)

undefined

// random sampling : full data set
if(not(current data table() << has column ("cum_prob")),New Column( "cum_prob",
	Formula(
		Col Rank( random uniform()) / (
		Col Number( 1 ))
	)
));

// random sampling : per variant
if(not(current data table() << has column ("cum_prob_indiv")),New Column( "cum_prob_indiv",
	Formula(
	tmp = random uniform(); // tmp =1; // **)
		Col Rank( tmp, :gender, :income, :region, :age ) / (
		Col Number( tmp, :gender, :income, :region, :age ))
	)
));

// force ratios: 1/2, 1/3, 1/3, 1/5
if(not(current data table() << has column ("rank_indiv")),
New Column( "rank_indiv",
	Formula( Col Rank( random uniform(), :gender, :income, :region, :age ) )
));

Graph Builder(
	Size( 518, 448 ),
	Show Control Panel( 0 ),
	Graph Spacing( 4 ),
	Variables( X( :gender ), X( :income ), X( :region ), X( :age ) ),
	Elements( Position( 1, 1 ), Bar( X,  Summary Statistic( "N" ) ) ),
	Elements( Position( 2, 1 ), Bar( X,  Summary Statistic( "N" ) ) ),
	Elements( Position( 3, 1 ), Bar( X,  Summary Statistic( "N" ) ) ),
	Elements( Position( 4, 1 ), Bar( X,  Summary Statistic( "N" ) ) ),
	Local Data Filter(        Title( "how many samples do you want ? " ),
		Add Filter(
			columns( :cum_prob, :cum_prob_indiv, :rank_indiv )
		)
	)
);

**)而不是使用带有随机 uniform() 的CDF,可以随机化行顺序并使用“1”的 CDF。

这篇帖子最初是用 English (US) 书写的,已做计算机翻译处理。当您回复时,文字也会被翻译成 English (US)。

hogi
Level XII

回复:如何从数据集中选择配额样本

最后一个选项也适用于不太系统化的表格,比如下面的表格。
唯一的限制是,如果特定变体的样本很少,则可选择的样本数量就会有明显的限制。

它遵循简单的规则:
如果对于其中一个变体(A)只有 N 个样本,则取这些样本并从其他变体中挑选相同数量的随机样本。
实际上,对于变体“A”,这不是采样。

因此,也许只选择 M << N 个样本 - 从所有变体中随机选择。
您可以采用相同的(JSL)逻辑 - 只需将 N 调整为较低的值。



variants = {};
For Each( {gender}, {"F", "M"},
	For Each( {age}, {"young", "medium", "old"},
		For Each( {income}, {"low", "medium", "high"},
			For Each( {region}, {"N", "S", "E", "W", "C"},
				Insert Into( variants, Concat Items( {gender, age, income, region} ) )
			)
		)
	)
);

	Eval(
		Eval Expr(
		new table(
	"unfair",
	add rows( 100000 ), 
	

			New Column( "variant",Character,
				formula(
					variants = As constant(Expr( variants ));
					Try(
						variants[Floor( Random Normal( 45, 30 ) )],
						"F young medium C"
					);
				)
			),
			
			New column ("gender",Character, formula(Word(1,:variant))),
			New column ("age",Character, formula(Word(2,:variant))),
			New column ("income",Character, formula(Word(3,:variant))),
			New column ("region",Character, formula(Word(4,:variant))),
		)
	)
);

这篇帖子最初是用 English (US) 书写的,已做计算机翻译处理。当您回复时,文字也会被翻译成 English (US)。