####多元正态总体均值的检验
### 对要检验均值mu0的输入,显著性水平alpha0的输入
###即,参数mu0,alpha0,以及样本资料矩阵sample_matrix,简记为sm.
##sm,mu0,alpha0的读入,在此将上述参数存储于.sav文件中,R读取后
##以数据框存储,然后使用类型转换函数进行适当转换即可得到参数的值
sm <- as.matrix(read.csv("D:/1-2-2 R_file/excel_file/T^2检验多元均值向量.csv",header = T,fileEncoding = "GBK"))
##class(sm) ##查看数据类型
mu0 <- c(4,50,10)
alpha0 <- 0.10
p <- ncol(sm) #列数---变量个数---维数
n <- nrow(sm) #行数---样本个数
mean_sm <- rep(0,p) #样本均值的初始化
for(i in 1:p){
mean_sm <- sum(sm[,i])/n
}#求样本均值mean_sm
cov_m <- matrix(0,p,p) #方差-协差阵的初始化
for(i in 1:p){
for(k in 1:p){
for(j in 1:n){
cov_m[i,k] <- cov_m[i,k]+(sm[j,i]-mean_sm)*(sm[j,k]-mean_sm[k])
}
}
}#方差-协差阵---cov_m---的计算
cov_m <- cov_m/(n-1)
inv_cov_m <- solve(cov_m) #计算方差-协差阵---cov_m---的逆矩阵(inverse)
T_sq <- as.numeric(n*t(mean_sm-mu0)%*%inv_cov_m%*%(mean_sm-mu0)) #检验统计量T^2=T_sq---T square的计算
T_sq_value <- (n-1)*p*qf(alpha0,p,n-p,lower.tail = FALSE)/(n-p) #与alpha0相对应的上分位数(临界值)的计算
###结果的分析
{
if(T_sq < T_sq_value)
cat(paste("因T^2 =",T_sq,"< T_sq_value =",T_sq_value,",所以在",alpha0,"显著性水平下接受原假设"))
else
cat(paste("因T^2 =",T_sq,">= T_sq_value =",T_sq_value,",所以在",alpha0,"显著性水平下拒绝原假设"))
}