我正在寻找一个简单的解决方案来在 python 中执行多因素方差分析。2 因素嵌套方差分析是我所追求的,SPM1D python 模块是做到这一点的一种方法,但是我遇到了一个问题。
http://www.spm1d.org/doc/Stats1D/anova.html#two-way-nested-anova
对于任何嵌套方法示例,从来没有打印任何 F 统计量或 p_values,我也找不到任何方法来打印它们或将它们发送到变量。
通过运行其中一个示例的动作,其中 B 嵌套在 A 中,并带有 Y 观察:
import numpy as np
from matplotlib import pyplot
import spm1d
dataset = spm1d.data.uv1d.anova2nested.SPM1D_ANOVA2NESTED_3x3()
Y,A,B = dataset.get_data()
#(1) Conduct ANOVA:
alpha = 0.05
FF = spm1d.stats.anova2nested(Y, A, B, equal_var=True)
FFi = FF.inference(0.05)
print( FFi )
#(2) Plot results:
pyplot.close('all')
FFi.plot(plot_threshold_label=True, plot_p_values=True)
pyplot.show()
提供的统计显着性的唯一指示是 h0 假设是否被拒绝。
> print( FFi )
SPM{F} inference list
design : ANOVA2nested
nEffects : 2
Effects:
A z=(1x101) array df=(2, 6) h0reject=True
B z=(1x101) array df=(6, 36) h0reject=False
实际上,这应该足够了。然而,在科学中,科学家们喜欢认为某事或多或少是重要的,这实际上是一种废话……意义是二元的。但他们就是这么想的,所以我必须配合才能发表作品。
示例代码生成了一个 matplotlib 图,这确实有 f 统计量和 p_values !
#(2) Plot results:
pyplot.close('all')
FFi.plot(plot_threshold_label=True, plot_p_values=True)
pyplot.show()
FFi.get_p_values
和
FFi.get_f_values
产生输出:
<bound method SPMFiList.get_p_values <kabammi edit -- or get_f_values> of SPM{F} inference list
design : ANOVA2nested
nEffects : 2
Effects:
A z=(1x101) array df=(2, 6) h0reject=True
B z=(1x101) array df=(6, 36) h0reject=False
所以我不知道该怎么办。显然 FFi.plot 类可以访问 p_values(使用 plot_p_values)但 FFi.get_p_values 不能!!?任何人都可以伸出援助之手吗?
干杯,K