统计学笔记

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不同。
posted @ 2022-09-14 20:14  快乐码小农  阅读(241)  评论(0编辑  收藏  举报