在置信度一定的前提下置信区间的长度越短,其精度越高,估计也就越好实际情况中,通常是给定一定的置信度,求尽可能短的置信区间,下面我们就来说一说关于r语言统计分析方法?我们一起去了解并探讨一下这个问题吧!

r语言统计分析方法(用R语言做数据分析)

r语言统计分析方法

在置信度一定的前提下置信区间的长度越短,其精度越高,估计也就越好。实际情况中,通常是给定一定的置信度,求尽可能短的置信区间。

均值的区间估计

在《每天一点统计学——构建置信区间》这篇文章中已经介绍过置信区间,现在使用R语言来完成置信区间的计算。计算均值的置信区间,需要分为总体方差已知和总体方差未知两种情况,下面是均值置信区间的计算函数(程序名:interval_estimate1.R)

interval_estimate1<-function(x,sigma=-1,alpha=0.05){

n<-length(x);

xb<-mean(x);

if(sigma>=0){

tmp<-sigma/sqrt(n)*qnorm(1-alpha/2);

df<-n;

} else {

tmp<-sd(x)/sqrt(n)*qt(1-alpha/2,n-1);

df<-n-1

}

data.frame(mean=xb,df=df,a=xb-tmp,b=xb tmp);

}

在程序中,x是来自总体的样本数据,sigma是总体的标准差,当标准差已知时,输入相应的值,程序采用正态分布计算区间端点,当标准差未知时,输入项可缺省,程序采用t-分布计算区间端点。aplha是显著性水平,缺省值为0.05.函数以数据框的形式输出,输出的内容有:样本均值mean,自由度df和均值区间估计的上下限a、b。

例子:某工厂生产的零件长度X被认为服从N( μ,0.04),先从该产品中随机抽取6个,其长度的测量值如下(单位:毫米)

14.6,15.1,14.9,14.8,15.2,15.1

试求该零件长度的置信系数为0.95的区间估计

解:输入数据,调用函数interval_estimate1()

> source("interval_estimate1.R")

> X<-c(14.6,15.1,14.9,14.8,15.2,15.1)

> interval_estimate1(X,sigma = 0.2)

得到

mean df a b

1 14.95 6 14.78997 15.11003

因此,该零件长度的置信系数为0.95的区间估计[14.79,15.11]

例子:为估计一件物体的重量μ,将其称了10次,得到的重量(单位:千克)为:

10.1,10,9.8,10.5,9.7,10.1,9.9,10.2,10.3,9.9

假设所称物体重量服从N(μ ,σ^2),求该物体μ置信系数为0.95的置信区间。

解:输入数据,调用函数interval_estimate1()

> source("interval_estimate1.R")

> Y<-c(10.1,10,9.8,10.5,9.7,10.1,9.9,10.2,10.3,9.9)

> interval_estimate1(Y)

得到

mean df a b

1 10.05 9 9.877225 10.22278

因此,该物体μ置信系数为0.95的置信区间为[9.87,10.22]

再使用R语言的t.test()检验函数完成相应的区间估计工作:

> t.test(Y)

One Sample t-test

data: Y

t = 131.59, df = 9, p-value = 4.296e-16

alternative hypothesis: true mean is not equal to 0

95 percent confidence interval:

9.877225 10.222775

sample estimates:

mean of x

10.05

得到了相应的区间估计函数[9.88,10.22]和其他一些信息。t.test()函数得到的区间估计与我们编写的函数得到的区间估计是相同的,从这里可以帮助大奖了解t.test()函数的计算过程。

方差的区间估计

计算方差的置信区间,需要分为总体均值已知和总体均值未知两种情况,下面是方差置信区间的计算函数(程序名:interva_var1.R)

interval_var1<-function(x,mu=Inf,alpha=0.05){

n<-length(x)

if(mu<Inf){

S2<-sum((x-mu)^2)/n;

df<-n;

}else{

S2<-var(x);

df<-n-1

}

a<-df*S2/qchisq(1-alpha/2,df);

b<-df**S2/qchisq(alpha/2,df);

data.frame(var=S2,df=df,a=a,b=b)

}

在程序中,x是来自总体的样本数据,mu是总体的均值,当均值已知时,输入相应的值,程序采用自由度为n的卡方分布计算区间端点,当均值未知时,输入项可缺省,程序采用自由度为n-1的卡方分布计算区间端点。aplha是显著性水平,缺省值为0.05。函数以数据框的形式输出,输出的内容有:样本方差var,自由度df和方差区间估计的上下限a、b。

例子:为估计一件物体的重量μ,将其称了10次,得到的重量(单位:千克)为:

10.1,10,9.8,10.5,9.7,10.1,9.9,10.2,10.3,9.9

下面用区间估计的方法计算这次测量的测量误差,

>#输入数据,调用编写好的程序

> source("interval_var1.R")

> X<-c(10.1,10,9.8,10.5,9.7,10.1,9.9,10.2,10.3,9.9)

>#作方差的区间估计,如果均值为10

> interval_var1(X,mu=10)

var df a b

1 0.055 10 0.0268513 0.3495597

>#作方差的区间估计,如果均值未知

> interval_var1(X)

var df a b

1 0.05833333 9 0.02759851 0.420957

当均值已知(μ =10),其方差的区间估计为[0.0268,0.169],当均值未知时,其方差的区间估计为[0.0276,0.194]。从计算结果来看,在均值已知的情况下,计算结果更好一些。

,