梯度分析 (skbio.stats.gradient
)¶
本模块提供执行梯度分析的功能。本模块包含的算法主要允许对时间序列数据进行波动性分析,但它们可以应用于任何包含梯度的数据。
Classes¶
|
轨迹算法的基类 |
|
使用RMS平均算法进行轨迹分析 |
|
使用RMS轨迹算法进行轨迹分析 |
|
使用第一差分算法进行轨迹分析 |
|
使用改进的第一差分算法进行轨迹分析 |
|
存储一组元数据类别的轨迹结果 |
|
存储元数据类别的轨迹结果 |
|
存储轨迹结果 |
示例
假设我们有以下坐标:
>>> 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}