单个、双个正态分布区间估计--R code

来源:互联网 发布:怎么搭建python环境 编辑:程序博客网 时间:2024/06/06 09:07

代码是选修课《数据分析与统计》上附加题,可直接应用。欢迎纠错。

#*****************#本程序利用R分布别做出单个、双个正态分布总体#区间估计的均值和双侧、单侧置信区间#包含4个函数#code by Vac 2017.12.8#*****************#单个正态分布#u的区间估计,sigma已知onenorm_u_sigma<-function(X,sigma,alpha=0.99){    n<-length(X);    tmpx<-sigma*qnorm(1-alpha/2)/sqrt(n);    a<-mean(X)-tmpx;b<-mean(X)+tmpx;#双侧    cat("其",alpha*100,"%双侧置信区间是:[",a,",",b,"]","\n")    bu<-mean(X)+sigma*qnorm(1-alpha)/sqrt(n)#单侧上限    ad<-mean(X)-sigma*qnorm(1-alpha)/sqrt(n)#单侧下限    cat("其",alpha*100,"%单侧置信区间上限是:",bu,"\n下限是",ad,"\n")}#u的区间估计,sigma未知onenorm_u_sd<-function(X,alpha=0.99){    n<-length(X);    tmpx<-sd(X)*qt(1-alpha/2,n-1)/sqrt(n);    a<-mean(X)-tmpx;b<-mean(X)+tmpx;#双侧    cat("其",alpha*100,"%双侧置信区间是:[",a,",",b,"]","\n")    bu<-mean(X)+sd(X)*qt(1-alpha,n-1)/sqrt(n)#单侧上限    ad<-mean(X)-sd(X)*qt(1-alpha,n-1)/sqrt(n)#单侧下限    cat("其",alpha*100,"%单侧置信区间上限是:",bu,"\n下限是",ad,"\n")}#sigma的区间估计,u已知onenorm_sigma_u<-function(X,u,alpha=0.99){    n<-length(X);    a<-sum((X-u)^2)/qchisq(1-alpha/2,n);    b<-sum((X-u)^2)/qchisq(alpha/2,n);#双侧    cat("其",alpha*100,"%双侧置信区间是:[",a,",",b,"]","\n")    bu<-sum((X-u)^2)/qchisq(alpha,n)#单侧上限    ad<-sum((X-u)^2)/qchisq(1-alpha,n)#单侧下限    cat("其",alpha*100,"%单侧置信区间上限是:",bu,"\n下限是",ad,"\n")}#sigma的区间估计,u未知onenorm_sigma_sd<-function(X,alpha=0.99){    n<-length(X);    a<-(n-1)*sd(X)^2/qchisq(1-alpha/2,n-1);    b<-(n-1)*sd(X)^2/qchisq(alpha/2,n-1);#双侧    cat("其",alpha*100,"%双侧置信区间是:[",a,",",b,"]","\n")    bu<-(n-1)*sd(X)^2/qchisq(alpha,n-1)#单侧上限    ad<-(n-1)*sd(X)^2/qchisq(1-alpha,n-1)#单侧下限    cat("其",alpha*100,"%单侧置信区间上限是:",bu,"\n下限是",ad,"\n")}##两个正态分布#u1-u2的区间估计,sigma1,sigma2已知twonorm_du_sigma<-function(X,Y,sigma1,sigma2,alpha=0.99){    m<-length(X);    n<-length(Y);    tmp<-sqrt(sigma1^2/m+sigma2^2/n)*qnorm(1-alpha/2);    a<-mean(X)-mean(Y)-tmp;    b<-mean(X)-mean(Y)+tmp;#双侧    cat("其",alpha*100,"%双侧置信区间是:[",a,",",b,"]","\n")    bu<-mean(X)-mean(Y)+sqrt(sigma1^2/m+sigma2^2/n)*qnorm(1-alpha);#单侧上限    ad<-mean(X)-mean(Y)-sqrt(sigma1^2/m+sigma2^2/n)*qnorm(1-alpha);#单侧下限    cat("其",alpha*100,"%单侧置信区间上限是:",bu,"\n下限是",ad,"\n")} #u1-u2的区间估计,sigma1,sigma2未知twonorm_du_sd<-function(X,Y,alpha=0.99){    m<-length(X);    n<-length(Y);    Sw<-sqrt((m-1)*sd(X)^2+(n-1)*sd(Y)^2)/(m+n-2);    tmp<-Sw*sqrt(1/m+1/n)*qt(1-alpha/2,m+n-2);    a<-mean(X)-mean(Y)-tmp;    b<-mean(X)-mean(Y)+tmp;#双侧    cat("其",alpha*100,"%双侧置信区间是:[",a,",",b,"]","\n")    bu<-mean(X)-mean(Y)+Sw*sqrt(1/m+1/n)*qt(1-alpha,m+n-2);#单侧上限    ad<-mean(X)-mean(Y)-Sw*sqrt(1/m+1/n)*qt(1-alpha,m+n-2);#单侧下限    cat("其",alpha*100,"%单侧置信区间上限是:",bu,"\n下限是",ad,"\n")} #sigma1^2/sigma2^2的区间估计,u1,u2已知twonorm_sigma_u<-function(X,Y,u1,u2,alpha=0.99){    m<-length(X);    n<-length(Y);    numerator<-n*sum((X-u1)^2)/m/sum((Y-u2)^2);    a<-numerator/qf(1-alpha/2,m,n)    b<-numerator/qf(alpha/2,m,n)#双侧    cat("其",alpha*100,"%双侧置信区间是:[",a,",",b,"]","\n")    bu<-numerator/qf(alpha,m,n)#单侧上限    ad<-numerator/qf(1-alpha,m,n)#单侧下限        cat("其",alpha*100,"%单侧置信区间上限是:",bu,"\n下限是",ad,"\n")}#sigma1^2/sigma2^2的区间估计,u1,u2未知twonorm_sigma_sd<-function(X,Y,alpha=0.99){    m<-length(X);    n<-length(Y);    numerator<-sd(X)^2/sd(Y)^2;    a<-numerator/qf(1-alpha/2,m-1,n-1)    b<-numerator/qf(alpha/2,m-1,n-1)#双侧    cat("其",alpha*100,"%双侧置信区间是:[",a,",",b,"]","\n")    bu<-numerator/qf(alpha,m-1,n-1)#单侧上限    ad<-numerator/qf(1-alpha,m-1,n-1)#单侧下限        cat("其",alpha*100,"%单侧置信区间上限是:",bu,"\n下限是",ad,"\n")}
原创粉丝点击