统计学笔记
t分布:
tcdf(t0,n),t0是t的值,n是样本容量
tcdf(0.3,15)=0.6159意思就是p{t0<=0.3}=0.6159
那么1-tcdf(0.3,15)=0.3841,就是t0>0.3的概率为0.3841.用在求p值的时候。
finv(0.9,5,5)第一个参数是F分布的1-alpha,后面是自由度,这个对应的是F分布表中的F(0.1,5,5)
tinv(0.8,12)第一个参数是t分布的1-alpha,后面12是n,对应t分布表中的t(0.2,12)
chi2inv(0.95,2)第一个参数是chi2分布的1-alpha,后面是n,对应chi2分布中的chi2(0.05,2)
以下代码翻译<<Matlab概率与数理统计分析>>中p190的代码
from scipy.stats import norm
import math
from scipy.stats import f
import numpy as np
# 第一个参数是统计量的值,第二参数是均值,第三个值是方差
norm_f = norm.pdf(1.96,loc=0,scale=1)
# 第一个参数是统计量的值,第二参数是n1自由度,第二个参数是n2自由度
f_f = f.ppf(0.95, dfn=1, dfd=4)
p = norm.cdf(1.96,0,1)
m1=7
m2=8
m3=9
r=3
data1 = np.array([73,66,89,82,43,80,63,88,78,91,76,85,94,80,96,68,79,71,71,87,68,59,76,80])
# print(data1.shape)
n=m1+m2+m3
y1 = np.sum(data1[:m1])
y2 = np.sum(data1[m1:m1+m2])
y3 = np.sum(data1[m1+m2:])
y4 = np.sum(data1)
yy = np.sum(np.multiply(data1,data1))
g = y1*y1/m1+y2*y2/m2+y3*y3/m3
SST = yy-y4*y4/n
SSA = g-y4*y4/n
SSE=SST-SSA
g1 = SSA/(r-1)
g2 = SSE/(n-r)
FEST=g1/g2
# print('FEST: ', FEST)
alpha = 0.05
# val = f.interval(alpha=0.05,dfn=r-1, dfd=n-r)
FLJ = f.ppf(1-alpha, dfn=r-1, dfd=n-r)#f分布表格中的值
p = f.sf(FEST,dfn=r-1, dfd=n-r)#计算p值1-cdf
h=1 if FEST > FLJ else 0#h为1拒绝原假设
print('h: ', h)
print('p: ', p)
# print('p2: ', 1-f.cdf(FEST,dfn=r-1, dfd=n-r))
一行代码解决:
data_1 = data1[:m1]
data_2 = data1[m1:m1+m2]
data_3 = data1[m1+m2:]
F,p = f_oneway(data_1,data_2,data_3)
print('F: ', F)
print('p: ', p)
LSD方法:R.A.Fisher提出,如下:
1.给定检验水平alpha,用方差分析法检验H0.
2.如果拒绝H0,则继续比较水平之间的差异,否则停止。
3.对水平i,j,ui与uj的最小显著差异为LSDij
4.当两个水平的均值差绝对值大于LSDij时,认为ui和uj不同。
每天快乐敲代码,快乐生活