zoukankan      html  css  js  c++  java
  • 使用R拟合分布

    使用R拟合分布

    几个常用的概率函数介绍

    这里,参考R语言实战,以及[Fitting Distribution with R]的附录。

    一.认识各种分布的形态

    1.1 连续型随机变量的分布

    首先,我们来回顾一遍各类分布函数的表达式,及其关系。
    先逐一介绍与标准正态分布相关的一些分布:正态分布,卡方分布,t−

    分布,F−分布,Wishart

    分布。
    先上个图,一睹为快。
    以上几个分布之间的关系如以下结构图所示。
    [广义线性模型导论3rd edition,p10]

    1.1.1 正态分布

    正态分布N(μ,σ2)

    的密度函数:

    正态分布的形态如图。

    library(ggplot2)
    library(reshape2)
    library(dplyr)
    #产生分布数据
    set.seed(123)
    data_norm<-data.frame(x1 = rnorm(n = 200, m = 0, sd = 1),
                          x2 = rnorm(n = 200, m = 0, sd = sqrt(2)),
                          x3 = rnorm(n = 200, m = 0, sd = sqrt(0.5)),
                          x4 = rnorm(n = 200, m = 1, sd = 1),
                          x5 = rnorm(n = 200, m = -1, sd =1)
    )
    data_norm_long<-melt(data_norm)
    ggplot(data = data_norm_long, aes(x = value, colour = variable))
      geom_density()

      ggtitle

    ("正态分布密度函数")

    正态分布可以衍生出如下的分布。

    1.1.2 卡方分布

    若Zi∼ i.i.dN(0,1)

    ,则有

    set.seed(123)
    data_chisq<-data.frame(x1 = rchisq(200, 10, ncp = 0),
                           x2 = rchisq(200, 50, ncp =0),
                           x3 = rchisq(200, 100, ncp = 0))
    data_chisq_long<-melt(data_chisq)

    ## No id variables; using all as measure variables

    ggplot(data = data_chisq_long, aes(x = value, colour = variable))
      geom_density()
      ggtitle


    ("卡方分布密度函数")

    1.1.3t−

    分布

    ,并且Z和X2独立,则有

    set.seed(123)
    data_t<-data.frame(x1 = rt(200, 10, ncp = 0),
                           x2 = rt(200, 50, ncp =0),
                           x3 = rt(200, 100, ncp = 0))
    data_t_long<-melt(data_t)

    ## No id variables; using all as measure variables

    ggplot(data = data_t_long, aes(x = value, colour = variable))
      geom_density()
      ggtitle

    ("t-分布密度函数")

    1.1.4F−

    分布

    ,并且X1和X2相互独立,则有

    set.seed(123)
    data_f<-data.frame(x1 = rf(200,df1 = 10, df2 = 10, ncp = 0),
                           x2 = rf(200,df1 = 5, df2 = 3, ncp =0),
                           x3 = rf(200, df1 = 3, df2 = 5, ncp = 0))
    data_f_long<-melt(data_f)

    ## No id variables; using all as measure variables

    ggplot(data = data_f_long, aes(x = value, colour = variable))
      geom_density()
      ggtitle

    ("F-分布密度函数")

    1.1.5Wishart

    分布

    Wishart

    分布是χ2分布在p

    维正态情况下的推广。这里对多维情况暂不展开介绍。

    1.2 离散型随机变量的分布

    1.2.1 伯努利(Bernoulli

    )分布

    伯努利分布记为Bernoulli(p)

    ,只有0和1两种取值。概率测度函数如下:

    1.2.2 二项(Binomial

    )分布

    二项分布B(n,p)

    的可能取值范围为0,1,...,n。其概率测度函数如下:


    set.seed(123)
    data_binom<-data.frame(x1 = rbinom(n = 1000, size = 10, prob = 0.6),
                          x2 = rbinom(n = 1000, size = 50, prob = 0.6),
                          x3 = rbinom(n = 1000, size = 100, prob = 0.6),
                          x4 = rbinom(n = 1000, size = 500, prob = 0.6))

    data_binom_long<-melt(data_binom)
    ggplot(data = data_binom_long, aes(x = value, colour = variable))
      geom_density()

      ggtitle

    ("二项分布概率分布图")

    1.2.3 负二项(NegativeBinomial

    )分布

    负二项分布。

    1.2.4 几何(Geometric

    )分布

    1.2.5 泊松(Poission

    )分布

    1.3 指数分布族及其相互联系

    1.3.1 指数分布族

    [广义线性模型导论3rd edition,p58]

    1.3.2 指数分布

    1.3.3 Weibull分布

    1.3.4 Beta分布

    1.3.5 Gama分布

    1.3.6 双指数(DoubleExponential

    )分布

    1.4 其他分布

    1.4.1 均匀(Uniform

    )分布

    1.4.2 柯西(Cauchy

    )分布

    1.4.3 对数正态(Lognormal

    )分布

    1.5 可视化探索的步骤举例

    首先,通过直方图,经验累积分布形态等来观察数据的分布形态。

    #产生一组服从N(10,2)分布的随机数
    set.seed(123)
    x.norm<-rnorm(n = 200, m =10, sd = 2)
    #绘制直方图
    hist(x.norm, main = "观测样本的直方图")

    #拟合密度曲线
    plot(density(x.norm), main = "密度函数估计")

    #绘制累积经验分布图
    plot(ecdf(x.norm), main = "累积经验分布函数")

    #绘制QQ图
    z.norm<-(x.norm - mean(x.norm))/sd(x.norm)
    qqnorm(z.norm)
    abline(0,1)

    其次,通过QQ图来验证数据是否符合正态分布。

    二.模型选择

    三.参数估计

    模拟估计

    矩估计

    极大似然估计

    四.拟合优度指标

    五.拟合优度检验

  • 相关阅读:
    官方示例之地球模块十:拔高GeoPolygon
    全景虚拟漫游技术实现(three.js vs ThingJS) Javascript 3D开发 前端 物联网 webgl 三维建模 3D模型 虚拟 全景
    一个3D城市地图应用工具,等你获取 3D 全景 可视化
    H5动画优化之路
    CSS3实现气泡效果
    清除浮动方法总结
    静态页面参数传递&回调函数写法&快速排序的实现方法
    使用SeaJS实现模块化JavaScript开发(新)
    《无懈可击的Web设计》_灵活的文字
    深入探究JavaScript中的比较问题
  • 原文地址:https://www.cnblogs.com/amengduo/p/9587001.html
Copyright © 2011-2022 走看看