Python利用scipy实现T-TEST和Z-TEST源代码

使用excel的T.TEST和Z.TEST计算不方便,使用python的包scipy可以方便实现计算,但是网上有参考价值的资料少,特此总结源代码,直接展示常用方法。一、T-TESTfrom scipy.stats import ttest_1samp, ttest_ind, ttest_relimport scipyfrom scipy import stats上面是常用的导入,下边对如何使用进行说明。rvs1 = stats.norm.rvs(loc=600, scale=13.14, siz
摘要由CSDN通过智能技术生成

使用excel的Student T.TEST(学生T检验)和Z.TEST计算不方便,使用python的包scipy可以方便实现计算,但是网上有参考价值的资料少,特此总结源代码,直接展示常用方法。
一、T-TEST
from scipy.stats import ttest_1samp, ttest_ind, ttest_rel
import scipy
from scipy import stats

上面是常用的导入,下边对如何使用进行说明。
rvs1 = stats.norm.rvs(loc=600, scale=13.14, size=(100))
使用上一行代码可以生成平均值600,标准差13.14的100个numpy格式的数组。
ttest_1samp(rvs1, 606.8)
如何你想判断这个数组是否是均值为606.8可以执行上一行代码。零假设(H0):平均值是606.8。结果如下:
Ttest_1sampResult(statistic=-5.248931487366472, pvalue=8.740647032540755e-07)
可以看到pvalue<0.05(95%置信区间),可以否定原假设,即平均值不是606.8,同时可以设置600的均值会发现,pvalue大于0.05,即不能否定零假设(接受零假设)。
ttest_1samp(rvs1, 600)
Ttest_1sampResult(statistic=-0.6284560569204097, pvalue=0.5311524646461774)

同时,也可以判断2组数据是否独立。结果如下。
rvs2 = np.array([587, 602, 627, 610, 619, 622, 605, 608, 596, 592])
stats.ttest_ind(rvs1, rvs2)

Ttest_indResult(statistic=-1.5961716809020776, pvalue=0.11337255170409642)
可以看到,pvalue>0.05,即不能否定零假设,2组数据是匹配样本。
同时,我们可以使用代码计算出95%的critical value。
scipy.stats.t.ppf(level_of_confidence, degree_of_freedom)
scipy.stats.t.ppf(0.95, 9)
第一个置信水平一般是95%,第二个是自由度,等于n-1(样本数量减1),可以求出结果是1.8331129326536333
同时如果使用公式=(新样本均值-大样本均值)/(标准差/样本数量开方)计算出了t得分,可以用求出pvalue。
scipy.stats.t.sf(abs(t_score),degree_of_freedom)
scipy.stats.t.sf(abs(1.64), 9)

如此,可以求出结果0.0677128969326147
同时,也可以附带参数equal_var代表不同方差。
a = np.array([99.3, 98.7, 100.5, 101.2, 98.3, 99.7, 99.5, 102.1, 100.5])
b = np.array([91.1, 93.7, 93.6, 96.1, 94.3, 92.2, 94.0, 95.7, 97.1])
print(st.ttest_ind(a, b, equal_var=False))
rel代表的是related samples。
print(st.ttest_rel(a, b))

二、Z-TEST
同理可以计算critical value,pvalue。
scipy.stats.norm.ppf(level_of_confidence)
scipy.stats.norm.sf(abs(z_score))
已知样本后,可以判断均值。
arr = np.array([650, 730, 510, 670, 480, 800, 690, 530, 590, 620, 710, 670, 640, 780, 650, 490, 800, 600, 510, 700])
print(sw.ztest(arr, value=690))

(-2.1891585528829745, 0.028585317966169962)
由上一行结果可知,不能接受690的均值。同时,也可以使用代码进行不等式判断,alternative是备选(H1),他的反面的H0,即均值是大于700。
sw.ztest(arr, value=700,

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: GMM-HMM是一种用于孤立词识别的常见方法之一。在语音识别中,孤立词识别是指根据输入的语音信号来识别出特定的单词。下面是一个简单的GMM-HMM孤立词识别的源代码示例。 该代码示例假设已经有了训练好的GMM-HMM模型,可以使用模型进行识别。 ```python import numpy as np import scipy.io.wavfile as wav from hmmlearn import hmm # 加载预训练好的模型 model = hmm.GMMHMM() model.load('model.pkl') # 读取待识别的语音信号 def read_wav(file_path): sr, signal = wav.read(file_path) return signal # 特征提取 def extract_features(signal): # 在这个示例中,我们假设已经有了一个特征提取的方法 # 可以将信号转换为MFCC系数等特征向量 features = extract_method(signal) return features # 识别 def recognize(file_path): signal = read_wav(file_path) features = extract_features(signal) # 使用模型进行识别 pred = model.predict(features) return pred # 调用识别函数进行识别 file_path = 'test.wav' pred = recognize(file_path) # 输出识别结果 print("识别结果是:", pred) ``` 以上是一个简单的GMM-HMM孤立词识别的示例代码。需要注意的是,该代码只是一个框架,具体的实现还需要根据不同的需求进行修改和补充。特别是特征提取部分,需要根据实际情况选择适合的方法。同时,训练模型的部分也没有包含在代码中,需要根据实际情况预先训练好模型并加载进来。 ### 回答2: GMM-HMM(Gaussian Mixture Model - Hidden Markov Model)是一种常用于语音识别中的模型,用于孤立词(Isolated Word)的识别。这个模型的实现主要涉及两方面的代码:GMM训练和HMM模型构建。 首先是GMM的训练。GMM是用于建模语音特征的概率密度函数。训练GMM的源代码主要包括以下步骤: 1. 数据准备:收集一系列单词的语音样本,并提取相应的特征,如MFCC(Mel-Frequency Cepstral Coefficients)等。 2. 初始化GMM参数:确定GMM的混合数量、每个混合的协方差矩阵等。 3. Expectation-Maximization(EM)算法迭代:以高斯混合概率密度函数为初始模型,通过迭代将GMM参数逐步优化。 4. 计算期望值(Expectation):根据当前的GMM参数,计算每个样本属于每个混合的概率。 5. 更新参数(Maximization):根据上一步计算出的期望值,更新GMM的混合权重、均值和协方差矩阵。 6. 重复步骤4和5,直到达到一定的收敛条件。 接下来是HMM模型的构建。HMM用于建模语音信号的时序特性。HMM的源代码包括以下关键步骤: 1. 确定HMM的状态数量和转移概率矩阵。 2. 根据语音样本的标注信息,确定每个时刻对应的状态。 3. 初始化HMM的发射概率矩阵,其中每个状态对应一个GMM。 4. 使用Viterbi算法,通过动态规划的方式,计算最优路径,即最可能的状态序列。 5. 通过反向传播算法,更新HMM的参数,包括转移概率矩阵和发射概率矩阵。 6. 重复步骤4和5,直到达到一定的收敛条件。 GMM-HMM的孤立词识别源代码就是以上两个部分的结合。首先使用GMM训练得到每个单词的GMM模型参数,然后使用HMM模型对每个孤立词的时间序列进行识别。具体实现细节可以通过查阅相关的论文和开源项目来获取。 ### 回答3: GMM-HMM是一种常用的语音识别技术,用于孤立词识别任务中。下面是一份GMM-HMM孤立词识别的源代码示例: 1. 首先,需要准备一个语音训练集,其中包含多个孤立词的语音样本。每个样本都需要进行特征提取,可以使用MFCC等常用的特征提取方法。 2. 接下来,需要训练一个GMM模型用于表示每个词的声学特征。可以使用开源工具库如Kaldi或HTK来进行此步骤。具体而言,需要使用EM算法来训练GMM,得到每个词对应的高斯分布模型。 3. 在训练GMM模型后,需要进一步构建HMM模型。HMM模型是用于建模词序列的概率模型,由多个状态和状态转移概率组成。可以使用库如HTK或自己编写代码来进行HMM模型的训练和构建。 4. 训练完HMM模型后,可以进行孤立词的识别。首先,对于输入的测试语音样本,也要进行与训练集相同的特征提取。然后,将提取到的特征与每个词对应的GMM模型进行比较,计算相似度分数。 5. 最后,根据相似度分数,可以使用一些阈值或决策规则来确定最可能的词的标签。常见的方法是使用最大似然估计(MLE)或Viterbi算法来选择最佳路径。 需要注意的是,以上只是GMM-HMM孤立词识别的基本步骤和流程,并不能涵盖所有细节。具体的实现过程会涉及到更多的数学计算和算法优化技巧。希望这个简单的源代码示例能够帮助你对GMM-HMM孤立词识别有一个初步的了解。如果进一步深入研究,可以参考相关的学术论文或专业书籍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

baozouxiaoxian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值