梯度分析 (skbio.stats.gradient

本模块提供执行梯度分析的功能。本模块包含的算法主要允许对时间序列数据进行波动性分析,但它们可以应用于任何包含梯度的数据。

Classes

GradientANOVA(coords, prop_expl, metadata_map)

轨迹算法的基类

AverageGradientANOVA(coords, prop_expl, ...)

使用RMS平均算法进行轨迹分析

TrajectoryGradientANOVA(coords, prop_expl, ...)

使用RMS轨迹算法进行轨迹分析

FirstDifferenceGradientANOVA(coords, ...[, ...])

使用第一差分算法进行轨迹分析

WindowDifferenceGradientANOVA(coords, ...)

使用改进的第一差分算法进行轨迹分析

GroupResults(name, trajectory, mean, info, ...)

存储一组元数据类别的轨迹结果

CategoryResults(category, probability, ...)

存储元数据类别的轨迹结果

GradientANOVAResults(algorithm, weighted, ...)

存储轨迹结果

示例

假设我们有以下坐标:

>>> import numpy as np
>>> import pandas as pd
>>> from skbio.stats.gradient import AverageGradientANOVA
>>> coord_data = {'PC.354': np.array([0.2761, -0.0341, 0.0633, 0.1004]),
...               'PC.355': np.array([0.2364, 0.2186, -0.0301, -0.0225]),
...               'PC.356': np.array([0.2208, 0.0874, -0.3519, -0.0031]),
...               'PC.607': np.array([-0.1055, -0.4140, -0.15, -0.116]),
...               'PC.634': np.array([-0.3716, 0.1154, 0.0721, 0.0898])}
>>> coords = pd.DataFrame.from_dict(coord_data, orient='index')

以下元数据映射:

>>> metadata_map = {'PC.354': {'Treatment': 'Control', 'Weight': '60'},
...            'PC.355': {'Treatment': 'Control', 'Weight': '55'},
...            'PC.356': {'Treatment': 'Control', 'Weight': '50'},
...            'PC.607': {'Treatment': 'Fast', 'Weight': '65'},
...            'PC.634': {'Treatment': 'Fast', 'Weight': '68'}}
>>> metadata_map = pd.DataFrame.from_dict(metadata_map, orient='index')

以及下面的数组,其中说明了每个坐标的比例:

>>> prop_expl = np.array([25.6216, 15.7715, 14.1215, 11.6913, 9.8304])

然后计算这些数据的平均轨迹:

>>> av = AverageGradientANOVA(coords, prop_expl, metadata_map,
...                     trajectory_categories=['Treatment'],
...                     sort_category='Weight')
>>> trajectory_results = av.get_trajectories()

检查用于计算轨迹结果的算法:

>>> print(trajectory_results.algorithm)
avg

检查是否加权数据:

>>> print(trajectory_results.weighted)
False

检查其中一个类别的结果:

>>> print(trajectory_results.categories[0].category)
Treatment
>>> print(trajectory_results.categories[0].probability)
0.0118478282382

检查其中一组类别的结果:

>>> print(trajectory_results.categories[0].groups[0].name)
Control
>>> print(trajectory_results.categories[0].groups[0].trajectory)
[ 3.52199973  2.29597001  3.20309816]
>>> print(trajectory_results.categories[0].groups[0].info)
{'avg': 3.007022633956606}