Функция графического обзора данных (сводная) в R


39

Я уверен, что раньше я сталкивался с подобной функцией в пакете R, но после интенсивного поиска в Google я, кажется, нигде не могу ее найти. Функция, о которой я думаю, создала графическое резюме для заданной ей переменной, создавая вывод с некоторыми графиками (гистограммой и, возможно, графиком с усами) и некоторым текстом, дающим такие детали, как среднее, SD и т. Д.

Я почти уверен, что эта функция не была включена в базу R, но я не могу найти пакет, который использовал.

Кто-нибудь знает о такой функции, и если да, то в каком пакете она находится?

Ответы:


25

Франк Харрелл в Hmisc пакет имеют некоторые основные графики с опциями для аннотации: ЗАКАНЧИВАТЬ summary.formula()и связанные с нимиplot функциями . Мне также нравится describe()функция.

Для получения дополнительной информации, посмотрите на Hmisc Library или Введение в S-Plus и Библиотеки Hmisc и Design .

Вот некоторые фотографии взяты из он-лайн помощи ( bpplt, describe, и plot(summary(...))): альтернативный текст альтернативный текст альтернативный текст

Многие другие примеры можно просмотреть в интерактивном режиме в Графическом руководстве по R , см. Hmisc (и не пропустите rms ).


Все эти функции находятся в пакете Hmisc, а не в Design. Спасибо за публикацию этого.
Фрэнк Харрелл

Две из трех ссылок не работают.
Доннид

15

Я настоятельно рекомендую функцию диаграммы. Корреляции в пакете PerformanceAnalytics . Он объединяет огромное количество информации в одну диаграмму: графики плотности ядра и гистограммы для каждой переменной, а также диаграммы рассеяния, сглаживатели низкого уровня и корреляции для каждой пары переменных. Это одна из моих любимых графических функций сводки данных:

library(PerformanceAnalytics)
chart.Correlation(iris[,1:4],col=iris$Species)

Я люблю этот график!


2
+1, FWIW, ? Scatterplot.matrix в упаковке автомобиля даст вам подобный сюжет (ж / некоторые различия, например, в / м в АиР и звезды).
gung - Восстановить Монику

@ Gung Это отличная функция, спасибо за совет.
Зак

5

Я нашел эту функцию полезной ... оригинальная ручка автора - дыхательный клуб .

Вот пример вывода

f_summary <- function(data_to_plot)
{
## univariate data summary
require(nortest)
#data <- as.numeric(scan ("data.txt")) #commenting out by mike
data <- na.omit(as.numeric(as.character(data_to_plot))) #added by mike
dataFull <- as.numeric(as.character(data_to_plot))

# first job is to save the graphics parameters currently used
def.par <- par(no.readonly = TRUE)
par("plt" = c(.2,.95,.2,.8))
layout( matrix(c(1,1,2,2,1,1,2,2,4,5,8,8,6,7,9,10,3,3,9,10), 5, 4, byrow = TRUE))

#histogram on the top left
h <- hist(data, breaks = "Sturges", plot = FALSE)
xfit<-seq(min(data),max(data),length=100)
yfit<-yfit<-dnorm(xfit,mean=mean(data),sd=sd(data))
yfit <- yfit*diff(h$mids[1:2])*length(data)
plot (h, axes = TRUE, main = paste(deparse(substitute(data_to_plot))), cex.main=2, xlab=NA)
lines(xfit, yfit, col="blue", lwd=2)
leg1 <- paste("mean = ", round(mean(data), digits = 4))
leg2 <- paste("sd = ", round(sd(data),digits = 4))
count <- paste("count = ", sum(!is.na(dataFull)))
missing <- paste("missing = ", sum(is.na(dataFull)))
legend(x = "topright", c(leg1,leg2,count,missing), bty = "n")

## normal qq plot
qqnorm(data, bty = "n", pch = 20)
qqline(data)
p <- ad.test(data)
leg <- paste("Anderson-Darling p = ", round(as.numeric(p[2]), digits = 4))
legend(x = "topleft", leg, bty = "n")

## boxplot (bottom left)
boxplot(data, horizontal = TRUE)
leg1 <- paste("median = ", round(median(data), digits = 4))
lq <- quantile(data, 0.25)
leg2 <- paste("25th percentile =  ", round(lq,digits = 4))
uq <- quantile(data, 0.75)
leg3 <- paste("75th percentile = ", round(uq,digits = 4))
legend(x = "top", leg1, bty = "n")
legend(x = "bottom", paste(leg2, leg3, sep = "; "), bty = "n")

## the various histograms with different bins
h2 <- hist(data,  breaks = (0:20 * (max(data) - min (data))/20)+min(data), plot = FALSE)
plot (h2, axes = TRUE, main = "20 bins")

h3 <- hist(data,  breaks = (0:10 * (max(data) - min (data))/10)+min(data), plot = FALSE)
plot (h3, axes = TRUE, main = "10 bins")

h4 <- hist(data,  breaks = (0:8 * (max(data) - min (data))/8)+min(data), plot = FALSE)
plot (h4, axes = TRUE, main = "8 bins")

h5 <- hist(data,  breaks = (0:6 * (max(data) - min (data))/6)+min(data), plot = FALSE)
plot (h5, axes = TRUE,main = "6 bins")

## the time series, ACF and PACF
plot (data, main = "Time series", pch = 20, ylab = paste(deparse(substitute(data_to_plot))))
acf(data, lag.max = 20)
pacf(data, lag.max = 20)

## reset the graphics display to default
par(def.par)

#original code for f_summary by respiratoryclub

}

