skbio.stats.power.paired_subsamples

skbio.stats.power.paired_subsamples(meta, cat, control_cats, order=None, strict_match=True)[源代码]

绘制样本列表 cat 与之匹配 control_cats

状态:从0.4.0开始实验。

此功能旨在根据元数据类别提供受控样本。例如,一个人可以在测量运动频率的同时控制年龄、性别、教育水平和饮食类型。

参数:
  • meta (pandas.DataFrame) -- 与样本关联的元数据。

  • cat (str, list) -- 用于比较的元数据类别(或类别列表)。

  • control_cats (list) -- 要用作控件的元数据类别。例如,如果您想改变年龄 (cat =“年龄”),您可能希望控制性别和健康状况(即 control_cats = ["SEX", "HEALTHY"] )

  • order (list, optional) -- 类别中组的顺序。这可用于限制选定的组。例如,如果有一个类别包含A组、B组和C组,而您只想查看A和B, order 将设置为 ['A', 'B'] 。

  • strict_match (bool, optional) -- 这决定了如何使用将数据分组 control_cats 。如果其中的样本 meta 具有未定义的值 (NaN )中的任何一列 control_cats ,则该样本将不被视为具有匹配项,并且在以下情况下将被忽略 strict_match 是真的。如果 strict_match 为FALSE,则 control_cats 可以被视为匹配。

返回:

ids --一组符合条件的ID。这些不是按以下方式分组的 cat 。空数组表示没有满足要求的示例ID。

返回类型:

array

示例

如果我们有一组随机个体的映射文件,这些个体查看住房、性别、年龄和抗生素使用情况。

>>> import pandas as pd
>>> import numpy as np
>>> meta = {'SW': {'HOUSING': '2', 'SEX': 'M', 'AGE': np.nan, 'ABX': 'Y'},
...         'TS': {'HOUSING': '2', 'SEX': 'M', 'AGE': '40s', 'ABX': 'Y'},
...         'CB': {'HOUSING': '3', 'SEX': 'M', 'AGE': '40s', 'ABX': 'Y'},
...         'BB': {'HOUSING': '1', 'SEX': 'M', 'AGE': '40s', 'ABX': 'Y'}}
>>> meta = pd.DataFrame.from_dict(meta, orient="index")
>>> meta 
   ABX HOUSING  AGE SEX
BB   Y       1  40s   M
CB   Y       3  40s   M
SW   Y       2  NaN   M
TS   Y       2  40s   M

我们可能想要改变一个人的住房状况,同时保持他们的年龄、性别和抗生素使用不变,这样我们就可以估计对住房的影响大小,然后将其与其他变量的影响进行比较。

>>> from skbio.stats.power import paired_subsamples
>>> ids = paired_subsamples(meta, 'HOUSING', ['SEX', 'AGE', 'ABX'])
>>> np.hstack(ids) 
array(['BB', 'TS', 'CB']...)

因此,对于这组数据,我们可以根据年龄、性别和抗生素使用情况匹配TS、CB和BB。软件在两个组中都无法匹配,因为 strict_match 是真的,并且此样本缺少年龄数据。