精华内容
下载资源
问答
  • R语言密度

    2021-01-07 14:01:49
    核密度图 ...核密度估计(kernel density estimation)是在概率论中用来估计未知的密度函数,属于非参数检验方法之一,由Rosenblatt (1955)和Emanuel Parzen (1962)提出,又名Parzen窗(Parzen windo
  • 一份文件是介绍用R语言中如何利用核函数估计密度函数及其各阶导数的方法,是比较新的文献,2015年的,里面介绍了7种窗宽的确定方法以及R程序
  • 估计概率密度函数——R语言学习笔记 参数法 正态分布 方法1: fit.normal <- fitdist(data_tmp$VE,"norm") summary(fit.normal) 方法2: fit.normal_b<-Bnormal(data_tmp$VE, priors=list(muMean=13.651040, ...

    估计概率密度函数

    一、参数法

    1、正态分布

    方法1:

    fit.normal <- fitdist(data_tmp$VE,"norm")
    summary(fit.normal)
    

    方法2:

    fit.normal_b<-Bnormal(data_tmp$VE, priors=list(muMean=13.651040, muSD=3.998584))
    summary(fit.normal_b)
    

    2、伽马分布

    方法1:

    fit.gamma <- fitdist(data_tmp$VA, distr = "gamma", method = "mle")
    summary(fit.gamma)
    

    方法2:

    mcmc <- function(y, iter, sigma.rw, lambda.alpha, lambda.beta, nu.alpha, nu.beta) {
      
      # find n from the data (ie the number of observations)
      n <- length(y)
      
      # compute the sum of the observations and the sum of the log of the observations
      sum.y <- sum(y)
      sum.log.y <- sum(log(y))
      
      # first create a table which will store the samples; first column will be alpha, second will be beta
      out <- matrix(NA, nrow=iter, ncol=2)
      
      # initial values
      alpha.cur <- 1
      beta.cur <- 1
      out[1,] <- c(alpha.cur, beta.cur)
      
      # mcmc loop starts here
      for (i in 2:iter) {
        
        ###############
        # update alpha (assume beta is fixed)
        ###############
        
        # propose a new value for alpha
        alpha.can <- rnorm(1, alpha.cur, sigma.rw)
        
        # if it is negative reject straight away else compute the M-H ratio
        if (alpha.can > 0) {
          
          # evaluate the loglikelihood at the current values of alpha.
          loglik.cur <- n*alpha.cur*log(beta.cur) - n*lgamma(alpha.cur) + (alpha.cur-1)*sum.log.y 
          
          # compute the log-likelihood at the candidate value of alpha
          loglik.can <- n*alpha.can*log(beta.cur) - n*lgamma(alpha.can) + (alpha.can-1)*sum.log.y 
          
          
          # log prior densities
          log.prior.alpha.cur <- log.gamma.density(alpha.cur, lambda.alpha, nu.alpha)
          log.prior.alpha.can <- log.gamma.density(alpha.can, lambda.alpha, nu.alpha)
          
          logpi.cur <- loglik.cur + log.prior.alpha.cur
          logpi.can <- loglik.can + log.prior.alpha.can
          
          # M-H ratio
          
          # draw from a U(0,1)
          u <- runif(1)
          
          if (log(u) < logpi.can - logpi.cur) {
            alpha.cur <- alpha.can
          }
        }
        
        ###############
        # update beta
        ###############
        
        beta.cur <- rgamma(1, alpha.cur*n + lambda.beta, rate = sum.y + nu.beta)  
        
        # store the samples
        out[i,] <- c(alpha.cur, beta.cur)
        
      }
      
      return(out)
    }
    res <- mcmc(y = data_tmp$VA, iter = 10000, sigma.rw = 1, lambda.alpha = 1, lambda.beta = 1, nu.alpha = 1e-4, nu.beta = 1e-4)
    res <- res[-c(1:1000),]
    mean(res[,1])
    mean(res[,2])
    sd(res[,1])
    sd(res[,2])
    

    3、贝塔分布

    方法1:

    fit.beta <- fitdist(data_tmp$VA, distr = "beta", method="mle")
    summary(fit.beta)
    

    方法2:

    library("LearnBayes")
    library(Lahman)
    findBeta <- function(quantile1,quantile2,quantile3)
    {
      # find the quantiles specified by quantile1 and quantile2 and quantile3
      quantile1_p <- quantile1[[1]]; quantile1_q <- quantile1[[2]]
      quantile2_p <- quantile2[[1]]; quantile2_q <- quantile2[[2]]
      quantile3_p <- quantile3[[1]]; quantile3_q <- quantile3[[2]]
      
      # find the beta prior using quantile1 and quantile2
      priorA <- beta.select(quantile1,quantile2)
      priorA_a <- priorA[1]; priorA_b <- priorA[2]
      
      # find the beta prior using quantile1 and quantile3
      priorB <- beta.select(quantile1,quantile3)
      priorB_a <- priorB[1]; priorB_b <- priorB[2]
      
      # find the best possible beta prior
      diff_a <- abs(priorA_a - priorB_a); diff_b <- abs(priorB_b - priorB_b)
      step_a <- diff_a / 100; step_b <- diff_b / 100
      if (priorA_a < priorB_a) { start_a <- priorA_a; end_a <- priorB_a }
      else                     { start_a <- priorB_a; end_a <- priorA_a }
      if (priorA_b < priorB_b) { start_b <- priorA_b; end_b <- priorB_b }
      else                     { start_b <- priorB_b; end_b <- priorA_b }
      steps_a <- seq(from=start_a, to=end_a, length.out=1000)
      steps_b <- seq(from=start_b, to=end_b, length.out=1000)
      max_error <- 10000000000000000000
      best_a <- 0; best_b <- 0
      for (a in steps_a)
      {
        for (b in steps_b)
        {
          # priorC is beta(a,b)
          # find the quantile1_q, quantile2_q, quantile3_q quantiles of priorC:
          priorC_q1 <- qbeta(c(quantile1_p), a, b)
          priorC_q2 <- qbeta(c(quantile2_p), a, b)
          priorC_q3 <- qbeta(c(quantile3_p), a, b)
          priorC_error <- abs(priorC_q1-quantile1_q) +
            abs(priorC_q2-quantile2_q) +
            abs(priorC_q3-quantile3_q)
          if (priorC_error < max_error)
          {
            max_error <- priorC_error; best_a <- a; best_b <- b
          }
        }
      }
      print(paste("The best beta prior has a=",best_a,"b=",best_b))
    }
    quantile1 <- list(p=0.5, x=median(data_tmp$VA)) 
    x1<-quantile(data_tmp$VA,probs = 0.8)
    x2<-quantile(data_tmp$VA,probs = 0.2)
    quantile2 <- list(p=0.8,x=x1) 
    quantile3 <- list(p=0.2,x=x2)
    findBeta(quantile1,quantile2,quantile3)
    

    二、非参数法

    1、直方图法

    a1<-ggplot(data_tmp, aes(x=VA)) + 
      geom_histogram(binwidth=0.005,aes(y=..density..),colour="black",fill="white")+
      geom_density(alpha=.3,col='red') +
      theme_classic()+
      annotate('text', x = 0.8, y = 8, 
               label = "Delta ==0.005 ",parse = TRUE,size=4) 
    a2<-ggplot(data_tmp, aes(x=VA)) + 
     geom_histogram(binwidth=0.02,aes(y=..density..),colour="black",fill="white")+
      geom_density(alpha=.3,col='red') +
      theme_classic()+
      annotate('text', x = 0.8, y = 3.8, 
               label = "Delta ==0.02 ",parse = TRUE,size=4) 
    a3<-ggplot(data_tmp, aes(x=VA)) + 
      geom_histogram(binwidth=0.15,aes(y=..density..),colour="black",fill="white")+
      geom_density(alpha=.3,col='red') +
      theme_classic()+
      annotate('text', x = 0.8, y = 3.8, 
               label = "Delta ==0.15 ",parse = TRUE,size=4)   
    abc<-grid.arrange(a1,a2,a3,
                      ncol=1,nrow=3,
                      as.table=TRUE)                  
    

    左边半个图
    只画下左边半个图

    2、Kernel

    png(file = "kernel.png",width = 1080, height = 1080, units = "px")
    par(mfrow=c(1,2))
    plot(density(data_tmp$VA,bw = 0.005, kernel = "gaussian"),col="red",main="Kernel Estimation",xlab="VA")
    lines(density(data_tmp$VA,bw = 0.01, kernel = "gaussian"),col="blue")
    lines(density(data_tmp$VA,bw = 0.05, kernel = "gaussian"),col="green")
    rug(data_tmp$VA)
    legend("topright", legend=c("bw=0.005", "bw=0.01","bw=0.05"),
           col=c("red", "blue","green"), lty=1:1, cex=0.7)
    

    左边半个图
    只画下左边半个图

    3、KNN

    library( basicTrendline)
    dk_a=function(A,x,k){
      na=nrow(A)
      or=1:na
      dis=NULL
      for(i in 1:na)
      {dis=c(dis,(abs(x-A[i,279])))}
      disnew=sort(dis)
      dk=disnew[k]
      return(dk)
    }
    knear_a=function(A,x,k){
      knear=c()
      for(i in 1:nrow(A)){
        knear[i]=(k-1)/(2*nrow(A)*dk_a(A,x[i],k))}
      knear}
    set.seed(123)
    data_k<-data_tmp[sample(1:nrow(data_tmp),5000),]
    VA<-sort(data_k$VA)
    k1<-knear_a(data_k,VA,100)
    k2<-knear_a(data_k,VA,500)
    k3<-knear_a(data_k,VA,800)
    k4<-knear_a(data_k,VA,1000)
    par(mfrow=c(2,2))
    plot(VA,k1,type="l",xlab="VA",ylab="Density",main='k=100')
    plot(VA,k2,type="l",xlab="VA",ylab="Density",main='k=500')
    plot(VA,k3,type="l",xlab="VA",ylab="Density",main='k=800')
    plot(VA,k4,type="l",xlab="VA",ylab="Density",main='k=1000')
    

    在这里插入图片描述

    展开全文
  • R语言入门——画密度曲线

    千次阅读 2020-10-14 22:54:20
    给出下面得密度函数, 得出下面得密度图: 任务说明 给出相应得密度函数,还原上述图片,并给出置信区间。 1、案例 1.1代码 1.1.1包的载入以及密度函数的书写 library(ggplot2) # 载入包 fun <- function(Theta...

    0引言

    给出下面得密度函数,
    在这里插入图片描述
    得出下面得密度图:
    在这里插入图片描述

    任务说明

    给出相应得密度函数,还原上述图片,并给出置信区间。

    1、案例

    1.1代码

    1.1.1包的载入以及密度函数的书写

    library(ggplot2)  # 载入包
    fun <- function(Thetahat, Theta = 0.5, n = 22){
      k = "/"("*"(
                 (n-2)*((1-Theta^2)^((n-1)/2)),
                 (1-Thetahat^2)^((n-4)/2)
                 ),pi
             )
      f <- function(w) "/"(1,(cosh(w)-Theta*Thetahat)^(n-1))
      Int <- integrate(f,0,Inf)
      return(k*Int$val)
    }
    

    1.1.2 密度函数向量化

    Gfun <- function(f = fun, x = x, Theta = 0.5){
      n = length(x)
      y = c()
      for(i in 1:n){
        y <- c(y,fun(Thetahat = x[i], Theta = Theta))
      }
      return(y)
    }
    

    1.2.3 置信区间的选取

    SelDDa <- function(x){
      n = length(x);X = cumsum(x)
      d = n - sum(X > cumsum(x)[n]*0.025)
      u = sum(X > cumsum(x)[n]*0.975)
      x[c(1:d,(n-u+1):n)] = 0
      return(x)
    }
    

    1.2.4数据的构造

    x <- seq(-1,1,0.001)
    y_0 <- Gfun(f = fun, x = x, Theta = 0)
    y_0.5 <- Gfun(f = fun, x = x, Theta = 0.5)
    y_f0.5 <- Gfun(f = fun, x = x, Theta = -0.5)
    p = length(x)
    Data <- data.frame(x = rep(x,3),
        y = c(y_0,y_0.5,y_f0.5),
        z = factor(rep(c(0,0.5,-0.5),each = p)),
        y0 = c(rep(0,p),SelDDa(y_0.5),rep(0,p)),
        y1 = c(SelDDa(y_0),rep(0,p),rep(0,p)),
        y2 = c(rep(0,p),rep(0,p),SelDDa(y_f0.5)))
    

    1.2.5 画图

    P <- qplot(x, y, col = z, facets = z ~ ., data = Data,
    xlab = expression(hat(theta)),ylab = expression(f[theta](hat(theta))),
    show.legend = F)
    P + geom_ribbon(aes(ymin = 0, ymax = y0),
    show.legend = F,alpha=0.3,
    fill = c("blue")) + geom_ribbon(aes(ymin = 0, ymax = y1),
    show.legend = F,alpha=0.3,
    fill = c("green")) + geom_ribbon(aes(ymin = 0, ymax = y2),
    show.legend = F,alpha=0.3,
    fill = c("red")) +
     geom_vline(xintercept=c(0.5), linetype="dotted", size = 1)
    

    1.2图片

    在这里插入图片描述

    2、小结

    通过本文你可以学到ggplot的一些画图操作:在图中添加希腊字母、公式添加垂直虚线用颜色填充面积去除默认图例等。
    在生成数据时,你可以学会构造画图所需数据类型通过数据求分位数使用R语言对一元函数进行求定积分等操作。
    大家有更好的方法以及想法,欢迎评论区留言。

    展开全文
  • dnorm(0) #f(0)概率密度值 rnorm(111) #产生符合正态分布的111个随机数 ##泊松分布 Possion(x,λ) dpois(2,0.9) #等同概率密度 dpois(2.1,0.9) #x一定需要整数 ppois(2.1,0.9) #分布概率,取2.1的最小整数 其他...



    1、常见概率分布


    ##正态分布
    pnorm(1.96)                #P(x<=1.96)时的分布概率
    pnorm(1.96,0,1)            #上同
    pnorm(1.96,lower.tail = F) #P(x>1.96)注意与pnorm的区别
    qnorm(0.975)               #已知分布概率求x值
    dnorm(0)                   #f(0)概率密度值
    rnorm(111)                 #产生符合正态分布的111个随机数
    
    
    ##泊松分布 Possion(x,λ)
    dpois(2,0.9)      #等同概率密度
    dpois(2.1,0.9)    #x一定需要整数
    ppois(2.1,0.9)    #分布概率,取2.1的最小整数

    其他一些分布函数:





       

    一个利用概率分布解决问题的例子

    1.  某人进行射击,每次击中目标的命中率为0.02,独立射击400次,求至少击中两次的概率。

    解:400重伯努利试验,用二项分布求解。


    P{X = k} = C400k * (0.02)^k * (0.0=98)^(400-k)

    P{X2} = 1 – P{X = 0} - P{X = 1}

    > 1 - sum(pbinom(0:1, 400, 0.02))
    [1] 0.9968561


    2、根据分布产生随机数

    均匀分布、正态分布是比较常见的产生随机数的分布

    > runif(10)
     [1] 0.961465376 0.007521925 0.193619234 0.137027246 0.739370654 0.072907082
     [7] 0.674551635 0.650777811 0.984664183 0.796723066

    显著性水平为 5% 的正态分布的双侧临界值是:

    > qnorm(0.025)
    [1] -1.959964
    > qnorm(0.975)
    [1] 1.959964


    随机数中产生的问题

    问:set.seed设置了种子,但是每次产生的随机数还是不同? 


    解答:set.seed()只对运行该命令后的第一次随机产生结果有效。

    [plain]  view plain  copy
     print ? 在CODE上查看代码片 派生到我的代码片
    1. > set.seed(13)  
    2. > rnorm(10)  
    3.  [1]  0.5543269 -0.2802719  1.7751634  0.1873201  1.1425261  0.4155261  
    4.  [7]  1.2295066  0.2366797 -0.3653828  1.1051443  
    5. > set.seed(13)  
    6. > rnorm(10)  
    7.  [1]  0.5543269 -0.2802719  1.7751634  0.1873201  1.1425261  0.4155261  
    8.  [7]  1.2295066  0.2366797 -0.3653828  1.1051443  
    9. >   

    要得到相同的随机数,还得再“重写”一遍
    set seed(123)
    rnorm()

    这样,每次得到的随机数就一样。


    ——————————————————————————————————

    应用一:rep()和replicate()批量取随机数

    来源公众号:砍柴问樵夫

    问题:假设我想从符合正态分布的数据集中随机抽取2个数据,排序, 这样的数据我需要10对,你会怎么做?


    很多人都会想到用rep()这个函数,我们来试试。

    rep(sort(sample(rnorm(n=100,mean = 0,sd = 1),2)),10)


    结果文件:

    > rep(sort(sample(rnorm(n=100,mean = 0,sd = 1),2)),10)
     [1] 0.1188322 0.3224045 0.1188322 0.3224045 0.1188322 0.3224045 0.1188322
     [8] 0.3224045 0.1188322 0.3224045 0.1188322 0.3224045 0.1188322 0.3224045
    [15] 0.1188322 0.3224045 0.1188322 0.3224045 0.1188322 0.3224045


    很明显不符合我们的要求。

    该怎么解决呢?

    replicate()函数可以实现,具体如下:

    replicate(n=10,expr=sort(sample(rnorm(n=100,mean = 0,sd = 1),2)))


    结果文件:

                [,1]       [,2]      [,3]       [,4]      [,5]       [,6]
    [1,] -0.72719296 -0.9876203 -2.212692 -0.8753055 0.2981434 -1.2255357
    [2,] -0.02896154  0.9458406  1.511990  1.9813026 1.2695440 -0.2565482
                [,7]       [,8]       [,9]    [,10]
    [1,] -0.21979065 -0.6226580 -0.2889041 0.566944
    [2,]  0.09309426  0.4599596  0.5187426 1.602581


    大家应该注意到:rep()返回的是向量,replicate()返回的是矩阵。

    下面列出两个函数的用法:

    rep():

    rep(x, ...)

    rep.int(x, times) #每个元素重复次数

    rep_len(x, length.out) #生成向量长度


    replicate(),replicate(n, expr, simplify = "array") #随机数生成器





    展开全文
  • r语言密度图You can create a density plot in R using ggplot2. For plotting using ggplot2, you have to use the function geom_density(). Let’s see how it works in this tutorial. 您可以使用ggplot2在R...

    r语言中 密度图

    You can create a density plot in R using ggplot2. For plotting using ggplot2, you have to use the function geom_density(). Let’s see how it works in this tutorial.

    您可以使用ggplot2在R中创建密度图。 要使用ggplot2进行绘图,必须使用函数geom_density()。 让我们看看它在本教程中是如何工作的。

    什么是密度图? (What is a Density plot?)

    Density plots, also known as Kernel density plots, they’re are used to understand the distribution of data. It is considered as an effective way to present the variable distribution over the given time period. The density plot’s peak gives the data of concentrated values over the time period.

    密度图,也称为内核密度图 ,用于了解数据的分布。 被认为是呈现给定时间段内变量分布的有效方法。 密度图的峰值给出了一段时间内的集中值数据。

    You can either create a density plot in basic R or by using ggplot as mentioned above.

    您可以在基本R中创建密度图,也可以如上所述使用ggplot创建密度图。



    密度图相对于直方图的优势 (Advantages of Density plots over Histograms)

    • Density plots are better than histograms, as they can determine the distribution shape effectively.

      密度图比直方图更好,因为它们可以有效地确定分布形状。
    • Unlike histograms, density plots are not affected by bins.

      与直方图不同,密度图不受容器影响。
    • It gives a clear visualization of the data distribution over a time period.

      它可以清晰显示一段时间内的数据分布。

    There are many types of density plots are available to plot in R. All of them are used based on various problems and requirements.

    在R中可以绘制多种类型的密度图。根据各种问题和要求使用所有密度图。

    Let’s roll into the topics and we can plot all types of density plots in R

    让我们进入主题,我们可以在R中绘制所有类型的密度图



    在R中使用ggplot2的基本密度图 (Basic density plot using ggplot2 in R)

    In this section we are creating a basic density plot using ggplot2 in R. For this purpose, we will import a pricing data file. After that, we will plot the density plot for the values present in that file.

    在本节中,我们将使用R中的ggplot2创建基本密度图。为此,我们将导入定价数据文件。 之后,我们将绘制该文件中存在的值的密度图。

    You can download the sample files used in this tutorial from this link.
    Sources: Iris dataset, Google play store apps dataset

    您可以从此链接下载本教程中使用的示例文件。
    来源虹膜数据集Google Play商店应用数据集

    Execute the below code to create a simple density plot in Rstudio.

    执行以下代码以在Rstudio中创建一个简单的密度图。

    
    library(ggplot2)               #imports ggplot2
    library(dplyr)                 #imports dplyr
    
    #loads the data from the .txt file with header true. 
    data <- read.table("price.txt", header=TRUE)
     
    #creating the density plot 
    data %>%
    +     filter( Dollars<400 ) %>%
    +     ggplot( aes(x=Dollars)) +
    +     geom_density(fill="#4D9DDA", color="#4D9DDA", alpha=0.8)
    
    
    Density Plot in R
    Density Plot in R
    R中的密度图

    Now we will try to add a title to our density plot. Execute the below code to create a density plot with a suitable title.

    现在,我们将尝试为密度图添加标题。 执行以下代码以创建具有合适标题的密度图。

    
    library(ggplot2)               #imports ggplot2
    library(dplyr)                 #imports dplyr
     
    #loads the data from the .txt file with header true. 
    data <- read.table("price.txt", header=TRUE)
     
    #creating the density plot 
    data %>%
    +     filter( Dollars<400 ) %>%
    +     ggplot( aes(x=Dollars)) +
    +     geom_density(fill="#4D9DDA", color="#4D9DDA", alpha=0.8)+
    +    ggtitle("State wise population distribution in the USA")+theme_ipsum()
    
    
    density plot in r

    hrbrtheme: hrbrthemes is an additional theme package in ggplot2 which mainly concentrates on typography in the plots.

    hrbrtheme: hrbrthemes是ggplot2中的另一个主题包,主要集中于情节中的版式。



    使用ggplot2在R中的镜像密度图 (The Mirror density plots in R using ggplot2)

    As you know that the density plots are the representation of the distribution of the values. The mirror density plots are used to compare the 2 different plots.

    如您所知,密度图是值分布的表示。 镜面密度图用于比较两个不同的图。

    The exactly opposite or mirror plot of the values will make comparison very easy and efficient. For creating this mirror density plot using ggplot2, we use geom_density function.

    值的完全相反或镜像绘制将使比较非常容易和有效。 为了使用ggplot2创建此镜像密度图,我们使用geom_density函数。

    To plot the mirror density plot, execute the below code in Rstudio.

    要绘制反射镜密度图,请在Rstudio中执行以下代码。

    
    library(ggplot2)       #importing library ggplot2
    library(hrbrthemes)    #importing library hrbrthemes
    
    
    #sample data taken for plotting
    data <- data.frame(data1 = rnorm(1000),data2 = rnorm(1000, mean=2))
    
    p <- ggplot(data, aes(x=x))+
     
    #top portion plot 
    geom_density( aes(x = data1, y = ..density..), fill="#D2CE12" ) +
    geom_label( aes(x=6, y=0.20, label="data1"), color="#1EAEC2") +
     
    #bottom portion plot
    geom_density( aes(x = data2, y = -..density..), fill= "#66B32D") +
    geom_label( aes(x=6, y=-0.20, label="data2"), color="#1EAEC2") +
    theme_ipsum() +
    xlab("x values")
    
    
    mirror density plot in r


    使用ggplot2在R中的多个密度图 (Multiple Density plots in R using ggplot2)

    Multiple density plots: These are the plots that use multiple variables and multiple fills to create a graph, which shows the distribution of values.

    多个密度图:这些图使用多个变量和多个填充来创建图形,以显示值的分布

    In this section, we are going to create multiple density plots using ggplot2. In this plot, we are using the google play store data which is available in Kaggle.

    在本节中,我们将使用ggplot2创建多个密度图。 在此图中,我们使用的是Kaggle中提供的Google Play商店数据。

    We are plotting the graph using the Content Rating and Numbers data.

    我们正在使用“ 内容分级数字”数据绘制图表。

    Execute the below code to create the multiple density plot in R studio.

    执行以下代码以在R studio中创建多重密度图。

    
    library(ggplot2)     #imports library ggplot2
    library(hrbrthemes)  #imports library hrbrthemes
    library(dplyr)       #imports the dplyr function
    Library (tidyr)      #imports the tidyverse package
    library(viridis)     #imports the library viridis
     
    readfile<-read.csv("googleplaystore.csv")  #reads the data
     
    x1 <- ggplot(googleplaystore, aes(x=Number, group=Content.Rating, fill=Content.Rating))+
    geom_density(adjust=1)+         #plots the density graph
    theme_ipsum()
    x1
    
    density plot in r


    使用facet_wrap()函数创建小倍数 (Creating Small Multiples using facet_wrap() function )

    This small multiples of the density plot will help us to understand the distribution of each variable. The individual plots will help us to compare the different variable distribution as they lie on the same axis.

    密度图的这个小倍数将帮助我们理解每个变量的分布。 各个图将帮助我们比较位于同一轴上的不同变量分布。

    For this purpose we are using facet_wrap() function.

    为此,我们使用facet_wrap()函数。

    To create the small multiples of the density plot, execute the below code in Rstudio.

    要创建密度图的较小倍数,请在Rstudio中执行以下代码。

    
    readfile <- read.csv("googleplaystore.csv")   #reads the file
    ggplot(data=readfile, aes(x=Number, group=Content.Rating, fill=Content.Rating)) +
         geom_density(adjust=2) +
         theme_ipsum() +
         facet_wrap(~Content.Rating) +    #creates the small multiples
         theme(
             legend.position="none",
             panel.spacing = unit(0.2, "lines"),
             axis.ticks.x=element_blank()
         )
    
    multiple density plots in r


    使用ggplot2在R中的堆积密度图 (Stacked density plots in R using ggplot2)

    The stacking density plot is the plot which shows the most frequent data for the given value. But the disadvantage of the stacked plot is that it does not clearly show the distribution of the data.

    堆积密度图是显示给定值最频繁数据的图。 但是堆积图的缺点是它不能清楚地显示数据的分布。

    Here we are creating a stacked density plot using the google play store data.

    在这里,我们使用Google Play商店数据创建堆积密度图。

    Execute the below code to create the stacked density plot in R studio.

    执行以下代码以在R studio中创建堆积密度图。

    
    readfile <- read.csv("googleplaystore.csv")   #reads the data
    plt <- ggplot(data=readfile, aes(x=Number, group=Content.Rating, fill=Content.Rating)) +
         geom_density(adjust=1.5, position="fill") +
         theme_ipsum()
     
    plt   #displays the plot
    
    stacked density plot in R


    使用ggplot2在R中的2D密度图 (2D Density plots in R using ggplot2)

    R offers the function geom_density2d() to plot the two dimensional density plots. 2D graphs are visually appealing in nature and can communiacte the insights in an effective manner .

    R提供函数geom_density2d()来绘制二维密度图。 2D图形本质上在视觉上很吸引人,并且可以有效地交流见解。

    For this purpose we are using the iris flower dataset which is available in the kaggle webiste. Lets plot the density plot for sepal length and with varibales.

    为此,我们使用kaggle网站中提供的鸢尾花数据集。 让我们绘制出萼片长度和方差的密度图。

    Execute the below code to create a 2D density plot in R studio.

    执行以下代码以在R studio中创建2D密度图。

    
    library(ggplot2)
    
    #reads the iris flower data
    readfile <- read.csv("Iris.csv")
    View(readfile)
    
    #marks the x and y axis values 
    x <- ggplot(data=readfile, aes(x=SepalLength.Cm, y=SpealWidth.Cm))
    View(x)
    
    #generated the 2D density plot
    x+stat_density2d()+geom_point()
    
    #create an appealing 2D plot
    values+stat_density2d(aes(fill=..density..), geom='raster',contour=FALSE)
    values+stat_density2d(aes(fill=..density..), geom='tile',contour=FALSE)+geom_point(color='white')
    
    #shows the density points in the plot
    densitypoints <- values+stat_density2d(aes(fill=..density..), geom='tile',contour=FALSE)+geom_point(color='white')
    
    #creates the x and y labels 
    densitypoints+xlab('Sepal length')+ylab('Sepal width')
    
    
    
    

    The iris flower data is shown below.

    鸢尾花数据如下所示。

    iris flower data

    The 2-Dimensional density plot of the values present in iris flower data.

    鸢尾花数据中存在的值的二维密度图。

    2d density plot in r


    结论 (Conclusion)

    R is one of the best visualization heavy language. In this tutorial, we have gone through the density plots, its benefits and we have plotted the density plots using ggplot2.

    R是最好的可视化繁重语言之一。 在本教程中,我们详细介绍了密度图及其优点,并使用ggplot2绘制了密度图。

    There are many types of density plots in R. We have plotted basic density plots with x and y labels, mirror density plots, multi-density plots, stacked density plots and finally we have plotted the 2-dimensional density plot using the iris dataset.

    R中有很多类型的密度图。我们已经绘制了带有x和y标签的 基本密度图镜面密度图多密度图,堆积密度图 ,最后我们使用虹膜数据集绘制了二维密度图

    R offers great libraries and functions to create visually appealing graphs for any purpose. That’s all for now. Learn more…Practice more and stay connected for more R tutorials. Keep learning!!!

    R提供了出色的库和函数 ,可以为任何目的创建吸引人的图形 。 目前为止就这样了。 了解更多…更多实践,并保持联系以获取更多R教程。 保持学习!!!

    翻译自: https://www.journaldev.com/38367/density-plot-in-r

    r语言中 密度图

    展开全文
  • R语言密度函数加阴影 首先绘制密度函数,然后调用polygon函数为区域填充阴影来创建图。函数polygon会绘制一连串线围绕明亮区域并填充他。 首先,绘制密度图,以正态分布为例: x <- seq(from = -5, to = +5, ...
  • R语言作图——density plot(密度图)

    万次阅读 多人点赞 2018-10-09 13:22:57
    首先还是要把你想要绘图的数据调整成R语言可以识别的格式excel中保存成csv格式。 数据的格式如下图:一列表示一种变量,第一行是列名 Step2. 绘图数据的读取 data&amp;lt;-read.csv(“your...
  • 概率密度函数 分布概率密度函数(PDF)。 随机变量的(PDF)为 其中sigma是比例参数。 安装 $ npm install distributions-rayleigh-pdf 要在浏览器中使用,请使用 。 用法 var pdf = require ( 'distributions-...
  • 但是,关于逆变量法还有一种应用,就是根据密度函数生成随机变量。 我们以下面的密度函数为例子: f(x)=52∗e[−52(x−2)],x≥2 f(x)=\frac{5}{2}*e[-\frac{5}{2}(x-2)] , x\geq 2 f(x)=25​∗e[−25​(x−2)],x≥2 ...
  • 假设概率密度函数为: 思路: 首先产生-1到1之间的均匀分布随机数x,和0到1之间的均匀分布随机数y。 如果y<f(x),则x是符合该概率密度的随机数,否则,重复上述操作。 用r语言生成100个随机数程序如下:...
  • R语言密度估计

    千次阅读 2020-03-11 09:39:59
    核密度估计是在概率论中用来估计未知的密度函数,属于非参数检验方法之一,由Rosenblatt (1955)和Emanuel Parzen(1962)提出,又名Parzen窗(Parzen window)。 假设我们有n个数X1-Xn,我们要计算某一个数X的概率密度...
  • R语言中的概率密度以及分布函数 在R中,概率函数形如: 其第一个字母表示其所指分布的某一方面: d Density的缩写,表示密度函数。举个例子,标准正态分布x=0对应的值可以用dnorm(0)计算 p Probability的缩写...
  • R语言可视化——分段函数

    千次阅读 2021-01-11 20:12:10
    大家都知道curve函数可以在R语言里画曲线图,但是如果我们拿到的是分段函数的时候该怎么办呢。今天就以为下面的分段函数为例子为大家做个实例,共同学习。 代码 fun1 <- function(x){ x^2 } fun2 <- ...
  • 密度函数 与柱状图类似,可以使用核密度函数: df.plot.kde(subplots=True,figsize=(5,9)) 它给出了与柱状图相似的结果。必须在这里指定一个图形大小,否则图形会在垂直方向上被压得太厉害。 此外,还将subplots...
  • R:多元正态密度函数计算

    千次阅读 2020-03-18 17:00:21
    R中计算多元正态密度函数可以使用mvtnorm包中的dmvnorm函数。 dvnorm(x,mu,sigma,log=T/F) x为服从多元正态分布的随机向量 mu和sigma分别为多元正态均值和协方差阵(可以是对角阵或者非对角阵) log=T时,对密度取...
  • 直方图、概率密度图、散点图、箱线图函数和表示。 直方图 概率密度图 散点图 箱线图
  • R中主要的循环函数(loop functions)有 lapply( )、sapply( )、apply( )、tapply( ) 和 mapply( )。lapply( )lapply( )对列表中每个元素,包括各种类型的对象(向量、矩阵、数据框等),运用函数,返回一个新的列表。...
  • R语言常用函数整理

    千次阅读 2020-10-21 08:45:43
    R语言基础函数整理 R语言常用函数整理本篇是基础篇,即R语言自带的函数。 一、数据管理 vector:向量 numeric:数值型向量 logical:逻辑型向量 character;字符型向量 list:列表 data.frame:数据框 c:连接为...
  • csl("C:/Users/Administrator/Documents/R/xhdsjsjkshzn/birth-rate.csv") 字段表头: Country X2008 去除X2008列中数据缺失代码: csl2008$X2008[!is.na(csl$X2008)] 求取坐标点为绘制密度图做准备: zbd2008...
  • R语言 barplot函数基本用法

    千次阅读 2020-10-10 11:26:29
    R语言的基础包中可以使用barplot()函数来绘制条形图。 R语言中barplot()函数的基本语法格式如下: barplot(height, names.arg = NULL, beside = FALSE, horiz = FALSE, density = NULL, angle = 45,
  • R语言绘制核密度图实战(Kernel Density Plot) 目录 R语言绘制核密度图实战(Kernel Density Plot) #仿真数据 #修改核密度图的标题和轴标签 # 多边形函数密度图着色 #为密度图添加均值竖线 #密度图和...
  • <p>r语言画二维正态分布概率密度曲线的代码是什么呀</p>
  • R语言:绘图函数

    千次阅读 2020-12-08 18:10:17
    plot()函数:是对R中的多种对象进行绘图的泛型函数。它会识别作图对象的类,从而根据这些类来调用相应的作图方法 plot(x, y, type, main, sub, xlab, ylab, xlim, ylim, pch, lty, lwd, col...) x, y: 各绘图点横...
  • R语言 pie函数用法

    千次阅读 2020-10-10 11:38:01
    R语言中绘制饼图的函数为pie,其使用格式如下: pie(x, labels = names(x), edges = 200, radius = 0.8,clockwise = FALSE, init.angle = if(clockwise) 90 else 0,density = NULL, angle = 45, col = NULL, ...
  • R语言绘图基础

    千人学习 2017-02-18 21:49:00
    介绍R语言的绘图基础,如固有颜色、RGB取色、主题调色板介绍,文字字体、颜色、大小等参数详解,点样式、颜色、大小等参数详解,线条样式、颜色、粗细等参数详解;详细介绍R低级绘图函数:标题、图例、坐标轴、网格...
  • 内容来源: http://lmdvr.r-forge.r-project.org/figures/figures.html 本文只是根据其代码作修改和加注释,希望能帮助大家学习R语言!!
  • 数据作图是数据分析的重要方法之一,R提供了丰富的作图函数R有两类作图函数,一类是高水平作图函数,另一类是低水平作图函数。 高水平作图函数:所有的绘图函数均可产生图形,可以有坐标轴,以及图和坐标轴的...
  • 导言:概率统计学了一个新名词,核密度估计;老师让用matlab画PDF图;无奈matlab 又贵又大;... 概率密度函数:一些随机变量X的取值是不可列举的,举个栗子:我24小时发火的次数,0-100000......随...
  • R语言有三种方式实现循环:(1)for循环、while循环(2)apply函数族(3)泛型函数map一. for循环、while循环首先作两点说明:(1)关于“for循环运行速度慢”的说法,实际上已经过时了,现在的R、Matlab等软件经过...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,360
精华内容 4,144
关键字:

r语言密度函数