pp维正态总体的均值向量检验,X1,X2,⋯,XnX1,X2,⋯,Xn是来自正态总体的样本:
1.∑∑已知时单个总体均值向量的检验:
具体步骤:
- 作统计假设:H0:μ=μ0,H1:μ≠μ0H0:μ=μ0,H1:μ≠μ0
- 计算样本的均值
- 计算统计量的具体值:
{U=X¯−μ0σn−−√T02=n(X¯−μ0)′∑−1(X¯−μ0) if p=1 if p>1{U=X¯−μ0σn if p=1T02=n(X¯−μ0)′∑−1(X¯−μ0) if p>1 - 按规定的小概率标准αα,查χ2χ2分布表,得临界值χ2α(p)χα2(p),并做出判断:
-当T02⩽χ2α(p)T02⩽χα2(p),接受原假设,即认为没有显著差异
-当T02>χ2α(p)T02>χα2(p),拒绝原假设,即认为有显著差异
*R实现:
mu.test.known=function(data, mu0, Sigma0, alpha=0.05)
###############################################################
## H0: mu=mu0 when Sigma0 is known
## this is a Chisq testing
############## Input ########################################
## data = design matrix with the ith sample in the ith line
## mu0 = mu0 for null hypothesis
## Sigma0= the known variance matrix
## alpha = the significant level, default value = 0.05
############## Output ########################################
## Reject.area = reject region
## p.value = p value
###############################################################
{
data=as.matrix(data) #将数据框转化为矩阵#
n=nrow(data) #n行#
p=ncol(data) #p列#
X.bar=apply(data, 2, mean) #按列求均值#
T1=n*t(X.bar-mu0)%*%solve(Sigma0)%*%(X.bar-mu0)
a2=qchisq(1-alpha, p) #求下侧分位点,上侧:lower.tail = FALSE#
reject=matrix(c(T1, a2), nrow=1) #按行排#
rownames(reject)=c("Reject") #行名#
colnames(reject)=c("Obs", ">1-alpha") #列名#
pv=1-pchisq(T1, p) #右半累积概率,T越大,P越小,越拒绝#
return(list(Reject.area=reject, p.value=pv))
}
2.∑∑未知时单个总体均值向量的检验:
具体步骤:
- 作统计假设:H0:μ=μ0,H1:μ≠μ0H0:μ=μ0,H1:μ≠μ0
- 计算样本的均值X¯X¯和样本协方差V=1n−1∑ni=1(Xi−X¯)(Xi−X¯)′V=1n−1∑i=1n(Xi−X¯)(Xi−X¯)′
- 计算统计量的具体值:
T2=n(X¯−μ0)′V−1(X¯−μ0),n−p(n−1)pT2∼F(p,n−p)T2=n(X¯−μ0)′V−1(X¯−μ0),n−p(n−1)pT2∼F(p,n−p) - 按规定的小概率标准αα,查FF分布表,得临界值,并做出判断:
-当F0⩽Fα(p,n−p)F0⩽Fα(p,n−p),接受原假设,即认为没有显著差异
-当F0>Fα(p,n−p)F0>Fα(p,n−p),拒绝原假设,即认为有显著差异
*R实现:
mu.test=function(data, mu0)
###############################################################
## H0: mu=mu0 when Sigma is unknown
## this is an F testing
############## Input ########################################
## data = design matrix with the ith sample in the ith line
## mu0 = mu0 for null hypothesis
############## Output ########################################
## p.value = p value
###############################################################
{
data=as.matrix(data)
n=nrow(data)
p=ncol(data)
X.bar=apply(data, 2, mean)
A=(n-1)*var(data)
T2=(n-1)*n*t(X.bar-mu0)%*%solve(A)%*%(X.bar-mu0)
F=(n-p)/((n-1)*p)*T2
p.two=1-pf(F, p, n-p)
return(list(p.value=p.two))
}
补充:R生成多元正态分布
######################生成多元正态分布####################
library(MASS)
Sigma <- matrix(c(10,3,3,2),2,2)
Sigma
mvrnorm(n=1000, rep(0, 2), Sigma)
##########################模拟##########################
library(MASS)
source("Norm Mean Test.r")
error=0
alpha=0.05
Sigma0 = matrix(c(1,0.5,0.5,1),2,2)
for(i in 1:1000){
data=mvrnorm(n=200, rep(0, 2), Sigma0)
mu0=c(0,0)
result1=mu.test.known(data, mu0, Sigma0, alpha=0.05)
if (result1[2]<alpha) error=error+1
}
EERROR=error/1000
3.∑∑未知但相等时两个总体均值向量的检验:
具体步骤:
- 作统计假设:H0:μ1=μ2,H1:μ1≠μ2H0:μ1=μ2,H1:μ1≠μ2
- 计算样本的均值X¯X¯和Y¯Y¯,样本离差阵A1=∑ni=1(Xi−X¯)(Xi−X¯)′A1=∑i=1n(Xi−X¯)(Xi−X¯)′和A2=∑ni=1(Yi−Y¯)(Yi−Y¯)′A2=∑i=1n(Yi−Y¯)(Yi−Y¯)′
- 计算统计量的具体值:
T2=nmn+m(X¯−Y¯)′V−1e(X¯−Y¯)T2=nmn+m(X¯−Y¯)′Ve−1(X¯−Y¯)其中Ve=1n+m−2(A1+A2)Ve=1n+m−2(A1+A2)n+m−p−1(n+m−2)pT2∼F(p,n+m−p−1)n+m−p−1(n+m−2)pT2∼F(p,n+m−p−1) - 按规定的小概率标准αα,查FF分布表,得临界值,并做出判断:
-当F0⩽Fα(p,n+m−p−1)F0⩽Fα(p,n+m−p−1),接受原假设,即认为没有显著差异
-当F0>Fα(p,n+m−p−1)F0>Fα(p,n+m−p−1),拒绝原假设,即认为有显著差异
*R实现:
#### two independent normal distribution ##################
two.mu.test=function(data1, data2)
###################################################################
## H0: mu1=mu2
## this is an F testing
############## Input ############################################
## data1 = design matrix for X with the ith sample in the ith line
## data2 = design matrix for X with the ith sample in the ith line
############## Output ####################################### p.value = p value
############################################################
{
data1=as.matrix(data1)
data2=as.matrix(data2)
n1=nrow(data1)
n2=nrow(data2)
p=ncol(data1)
X.bar=apply(data1, 2, mean)
A1=(n1-1)*var(data1)
Y.bar=apply(data2, 2, mean)
A2=(n2-1)*var(data2)
A=(A1+A2)/(n1+n2-2)
T2=(n1*n2/(n1+n2))*t(X.bar-Y.bar)%*%solve(A)%*%(X.bar-Y.bar)
F=(n1+n2-2-p+1)/((n1+n2-2)*p)*T2
p.two=1-pf(F, p, (n1+n2-p-1))
return(list(p.value=p.two))
}
4.多个正态总体均值向量的检验-多元方差分析:
(kk个,其中t=1,⋯,kt=1,⋯,k,样本X(t)(i)(t=1,⋯,k)(i=1,⋯,ni)X(i)(t)(t=1,⋯,k)(i=1,⋯,ni))
实验数据:
| 水平数 | 重复数 | 平均 |
|---|---|---|
| X1(p×n1)X1(p×n1) | X(1)(1),⋯,X(1)(n1)X(1)(1),⋯,X(n1)(1) | X¯(1)X¯(1) |
| X2(p×n2)X2(p×n2) | X(2)(1),⋯,X(2)(n2)X(1)(2),⋯,X(n2)(2) | X¯(2)X¯(2) |
| ⋯⋯ | ⋯⋯ | ⋯⋯ |
| Xk(p×nk)Xk(p×nk) | X(k)(1),⋯,X(k)(nk)X(1)(k),⋯,X(nk)(k) | X¯(k)X¯(k) |
具体步骤:
- 作统计假设:H0:μ1=⋯=μk,H1:至少存在i≠j使得μi≠μjH0:μ1=⋯=μk,H1:至少存在i≠j使得μi≠μj
- 计算离差阵:⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪总离差阵:ST=∑ki=1∑njj=1(X(i)(j)−X¯)(X(i)(j)−X¯)′组间离差阵:SA=∑ki=1ni(X¯(i)−X¯)(X¯(i)−X¯)′组内离差阵:SE=∑ki=1∑njj=1(X(i)(j)−X¯(i))(X(i)(j)−X¯(i))′离差阵分解公式:ST=SA+SE{总离差阵:ST=∑i=1k∑j=1nj(X(j)(i)−X¯)(X(j)(i)−X¯)′组间离差阵:SA=∑i=1kni(X¯(i)−X¯)(X¯(i)−X¯)′组内离差阵:SE=∑i=1k∑j=1nj(X(j)(i)−X¯(i))(X(j)(i)−X¯(i))′离差阵分解公式:ST=SA+SE
- 计算统计量的具体值:
Λ=|SE||SE+SA|=|SE||ST|∼Λ(p,n−k,k−1)Λ=|SE||SE+SA|=|SE||ST|∼Λ(p,n−k,k−1)
−rlnΛ∼χ2(p(k−1)),r=(n−k)−12(p−(k−1)+1)−rlnΛ∼χ2(p(k−1)),r=(n−k)−12(p−(k−1)+1)
其中SA∼Wp(k−1,∑),SE∼Wp(n−k,∑)SA∼Wp(k−1,∑),SE∼Wp(n−k,∑) - 按规定的小概率标准αα,查wilkswilks分布表并做出判断:
-当Λ<Λ1−α(p,n−k.k−1)Λ<Λ1−α(p,n−k.k−1),拒绝原假设,即认为有显著差异
*R实现:
#### k independent normal distribution #########
###################################################################
## H0: mu1=mu2=...=muk
## this is asymptotically a Chisq testing
############## Input ############################################
## data = design matrix with a group index ind
############## Output ############################################
## p.value = p value
###################################################################
multi.mu.test=function(data, k)
{
ind=data$ind
n=nrow(data)
p=ncol(data)-1
data=data[ ,1:p]
T=(n-1)*var(data)
A=0
for (i in 1:k)
{
datai=data[ind==i, ]
ni=nrow(datai)
A=A+(ni-1)*var(datai)
}
Lambda=det(A)/det(T)
n1=n-k
n2=k-1
r=n1-(p-n2+1)/2
Chi=(-1)*r*log(Lambda)
p.value=1-pchisq(Chi, p*n2)
return(p.value=p.value)
}
本文介绍了多元正态总体的均值向量检验,包括已知和未知协方差矩阵情况下的单个总体均值向量检验,以及未知但相等时两个总体均值向量的检验。通过具体的统计假设、计算步骤和R语言实现,阐述了如何进行显著性差异判断。
1万+

被折叠的 条评论
为什么被折叠?



