#r #statistics #correlation #boxplot
#r #Статистика #корреляция #boxplot
Вопрос:
Я хотел бы сгенерировать статистику boxplot (усы, медиана), которую я использую для получения сходства между двумя векторами, но без создания самого boxplot.
Позвольте мне лучше объяснить себя через мой код:
while(...){
doubleplot <- boxplot(real$dist, result$dist, names=c(paste("Loops (",length(real),")", sep=""),paste("Peak pairs (", length(result), ")",sep="")), ylab="Loop width", cex.lab=1.3, cex.axis=1.3, main="Candidate for negative loops", cex.main=1.5)
correl <- cor(doubleplot$stats[,1],doubleplot$stats[,2])
if(correl>max_correl){
max_correl <- correl
best_plot_data <- doubleplot
}
}
Очевидно, что, поскольку мы генерируем статистику boxplot в цикле while (иногда более 100 графиков), для фактического рисования графиков требуется очень много ресурсов. Мне нужна статистика без самого графика. Какой-то boxplot(..., hidden=TRUE)
Комментарии:
1. Ответ, предоставленный Томасом, будет работать.. Вы можете заранее рассчитать корреляцию, чтобы знать, какой график строить..
2.
boxplot(..., plot = FALSE)
Ответ №1:
Вы можете использовать boxplot.stats()
. Он возвращает список, в котором находится один из элементов $stats
, и вы можете получить доступ к тому, что вам нужно.
Например
set.seed(1234)
x = rnorm(100)
boxplot.stats(x)
# $stats
# [1] -2.3456977 -0.9006166 -0.3846280 0.4828227 2.5489911
# $n
# [1] 100
# $conf
# [1] -0.6032114 -0.1660445
# $out
# numeric(0)
Для получения дополнительной информации вы можете посмотреть ?boxplot.stats()