2015-06-12 4 views
1

Вот скриншот моего набора данных:Как сравнить распределения двух векторов в R?

enter image description here

Вот о чем это: Представьте, что вы работаете в компании поставки и, по какой-то причине, пакет не может быть доставлен клиенту. Распределение числа возвращаемых пакетов изменяется в соответствии с денежной стоимостью пакета, которая является первой переменной набора данных (Уровни). Таким образом, столбец B представляет собой распределение всех пакетов, проданных компанией в прошлом месяце, сгруппированных по стоимости пакета. Последний столбец C представляет собой распределение пакетов, которые не были доставлены из-за некоторых критериев (например, опасных районов).

Что я хочу визуально показать, так это то, что этот конкретный критерий настолько важен, что он изменяет распределение данных. Я использовал Excel для вычисления этих процентов из необработанных данных, потому что мне не разрешено устанавливать R на работу.

Я сделал следующий сюжет, делая некоторые пререкания данных, но я предполагаю, что я мог бы сделать лучше, если бы я знал, как:

enter image description here

Edit: мне сказали, чтобы опубликовать версию dput из dataset:

structure(list(Levels = structure(c(6L, 11L, 12L, 13L, 1L, 2L, 
3L, 4L, 5L, 7L, 8L, 9L, 10L), .Label = c("Less than $1000", "Less than $1200", 
"Less than $1400", "Less than $1600", "Less than $1800", "Less than $200", 
"Less than $2000", "Less than $2200", "Less than $2400", "Less than $2600", 
"Less than $400", "Less than $600", "Less than $800"), class = "factor"), 
    X.ofTotal = c(0.3802, 0.2475, 0.1218, 0.0664, 0.0409, 0.0247, 
    0.0178, 0.016, 0.0099, 0.0109, 0.0061, 0.0063, 0.0063), X..ofTotalWithSomeCriteria = c(0.6087, 
    0.1957, 0.0652, 0.0435, 0, 0.0217, 0, 0, 0.0435, 0.0217, 
    0, 0, 0)), .Names = c("Levels", "X.ofTotal", "X..ofTotalWithSomeCriteria" 
), class = "data.frame", row.names = c(NA, -13L)) 
> 
+2

Вы собираетесь быть закрыто, потому что вы спрашиваете смутный вопрос и не сказали это очень хорошо. Вы получите больше ответа, если сначала попробуете что-нибудь, представите [минимальный рабочий пример] (http://stackoverflow.com/help/mcve) некоторые данные и код и спросите, что пошло не так. См. [This] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). (Что такое 'Variable'? Это временный ряд? Разделы? В его нынешнем виде ** ответ на ваш вопрос:« Это зависит (tm) »** от слишком большого количества вещей, которые вы не поделили с нами .) – r2evans

+0

Извините @ r2evans, я думаю, у меня возникают проблемы с объяснением того, чего я хочу, потому что я не владею английским языком. Я попытаюсь добавить дополнительные сведения и открыть новый поток. – iatowks

+3

Не открывайте новую тему, если это тот же вопрос, просто отредактируйте этот вопрос. Владение английским языком хорошо для многих из нас, но вы, конечно, не первый. Предоставьте простой пример, дайте нам * некоторые * данные (прочитайте ссылки, упомянутые выше, возможно, используйте 'dput') и идите оттуда. Пожалуйста, не давайте нам * все * данные, если вы можете уменьшить объем выборки. – r2evans

ответ

2

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

Есть по крайней мере два варианта для построения этих функций в R:

plot(ecdf(data$X.ofTotal),col="green",xlim=c(0,1),verticals = TRUE,main = "") 
par(new=TRUE) 
plot(ecdf(data$X..ofTotalWithSomeCriteria),col="red",xlim=c(0,1),verticals = TRUE,main = "") 

require(Hmisc) 
l <- length(data$X..ofTotalWithSomeCriteria) 
dataset <- c(rep("Total",l), rep("Criteria", l)) 
Ecdf(c(data$X.ofTotal, data$X..ofTotalWithSomeCriteria), group=dataset, col=c('blue', 'red')) 
+0

, так на вопрос ответили? –

Смежные вопросы