参数估计(R实现)

这篇博文主要是介绍如何用R来对未知参数进行估计。
给定置信水平时,置信区间越窄,区间估计精度越高。

均值估计

在估计总体均值时,方差已知。

install.packages("BSDA")
install.packages("UsingR")

#方差已知
conf.int=function(x,sigma,alpha){
  mean=mean(x)
  n=length(x)
  z=qnorm(1-alpha/2,mean=0,sd=1,lower.tail=TRUE)
  c(mean-sigma*z/sqrt(n),mean+sigma*z/sqrt(n))
}
set.seed(111)  #设定随机种子
x=rnorm(20,10,2)
conf.int(x,2,0.05)

library("BSDA")
library("lattice")
z.test(x,sigma.x=2)$conf.int

library("UsingR")
simple.z.test(x,2)

Out:

[1]  8.416051 10.169096
[1]  8.416051 10.169096
attr(,"conf.level")
[1] 0.95
[1]  8.416051 10.169096

三种方法得到的置信区间都是一样的。其中利用BSDA包做区间估计时,z.test()用法如下:

z.test(
  x,
  y = NULL,
  alternative = "two.sided",
  mu = 0,
  sigma.x = NULL,
  sigma.y = NULL,
  conf.level = 0.95
)

根据参数可直接指定单边还是双边检验,可指定标准差 σ \sigma σ和置信水平
在估计总体均值时,方差未知。

t.test(x)$conf.int
[1]  8.432088 10.153059
attr(,"conf.level")
[1] 0.95

比率估计

#比率的区间估计
binom.test(214,2000)
#exact binomial interval for p
#比率的近似置信区间
prop.test(214,2000)

在估计总体比例p时,可用函数prop.test直接完成对p的区间估计

方差估计

下面是估计总体方差的部分:

var.conf.int=function(x,mu=Inf,alpha){
  n=length(x)
  if(mu<Inf){
    s2=sum((x-mu)^2)/n
    df=n
  }
  else{
    s2=var(x)
    df=n-1
  }
  c(df*s2/qchisq(1-alpha/2,df),df*s2/qchisq(alpha/2,df))
}
var.conf.int(x,alpha=0.05)

Out:

[1] 1.955042 7.211313
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值