2
Я только что обновил код, чтобы он сообщал допустимые / отсутствующие n, а затем пропускал пропущенные значения для функций, которые были разбиты пропущенными значениями.
Майкл Бишоп

4

Я не уверен, что это то, о чем вы думали, но вы можете проверить пакет fitdistrplus . У этого есть много хороших функций, которые автоматически генерируют полезную сводную информацию о вашем дистрибутиве и создают графики этой информации. Вот несколько примеров из виньетки :

library(fitdistrplus)
data(groundbeef)
windows()              # or quartz() for mac
  plotdist(groundbeef$serving)  

введите описание изображения здесь

windows()
> descdist(groundbeef$serving, boot=1000)
summary statistics
------
min:  10   max:  200 
median:  79 
mean:  73.64567 
estimated sd:  35.88487 
estimated skewness:  0.7352745 
estimated kurtosis:  3.551384 

введите описание изображения здесь

fw = fitdist(groundbeef$serving, "weibull")

>summary(fw)
Fitting of the distribution ' weibull ' by maximum likelihood 
Parameters : 
       estimate Std. Error
shape  2.185885  0.1045755
scale 83.347679  2.5268626
Loglikelihood:  -1255.225   AIC:  2514.449   BIC:  2521.524 
Correlation matrix:
         shape    scale
shape 1.000000 0.321821
scale 0.321821 1.000000

fg  = fitdist(groundbeef$serving, "gamma")
fln = fitdist(groundbeef$serving, "lnorm")
windows()
  plot(fw)

введите описание изображения здесь

windows()
  cdfcomp(list(fw,fln,fg), legendtext=c("Weibull","logNormal","gamma"), lwd=2,
          xlab="serving sizes (g)")

введите описание изображения здесь

>gofstat(fw)
Kolmogorov-Smirnov statistic:  0.1396646 
Cramer-von Mises statistic:  0.6840994 
Anderson-Darling statistic:  3.573646 

1

Чтобы исследовать набор данных мне очень нравится rattle. Установите пакет и просто позвоните rattle(). Интерфейс довольно понятен.


Для погремушки требуется XML, который не поддерживается для Windows (и недоступен в двоичном файле
whuber

@whuber: очень плохо! это довольно аккуратный пакет
Нико

2
@whuber @nico ZIP-файл для XML можно найти, например, по адресу stats.ox.ac.uk/pub/RWin/bin/windows/contrib/2.13 (и аналогично для некоторых других версий). Есть другие проблемы с этим, но в конечном счете это, кажется, работает
Генри

0

Может быть, вы ищете библиотеку ggplot2, которая позволяет вам красиво оформлять вещи. Или вы можете проверить этот веб-сайт, который, кажется, имеет множество графических утилит R http://addictedtor.free.fr/graphiques/


0

Вероятно, это не совсем то, что вы ищете, но функция pair.panels () в пакете psych для R может оказаться полезной. Он дает вам значения корреляции в верхней диагонали, линии Лёсса и точки в нижней диагонали, а также показывает гистограмму баллов каждой переменной в диагональной линии матрицы. Я лично считаю, что это одна из лучших графических сводок данных.


0

Мой любимый это DescTools

library(DescTools)
data("iris")
Desc(iris, plotit = T)

Который производит серию таких графиков:

введите описание изображения здесь введите описание изображения здесь и отображает серию описательных значений (включая среднее, среднее SE, медиану, процентили, диапазон, SD, IQR, значения асимметрии и эксцесс): введите описание изображения здесь

В качестве альтернативы, tabplot также очень хорош для графического обзора.

Это производит причудливые сюжеты с tableplot(iris, sortCol=Species)

введите описание изображения здесь

Существует даже версия D3 tabplot, то есть tabplotd3 .

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.