0

我正在使用 python 3.6 对数据集运行一些统计测试。我想要完成的是在数据集和趋势线之间运行 t 检验以确定统计显着性。我和使用 scipy 来做到这一点但是我不确定我应该在测试中包含哪些变量以获得我需要的结果。

到目前为止,这是我的代码:

import numpy as np
import matplotlib.pyplot as plt
from scipy import stats

p = np.load('data.npy')

#0=1901
start=0
end=100

plt.figure()
plt.plot(a,annualmean,  '-')
slope, intercept, r_value, p_value, std_err = stats.linregress(a,annualmean)
plt.plot(a,intercept+slope*a, 'r')

annualmean=[]
for n in range(start,end):
    annualmean.append(np.nanmean(p[n]))

#Trendline Plots
a=range(start,end)
year1 = 1901

print(stats.ttest_ind(annualmean,a))

现在代码正在运行,没有错误消息,但是我得到了一个非常小的 p 值,我认为它是不正确的。如果有人知道我应该将哪些变量写入 t 检验,那将非常有帮助。谢谢!

4

2 回答 2

1

我没有评论的声誉,但根据您的代码,您正在进行 t 检验,比较年度平均数据和 0-100 的数组之间的平均值。scipy.stats.ttest 需要两个大小相等的数组,您要比较它们的平均值。

根据文档

scipy.stats.ttest_ind(a, b, axis=0, equal_var=True)[source]

Parameters: 
a, b : array_like
The arrays must have the same shape, except in the dimension corresponding to axis (the first, by default).

附加说明,在趋势线和原始数据之间进行 t 检验没有意义,但这是另一个论坛的问题

于 2017-06-23T16:42:35.550 回答
0

事实证明,我对如何测试统计显着性感到困惑。我已经为该行中的数据计算了一个 p 值:

slope, intercept, r_value, p_value, std_err = stats.linregress(a,annualmean)

我需要做的就是: print(p_value)

于 2017-07-07T18:06:20.507 回答