多元正态分布的均值向量的检验及R实现

本文介绍了多元正态总体的均值向量检验,包括已知和未知协方差矩阵情况下的单个总体均值向量检验,以及未知但相等时两个总体均值向量的检验。通过具体的统计假设、计算步骤和R语言实现,阐述了如何进行显著性差异判断。
部署运行你感兴趣的模型镜像

pp维正态总体NP(μ,)的均值向量检验,X1,X2,,XnX1,X2,⋯,Xn是来自正态总体的样本:

1.已知时单个总体均值向量的检验:

具体步骤:

  • 作统计假设:H0:μ=μ0,H1:μμ0H0:μ=μ0,H1:μ≠μ0
  • 计算样本的均值
  • 计算统计量的具体值:
    {U=X¯μ0σnT02=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¯和样本协方差V=1n1ni=1(XiX¯)(XiX¯)V=1n−1∑i=1n(Xi−X¯)(Xi−X¯)′
  • 计算统计量的具体值:
    T2=n(X¯μ0)V1(X¯μ0),np(n1)pT2F(p,np)T2=n(X¯−μ0)′V−1(X¯−μ0),n−p(n−1)pT2∼F(p,n−p)
  • 按规定的小概率标准αα,查FF分布表,得临界值Fα(p,np),并做出判断:
    -当F0Fα(p,np)F0⩽Fα(p,n−p),接受原假设,即认为没有显著差异
    -当F0>Fα(p,np)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¯Y¯,样本离差阵A1=ni=1(XiX¯)(XiX¯)A1=∑i=1n(Xi−X¯)(Xi−X¯)′A2=ni=1(YiY¯)(YiY¯)A2=∑i=1n(Yi−Y¯)(Yi−Y¯)′
  • 计算统计量的具体值:
    T2=nmn+m(X¯Y¯)V1e(X¯Y¯)T2=nmn+m(X¯−Y¯)′Ve−1(X¯−Y¯)
    其中Ve=1n+m2(A1+A2)Ve=1n+m−2(A1+A2)
    n+mp1(n+m2)pT2F(p,n+mp1)n+m−p−1(n+m−2)pT2∼F(p,n+m−p−1)
  • 按规定的小概率标准αα,查FF分布表,得临界值Fα(p,n+mp1),并做出判断:
    -当F0Fα(p,n+mp1)F0⩽Fα(p,n+m−p−1),接受原假设,即认为没有显著差异
    -当F0>Fα(p,n+mp1)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.多个正态总体均值向量的检验-多元方差分析:

kkNp(μt,),其中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:ij使μiμjH0:μ1=⋯=μk,H1:至少存在i≠j使得μi≠μj
  • 计算离差阵:
    ST=ki=1njj=1(X(i)(j)X¯)(X(i)(j)X¯)SA=ki=1ni(X¯(i)X¯)(X¯(i)X¯)SE=ki=1njj=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,nk,k1)Λ=|SE||SE+SA|=|SE||ST|∼Λ(p,n−k,k−1)

    rlnΛχ2(p(k1)),r=(nk)12(p(k1)+1)−rlnΛ∼χ2(p(k−1)),r=(n−k)−12(p−(k−1)+1)

    其中SAWp(k1,),SEWp(nk,)SA∼Wp(k−1,∑),SE∼Wp(n−k,∑)
  • 按规定的小概率标准αα,查wilkswilks分布表并做出判断:
    -当Λ<Λ1α(p,nk.k1)Λ<Λ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)
}

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值