2017-06-13 69 views
1

我是R新手。在使用R之前,我使用了GraphPad Prism 7.0。 Só現在我試圖比較兩個數據處理器。我在分位數計算中創建了一個區別,所以任何人都知道他們爲什麼是不同的?使用R和GraphPad Prism進行分位數計算

在R I具有

par(pty="s", cex.axis=1, las=1, cex.lab=1) 
a1=c(22.02, 23.83, 26.67, 25.38, 25.49, 23.50, 25.90, 24.89, 25) 
a2=c(21.49, 22.67, 24.62, 24.18, 22.78, 22.56, 24.46, 23.79, 25) 
a3=c(20.33, 21.67, 24.67, 22.45, 22.29, 21.95, 20.49, 21.81, 25) 
boxplot(a1,a2,a3, names=c("a1","a2","a3"), ylab="Valor", ylim=c(20,28)) 

enter image description here

而對於A3的位數是

quantile(a3) 
    0% 25% 50% 75% 100% 
20.33 21.67 21.95 22.45 25.00 

繪製在GraphPad Prism中相同的數據:

格拉夫家庭:柱 方框&晶須 簡介:杜克

我得到

enter image description here

而且位數是

enter image description here

爲什麼他們是型動物(A3格外)?

爲什麼R識別a3中的4個離羣值,而GraphPad沒有?

意見建議??

+0

一開始,你可以有一個查看幫助文件中的類型部分('?quantile')。這表明實施分位數算法有很多方法,R提供了9種不同的方法。 – lmo

+0

@lmo明白了。 Graphpad中的分位數計算是用R中的類型6進行的。但是,如何在盒圖中使用這種分位數計算類型? –

+0

我不認爲你可以調整根據框圖繪製的值。這些都是基於Tukey在'fivenum'中的五位總結。你可以看看'boxplot.stats'和[這篇文章](https://stackoverflow.com/questions/40634693/lower-and-upper-quartiles-in-boxplot-in-r/40634859)看到一點更多。您可以通過range參數調整鬍鬚。例如,將此設置爲0,可將晶須連接到最小值和最大值。 – lmo

回答

0

回答這個問題如何在一個箱線圖使用不同位數的計算:

這是很容易與GGPLOT2。

DF <- data.frame(a1, a2, a3) 
DF <- stack(DF) 

quants <- tapply(DF$values, list(DF$ind), quantile, type = 6) 
quants <- as.data.frame(do.call(rbind, quants)) 
quants$g <- rownames(quants) 

library(ggplot2) 
ggplot(quants, aes(x = g, lower = `25%`, 
        middle = `50%`, upper = `75%`, 
        ymin = `0%`, ymax = `100%`)) + 
    geom_boxplot(stat = "identity") 

resulting plot

然後,您可以自定義此圖中進一步在許多GGPLOT2教程解釋。

PS:但是,我會使用R的默認boxplot統計,因爲這些嘗試重現Tukey的boxplot。

2

正如@lmo所說,R有很多計算分位數的方法。默認情況下,R使用type=7。在的GraphPad R.使用方法等同於type=6所以我創辦的方法是

par(pty="s", cex.axis=1, las=1, cex.lab=1) 
a1=c(22.02, 23.83, 26.67, 25.38, 25.49, 23.50, 25.90, 24.89, 25) 
a2=c(21.49, 22.67, 24.62, 24.18, 22.78, 22.56, 24.46, 23.79, 25) 
a3=c(20.33, 21.67, 24.67, 22.45, 22.29, 21.95, 20.49, 21.81, 25) 
boxplot(
    quantile(a1,type=6), 
    quantile(a2,type=6), 
    quantile(a3,type=6), 
    names=c("a1","a2","a3"), ylab="Valor", ylim=c(20,28)) 

enter image description here

而且

> quantile(a1,type=6) 
    0% 25% 50% 75% 100% 
22.020 23.665 25.000 25.695 26.670 
> quantile(a2,type=6) 
    0% 25% 50% 75% 100% 
21.490 22.615 23.790 24.540 25.000 
> quantile(a3,type=6) 
    0% 25% 50% 75% 100% 
20.33 21.08 21.95 23.56 25.00 

一樣的GraphPad