zoukankan      html  css  js  c++  java
  • R语言数据分析系列之四

    R语言数据分析系列之四

    说到统计分析我们就离不开随机变量,所谓随机变量就是数学家们为了更好的拟合现实世界的数据而建立的数学模型。有了她我们甚至能够来预測一个站点未来几天的日訪问用户,股票的未来走势等等。

    那么本节我们来一起探讨下面经常使用的函数分布。以及流程控制语句。

    常见分布有:正态分布(高斯分布),指数分布,beta分布,gamma分布等。

    正态分布

    若随机变量X服从一个数学期望为μ、方差为σ^2的正态分布。记为N(μ。σ^2)。其概率密度函数曲线,由正态分布的期望值μ决定了其位置。其标准差σ决定了分布的幅度。因其曲线呈钟形,因此人们又常常称之为钟形曲线。

    我们通常所说的标准正态分布是μ = 0,σ = 1的正态分布。

    par(mgp=c(0.6,0.6,0))
    x <- seq(-5,5,length.out=100) 
    y <- dnorm(x,0,1) 
    plot(x,y,xlim=c(-4,4),col='red',ylim=c(0,0.8),type='l',ylab='density',xlab='x',main="The Normal Density Distribution")
    lines(x,dnorm(x,0,2),col="blue")
    lines(x,dnorm(x,-2,1),col="orange")
    lines(x,dnorm(x,0,0.5),col="green")


    指数分布

    很多电子产品的寿命分布一般服从指数分布。

    有的系统的寿命分布也可用指数分布来近似。它在可靠性研究中是最经常使用的一种分布形式。产品的失效是偶然失效时。其寿命服从指数分布。

    比如已知某原件已经使用了s小时,那么它能在使用t小时的条件概率。与从刚開始使用t小时的概率一样。这就是指数分布的无记忆性,它在可靠性研究中有着广泛的应用。

    x<-seq(-1,2,length.out=100)
    y<-dexp(x,0.5)
     
    plot(x,y,col="red",xlim=c(0,2),ylim=c(0,5),type='l',
            xaxs="i", yaxs="i",ylab='density',xlab='x',
            main="The Exponential Density Distribution")
    lines(x,dexp(x,1),col="green")
    lines(x,dexp(x,2),col="blue")
    lines(x,dexp(x,5),col="orange")



    gamma 伽马分布

    伽马函数:


    伽玛函数是阶乘在实数上的泛化。

    伽马分布的概率密度函数:

    x<-seq(0,10,length.out=100)
    y<-dgamma(x,1,2)
    
    
    plot(x,y,col="red",xlim=c(0,10),ylim=c(0,2),type='l',
         xaxs="i", yaxs="i",ylab='density',xlab='',
         main="The Gamma Density Distribution")
    
    
    lines(x,dgamma(x,2,2),col="green")
    lines(x,dgamma(x,3,2),col="blue")
    lines(x,dgamma(x,5,1),col="orange")
    lines(x,dgamma(x,9,1),col="black")


     

    beta 贝塔分布

    Beta分布的一个重要应该是作为伯努利分布和二项式分布的共轭先验分布出现。在机器学习和数理统计学中有重要应用。

    该分布有两个參数,αβ (α,β>0).

    x<-seq(-5,5,length.out=10000)
    y<-dbeta(x,0.5,0.5)
     
    plot(x,y,col="red",xlim=c(0,1),ylim=c(0,6),type='l',
        xaxs="i", yaxs="i",ylab='density',xlab='',
        main="The Beta Density Distribution")
     
    lines(x,dbeta(x,5,1),col="green")
    lines(x,dbeta(x,1,3),col="blue")
    lines(x,dbeta(x,2,2),col="orange")
    lines(x,dbeta(x,2,5),col="black")
    legend("top",legend=paste("a=",c(.5,5,1,2,2),"b=",c(.5,1,3,2,5)),lwd=1,col=c("red","green","blue","orange","black"))


     

    流程控制语句

    分支语句

    if else:

    a < 5
    if(a>10){
    print('a>10')
    } else if(a<10){
    print('a<10')
    } else{
    print('a=10')
    }


    switch 分支语句:

    case <- 4

    switch(case,’低异常点’,’偏低’,’正常’,’偏高’,’高异常点’)

    偏高

    for 循环:

    web.pv <- c(sample(100:5000,30))
    web.day <-seq(as.Date('2015-01-01'),by=1,length=30)
    web.data <- data.frame(web.day,web.pv)
    for(item inweb.data$web.pv){print(paste(web.data$web.day[which(web.data$web.pv ==item)],'',item))}


    while 循环:

    while(i <length(web.pv)){print(web.pv[i]) ;i = i + 1} ;i=0

    函数

    定义一个函数表达式: y=a*x + b,然后我们还画出函数轨迹图:

    demo.fun1 <- function(x,a,b) {
     return(a * x + b)
    }
     
    a=3
    b=7
    y <- demo.fun1(x,a,b)
    df <- data.frame(x,y)
     
    g<-ggplot(df,aes(x,y)) 
    g <- g + geom_line(col='red') # 一次方程曲线
    g <- g + geom_hline(yintercept=0) +geom_vline(yintercept=0) #设置坐标轴
    g <- g + ggtitle(paste('y=',a,' * x+',b)) # 加入标题
    g


     

    定义一个多次方程函数:

    demo.fun3 <- function(x,a,b,c,d){
     return(a * x^3 + b * x^2 + c * x +d)
    }
     
    a=1
    b=5
    c=6
    d=-10
    x <- seq(-5,5,by=0.01)
    y <- demo.fun3(x,a,b,c,d)
    df <- data.frame(x,y)
    g <- ggplot(df,aes(x,y))
    g <- g + geom_line(col='green') #三次曲线
    g <- g + geom_hline(yintercept=0) + geom_vline(yintercept=0) #设置坐标轴
    g <- g + ggtitle(paste('y=',a,' *x^3 +',b,'*x^2 +',c,'* x +',d)) # 加入标题
    g


     

  • 相关阅读:
    ReentrantLock(重入锁)的源码解析
    vue项目使用vue-photo-preview插件实现点击图片放大预览和移动
    BOM简单总结
    js中属性类型:数据属性与访问器属性
    Javascript面向对象编程(三):非构造函数的继承(对象的深拷贝与浅拷贝)
    Javascript面向对象编程(二):构造函数的继承 作者:yuan一峰
    Javascript 面向对象编程(一):封装 作者:yuan一峰
    js面向对象、创建对象的工厂模式、构造函数模式、原型链模式
    Vue中父子组件执行的先后顺序
    Vue子组件调用父组件的方法
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6761472.html
Copyright © 2011-2022 走看看