统计方法
t检验
原理和用途
计算A=(已知样本平均值与总体样本平均值的差值) 除以(总体样本标准差除以根号下[n if n>30 else n-1]得到的标准偏差)的比值,查t值表,就是看平均值的差异是否属于标准偏差允许的范围内,如果差异过大,两者就没有相关性,t检验限定条件是服从正态分布的连续变量,t检验可以用来判断一个东西是不是属于另一种事物
用法
import numpy as np
from scipy import stats
mean1 = 30.97
mean2 = 21.79
std1 = 26.7
std2 = 12.1
nobs1 = 10
nobs2 = 10
modified_std1 = np.sqrt(np.float32(nobs1)/np.float32(nobs1-1)) * std1
modified_std2 = np.sqrt(np.float32(nobs2)/np.float32(nobs2-1)) * std2
(statistic, pvalue) = stats.ttest_ind_from_stats(mean1=mean1,
std1=modified_std1,
nobs1=nobs1,
mean2=mean2,
std2=modified_std2,
nobs2=nobs2)
print("t statistic is: ", statistic)
print("pvalue is: ", pvalue)
f检验
原理和用途
方差相除,配合自由度,再查F表,判断两样本的偏度是否一致,网上查资料就没看到说人话讲F检验应用的文章
用法
from scipy.stats import f
import numpy as np
a=[2,1,3]
b=[6,8,10]
F = np.var(a) / np.var(b)
df1 = len(a) - 1
df2 = len(b) - 1
p_value = 1 - 2 * abs(0.5 - f.cdf(F, df1, df2))
print(p_value)
卡方检验
原理和用途
卡方检验就是先假设两变量独立无关则小样本的概率同大样本,根据假设和总体数据算出各个类别的理论值,再计算实际值与理论值的差异程度,再根据自由度V = (行数 - 1) * (列数 - 1)查卡方表,卡方值越大说明实际和理论的差异越大,P值对应的越小
用法
from scipy import stats
obs = [102, 102, 96, 105, 95, 100]
exp = [100, 100, 100, 100, 100, 100]
print(stats.chisquare(obs, f_exp = exp))
皮尔森相关系数
原理和用途
皮尔森相关系数就是先将两组向量的平均值归一化到0,再计算处理后的向量夹角
用法
import scipy
from scipy.stats import pearsonr
x = scipy.array([1, 2, 3, 4, 5])
y = scipy.array([2, 4, 6, 8, 9])
r_row, p_value = pearsonr(x, y)
print(r_row)
print(p_value)
信息熵
原理和用途
熵是用来计算事件的信息量,1.概率是0-1的闭区间,事物信息量是0-正无穷,2.越小概率事件的信息量远大于大概率事件
用法
from scipy import stats
import pandas as pd
# 熵
import numpy as np
ij=np.array([0.1,0.9])
shannon_entropy_func = lambda pij: -sum(pij*np.log(pij))
shannon_entropy = shannon_entropy_func(ij[np.nonzero(ij)])
print(shannon_entropy)
# KL散度
def Entropy(labels, base=2):
probs = pd.Series(labels).value_counts() / len(labels)
print(probs)
en = stats.entropy(probs, base=base)
return en
print(Entropy([1, 1, 0, 1, 1]))
参考
如何理解t检验、t分布、t值?
统计学——卡方检验和卡方分布
scipy.stats.entropy
如何理解K-L散度(相对熵)

浙公网安备 33010602011771号