• 『原创』统计建模与R软件-第四章 参数估计


    摘要: 本文由digging4发表于:http://www.cnblogs.com/digging4/p/5054594.html

    统计建模与R软件-第四章 参数估计

    4.1设总体的分布密度为

    $$f(x;alpha)=egin{cases}(alpha+1)x^alpha&,xin(0,1)&,otherend{cases}$$

    (X_1,X_2,cdots,X_n)为其样本,求参数(alpha)的矩估计量(widehat{alpha_1})和极大似然估计量(widehat{alpha_2}).现测得样本观测值为

    $$0.1,0.2,0.9,0.8,0.7,0.7$$

    求参数(alpha)的估计值。

    矩估计:用样本的一阶原点矩估计总体均值;用样本的二阶中心矩估计总体方差。
    如果总体的分布已知,那么总体的均值和方差就可以用分布中的参数表示,再等于样本的一阶原点矩和二阶中心矩,可以计算出总体分布中的参数。
    矩估计优点:在其能用的情况下,计算往往简单
    矩估计缺点:相对其他估计方法,如极大似然法,其效率往往较低。
    已知分布密度,求随机变量的期望(均值)如下,该期望值等于样本的均值:

    [int_{-infty}^{infty}xf(x;alpha )dx=int_{0}^{1}x(alpha+1)x^{alpha}dx=frac{alpha+1}{alpha+2}x^{alpha+2}mid_0^1=frac{alpha+1}{alpha+2}=mean(x) ]

    x <- c(0.1, 0.2, 0.9, 0.8, 0.7, 0.7)
    (2 * mean(x) - 1)/(1 - mean(x))
    
    ## [1] 0.3077
    

    极大似然估计:我们所估计的模型参数,要使得产生这个给定样本的可能性最大。似然函数如下:

    [L(x;alpha )=prod_{i=1}^{n}f(x;alpha)=(alpha+1)^nprod_{i=1}^{n}x_i^alpha ]

    取对数得:

    [lnL(x;alpha )=nln(alpha+1)+alpha sum_{i=1}^{n}lnx_i ]

    在对对数似然函数求倒,可得到

    [frac{partial lnL(x;alpha )}{partial alpha}=frac{n}{alpha+1}+sum_{i=1}^{n}lnx_i ]

    即为求上述偏导数等于0的(alpha)值,此例中(n=3)

    x <- c(0.1, 0.2, 0.9, 0.8, 0.7, 0.7)
    f <- function(a) 6/(a + 1) + sum(log(x))
    uniroot(f, c(0, 1))
    
    ## $root
    ## [1] 0.2112
    ## 
    ## $f.root
    ## [1] -3.845e-05
    ## 
    ## $iter
    ## [1] 5
    ## 
    ## $estim.prec
    ## [1] 6.104e-05
    

    root为估计值,iter为迭代次数,optimize函数也可以用来求解方程。

    4.2设元件无故障工作时间(X)具有指数分布,取1000个元件工作时间的记录数据,经分组后得到它的频数分布为

    组中值(x_i) 5 15 25 35 45 55 65

    频数(v_i) 365 245 150 100 70 45 25

    如果各组中数据都取为组中值,试用极大似然估计求(lambda)的点估计。

    指数分布(lambda)的估计量为

    [hat{lambda}=frac{n}{sum_{i=1}^{n}x_i} ]

    x <- c(rep(5, 365), rep(15, 245), rep(25, 150), rep(35, 100), rep(45, 70), rep(55, 
        45), rep(65, 25))
    1000/sum(x)
    
    ## [1] 0.05
    

    4.3为检验某自来水消毒设备的效果,现从消毒后的水中随机抽取50升,化验每升水中大肠杆菌的个数(假设一升水中大肠杆菌个数服从(Poisson)分布),其化验结果如下:

    大肠杆菌数/升 0 1 2 3 4 5 6

    升数 17 20 10 2 1 0 0

    试问平均每升水中大肠杆菌个数为多少时,才能使上述情况的概率为最大?

    本题实际上是求泊松分布的(lambda)估计,泊松分布的均值和方差均为(lambda),使用点估计即可

    x <- c(rep(0, 17), rep(1, 20), rep(2, 10), rep(3, 2), rep(4, 1), rep(5, 0), 
        rep(6, 0))
    ## 得到$lambda$的估计值
    mean(x)
    
    ## [1] 1
    

    4.4利用R软件中的nlm()函数求解无约束优化问题

    $$minf(x)=(-13+x_1+((5-x_2)x_2-2)x_2)2+(-29+x_1+((x_2+1)x_2-14)x_2)2$$

    取初始点(x^{(0)}=(0.5,-2)^T).

    # 目标函数
    obj <- function(x) {
        f <- c(-13 + x[1] + ((5 - x[2]) * x[2] - 2) * x[2], -29 + x[1] + ((x[2] + 
            1) * x[2] - 14) * x[2])
        sum(f^2)
    }
    x0 <- c(0.5, -2)
    nlm(obj, x0)
    
    ## $minimum
    ## [1] 48.98
    ## 
    ## $estimate
    ## [1] 11.4128 -0.8968
    ## 
    ## $gradient
    ## [1]  1.415e-08 -1.435e-07
    ## 
    ## $code
    ## [1] 1
    ## 
    ## $iterations
    ## [1] 16
    
    # 最优目标值为 $minimum 48.98
    

    4.5正常人的脉搏平均每分钟72次,某医生测得10例四乙基铅中毒患者的脉搏数(次/分)如下:

    54 67 68 78 70 66 67 70 65 69

    已知人的脉搏次数服从正态分布,试计算这10名患者平均脉搏次数的点估计和(95%)的区间估计。并做单侧区间估计,试分析这10名患者的平均脉搏次数是否低于正常人的平均脉搏次数。

    x <- c(54, 67, 68, 78, 70, 66, 67, 70, 65, 69)
    # 由于人的脉搏次数服从正态分布,因此平均次数的点估计为样本均值
    mean(x)
    
    ## [1] 67.4
    
    
    # t.test 可以进行区间估计
    t.test(x)
    
    ## 
    ## 	One Sample t-test
    ## 
    ## data:  x 
    ## t = 35.95, df = 9, p-value = 4.938e-11
    ## alternative hypothesis: true mean is not equal to 0 
    ## 95 percent confidence interval:
    ##  63.16 71.64 
    ## sample estimates:
    ## mean of x 
    ##      67.4
    
    #
    # 得到95%置信度下的区间估计为[63.16,71.64],可认为患者低于常人每分钟72次的正常水平。
    

    4.6甲、乙两种稻种分布播种在10块试验田中,每块试验田甲、乙稻种各种一半,假设两稻种产量(X,Y)均服从正态分布,且方差相等,收获后10块试验田的产量如下所示(单位:千克)

    甲种 140 137 136 140 145 148 140 135 144 141

    乙种 135 118 115 140 128 131 130 115 131 125

    求出两稻种产量的期望差(mu_1-mu_2)的置信区间((alpha=0.05)).

    # 两个正态总体,方差未知但相等情况下的均值差估计
    x <- c(140, 137, 136, 140, 145, 148, 140, 135, 144, 141)
    y <- c(135, 118, 115, 140, 128, 131, 130, 115, 131, 125)
    t.test(x, y, var.equal = TRUE)
    
    ## 
    ## 	Two Sample t-test
    ## 
    ## data:  x and y 
    ## t = 4.629, df = 18, p-value = 0.0002087
    ## alternative hypothesis: true difference in means is not equal to 0 
    ## 95 percent confidence interval:
    ##   7.536 20.064 
    ## sample estimates:
    ## mean of x mean of y 
    ##     140.6     126.8
    
    # 得到95%置信度下的区间估计为[7.36,20.24]
    

    4.7甲、乙两组生产同种导线,现从甲组生产的导线中随机抽取4根,从乙组生产的导线中随机抽取5根,它们的电阻值(单位:(Omega)

    甲组 0.143 0.142 0.143 0.137

    乙组 0.140 0.142 0.136 0.138 0.140

    假设两组电阻值分别服从正态分布(N(mu_1,alpha^2))(N(mu_2,alpha^2))(alpha^2)未知,试求(mu_1-mu_2)的置信系数为0.95的区间估计。

    # 两个正态总体,方差未知但相等情况下的均值差估计
    x <- c(0.143, 0.142, 0.143, 0.137)
    y <- c(0.14, 0.142, 0.136, 0.138, 0.14)
    t.test(x, y)
    
    ## 
    ## 	Welch Two Sample t-test
    ## 
    ## data:  x and y 
    ## t = 1.164, df = 5.701, p-value = 0.2909
    ## alternative hypothesis: true difference in means is not equal to 0 
    ## 95 percent confidence interval:
    ##  -0.002315  0.006415 
    ## sample estimates:
    ## mean of x mean of y 
    ##    0.1412    0.1392
    

    4.8对习题4.6中甲乙两种稻种的数据作方差比的区间估计,并用其估计值来判定两数据是否等方差,若两数据方差不相等,试重新计算两稻种产量的期望差(mu_1-mu_2)的置信区间((alpha=0.05))。

    # var.test() 双样本方差比的区间估计
    x <- c(140, 137, 136, 140, 145, 148, 140, 135, 144, 141)
    y <- c(135, 118, 115, 140, 128, 131, 130, 115, 131, 125)
    var.test(x, y)
    
    ## 
    ## 	F test to compare two variances
    ## 
    ## data:  x and y 
    ## F = 0.2353, num df = 9, denom df = 9, p-value = 0.04229
    ## alternative hypothesis: true ratio of variances is not equal to 1 
    ## 95 percent confidence interval:
    ##  0.05845 0.94744 
    ## sample estimates:
    ## ratio of variances 
    ##             0.2353
    
    
    #
    # 得到方差比的区间估计为[0.05845,0.94744],区间中不包含1,所以可认为两个样本的方差不等
    # 重新计算两样本的期望差
    t.test(x, y, var.equal = FALSE)
    
    ## 
    ## 	Welch Two Sample t-test
    ## 
    ## data:  x and y 
    ## t = 4.629, df = 13.01, p-value = 0.0004712
    ## alternative hypothesis: true difference in means is not equal to 0 
    ## 95 percent confidence interval:
    ##   7.36 20.24 
    ## sample estimates:
    ## mean of x mean of y 
    ##     140.6     126.8
    

    4.9设电话总机在某段时间内接到的呼唤的次数服从参数未知的(Poisson)分布(P(lambda)),现搜集了42个数据

    接到呼唤的次数 0 1 2 3 4 5 6

    出现的频数 7 10 12 8 3 2 0

    试求出平均呼唤次数(lambda)的估计值和它的置信系数为0.95的置信区间。

    # 由于分布不是正态分布,需要样本量比较大,利用中心极限定理进行分析
    # 按书P190的公式进行计算
    x <- c(rep(0, 7), rep(1, 10), rep(2, 12), rep(3, 8), rep(4, 3), rep(5, 2))
    n <- length(x)
    tmp <- sd(x)/sqrt(n) * qnorm(1 - 0.05/2)
    mean(x) - tmp  #估计区间下限
    
    ## [1] 1.494
    
    mean(x) + tmp  #估计区间上限
    
    ## [1] 2.315
    

    4.10已知某种灯泡寿命服从正态分布,在某星期所生产的该灯泡中随机抽取10只,测得其寿命(单位:小时)为:1067,919,1196,785,1126,936,918,1156,920,948,求灯泡寿命平均值的置信度为0.95的单侧置信下限。

    # t.test()可完成单侧区间估计
    x <- c(1067, 919, 1196, 785, 1126, 936, 918, 1156, 920, 948)
    t.test(x, alternative = "greater")
    
    ## 
    ## 	One Sample t-test
    ## 
    ## data:  x 
    ## t = 23.97, df = 9, p-value = 9.148e-10
    ## alternative hypothesis: true mean is greater than 0 
    ## 95 percent confidence interval:
    ##  920.8   Inf 
    ## sample estimates:
    ## mean of x 
    ##     997.1
    
    # 单侧区间估计的下限为920.8
    
  • 相关阅读:
    关于MD5的个人笔记
    QueryString 页面传值方法
    酒店管理系统房态图的效果制作
    开始我的学习之路
    SQL取数据库名,取表名,取列名
    鼠标/键盘事件
    C#皮肤使用例子.
    C#调用WIN API
    C#中定时器的使用方法
    C#随机点名程序例子(名字由配置文件提供)
  • 原文地址:https://www.cnblogs.com/digging4/p/5054594.html
Copyright © 2020-2023  润新知