什么分位数类型与R中的3个百分位数定义相匹配
百分位数有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的数字来了解分位数的行为:
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对所有内容进行估计。有趣。我很高兴你问;我对此一直有点好奇,但没有花时间去发现。