Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么分位数类型与R中的3个百分位数定义相匹配_R_Types_Quantile_Percentile - Fatal编程技术网

什么分位数类型与R中的3个百分位数定义相匹配

什么分位数类型与R中的3个百分位数定义相匹配,r,types,quantile,percentile,R,Types,Quantile,Percentile,百分位数有3种定义: 最小数大于y个数的x% 大于或等于y数x%的最小数 1和2的百分位数加权平均值 哪个quantile()参数类型与这三个定义匹配?如果“四分位数”的意思是quantile():没有一个。其实没那么简单。正如您尝试时文档所述:help(分位数): Hyndman和Fan(1996)中讨论的九种分位数算法之一, 按类型选择,采用 该文件可在此处找到: 这本书值得一读,以了解让电脑做一些“直观”的事情需要做些什么:) 您可以通过尝试此操作并摆弄prbs的数字来了解分位数的行为:

百分位数有3种定义:

  • 最小数大于y个数的x%
  • 大于或等于y数x%的最小数
  • 1和2的百分位数加权平均值
  • 哪个
    quantile()
    参数
    类型
    与这三个定义匹配?

    如果“四分位数”的意思是
    quantile()
    :没有一个。其实没那么简单。正如您尝试时文档所述:
    help(分位数)

    Hyndman和Fan(1996)中讨论的九种分位数算法之一, 按类型选择,采用

    该文件可在此处找到:

    这本书值得一读,以了解让电脑做一些“直观”的事情需要做些什么:)

    您可以通过尝试此操作并摆弄
    prbs
    的数字来了解
    分位数的行为:

    aa <- 1: 10
    prbs <- c(0.2, 0.22, 0.29)
    
    for(typ in 1:9){
      this_line <- paste0("type=", typ)
      this_val <- paste0("qval=",quantile(aa, probs=prbs, type=typ))
      print(paste(this_line,this_val))
    }
    
    如果“四分位数”的意思是
    分位数()
    :没有。其实没那么简单。正如您尝试时文档所述:
    help(分位数)

    Hyndman和Fan(1996)中讨论的九种分位数算法之一, 按类型选择,采用

    该文件可在此处找到:

    这本书值得一读,以了解让电脑做一些“直观”的事情需要做些什么:)

    您可以通过尝试此操作并摆弄
    prbs
    的数字来了解
    分位数的行为:

    aa <- 1: 10
    prbs <- c(0.2, 0.22, 0.29)
    
    for(typ in 1:9){
      this_line <- paste0("type=", typ)
      this_val <- paste0("qval=",quantile(aa, probs=prbs, type=typ))
      print(paste(this_line,this_val))
    }
    

    为了得到答案,我生成了一个随机样本,使用相关性测试来找到三个定义的匹配项。这不是最优雅的代码,但是

    代码如下:

        #####  program  to test types
    ## generate 100 random samples of 100 numbers
    set.seed(3)
    x <- rnorm(100000,mean = 50, sd = 10)
    means <- replicate(100, sample(x, 100))
    
    #create answer matrix
    answers <- matrix(ncol=12)
    colnames(answers) <- (c("def1","def2","def3","q1","q2","q3","q4","q5","q6","q7","q8","q9"))
    
    
    printallper <- function(x,bar) {
      # get values for per calcs
      bar <- sort(bar)
      per <- (x/100)*(length(bar)+1)
      # get per1
      perres1 <<-round(bar[per+1],digits=2)
      # get per2
      perres2 <<-round(bar[per], digits=2)
    
      #get per3
      whole <- floor(per)
      dec <- per - whole
      low <- bar[per]
      high <- bar[per+1]
      final <- (dec * (high-low)) + bar[per]
      perres3 <<-round(final, digits=2)
      # q types
      q1 <- round(quantile(bar,(x/100), type = 1), digits = 2)
      q2 <-round( quantile(bar,(x/100), type = 2), digits = 2)
      q3 <- round(quantile(bar,(x/100), type = 3), digits = 2)
      q4 <- round(quantile(bar,(x/100), type = 4), digits = 2)
      q5 <- round(quantile(bar,(x/100), type = 5), digits = 2)
      q6 <- round(quantile(bar,(x/100), type = 6), digits = 2)
      q7 <- round(quantile(bar,(x/100), type = 7), digits = 2)
      q8 <- round(quantile(bar,(x/100), type = 8), digits = 2)
      q9 <- round(quantile(bar,(x/100), type = 9), digits = 2)
      answers <<- rbind(answers,c(perres1,perres2,perres3,q1,q2,q3,q4,q5,q6,q7,q8,q9))
    }
    
    #run all percentiles for data in means matrix
    apply(means,1,function(x) printallper(25,x))
    
    # correlate various percentiles
    cor_answers <- cor(answers[complete.cases(answers),])
    
    #print correlations for 3 deifinitions of percentils with quantiles
    cor_answers[1:3,]
    
    结果表明:

    • 百分位数定义1(def1)不匹配分位数类型
    • 百分位数定义2(def2)=匹配分位数类型1、3和4
    • 百分位数定义3(def3)=匹配分位数类型6

    为了得到答案,我生成了一个随机样本,使用相关性测试来找到三个定义的匹配项。这不是最优雅的代码,但是

    代码如下:

        #####  program  to test types
    ## generate 100 random samples of 100 numbers
    set.seed(3)
    x <- rnorm(100000,mean = 50, sd = 10)
    means <- replicate(100, sample(x, 100))
    
    #create answer matrix
    answers <- matrix(ncol=12)
    colnames(answers) <- (c("def1","def2","def3","q1","q2","q3","q4","q5","q6","q7","q8","q9"))
    
    
    printallper <- function(x,bar) {
      # get values for per calcs
      bar <- sort(bar)
      per <- (x/100)*(length(bar)+1)
      # get per1
      perres1 <<-round(bar[per+1],digits=2)
      # get per2
      perres2 <<-round(bar[per], digits=2)
    
      #get per3
      whole <- floor(per)
      dec <- per - whole
      low <- bar[per]
      high <- bar[per+1]
      final <- (dec * (high-low)) + bar[per]
      perres3 <<-round(final, digits=2)
      # q types
      q1 <- round(quantile(bar,(x/100), type = 1), digits = 2)
      q2 <-round( quantile(bar,(x/100), type = 2), digits = 2)
      q3 <- round(quantile(bar,(x/100), type = 3), digits = 2)
      q4 <- round(quantile(bar,(x/100), type = 4), digits = 2)
      q5 <- round(quantile(bar,(x/100), type = 5), digits = 2)
      q6 <- round(quantile(bar,(x/100), type = 6), digits = 2)
      q7 <- round(quantile(bar,(x/100), type = 7), digits = 2)
      q8 <- round(quantile(bar,(x/100), type = 8), digits = 2)
      q9 <- round(quantile(bar,(x/100), type = 9), digits = 2)
      answers <<- rbind(answers,c(perres1,perres2,perres3,q1,q2,q3,q4,q5,q6,q7,q8,q9))
    }
    
    #run all percentiles for data in means matrix
    apply(means,1,function(x) printallper(25,x))
    
    # correlate various percentiles
    cor_answers <- cor(answers[complete.cases(answers),])
    
    #print correlations for 3 deifinitions of percentils with quantiles
    cor_answers[1:3,]
    
    结果表明:

    • 百分位数定义1(def1)不匹配分位数类型
    • 百分位数定义2(def2)=匹配分位数类型1、3和4
    • 百分位数定义3(def3)=匹配分位数类型6

    出于好奇,当您尝试使用非高斯数据时会发生什么?e、 runif、RPOI、rweibull、rlnorm等有趣的问题似乎对非高斯数据具有鲁棒性。至少rlnorm和rpois的相关性是相同的。当数据点少于要估计的分位数时(如上面的示例所示),注意分位数()的作用也是很有帮助的。例如,类型1在数据不完全匹配时向上舍入,类型3在数据不完全匹配时向上或向下舍入最接近的值,类型4在值不完全匹配时进行估计/插值,类型6对所有内容进行估计。有趣。我很高兴你问;我一直对此有点好奇,但没有花时间去发现。出于好奇,当你用非高斯数据来尝试时会发生什么?e、 runif、RPOI、rweibull、rlnorm等有趣的问题似乎对非高斯数据具有鲁棒性。至少rlnorm和rpois的相关性是相同的。当数据点少于要估计的分位数时(如上面的示例所示),注意分位数()的作用也是很有帮助的。例如,类型1在数据不完全匹配时向上舍入,类型3在数据不完全匹配时向上或向下舍入最接近的值,类型4在值不完全匹配时进行估计/插值,类型6对所有内容进行估计。有趣。我很高兴你问;我对此一直有点好奇,但没有花时间去发现。