2012-05-02 2 views
2

Учитывая таблица частот ниже:Как Участок Плотность из таблицы частот

> print(dat) 
V1 V2 
1 1 11613 
2 2 6517 
3 3 2442 
4 4 687 
5 5 159 
6 6 29 

# V1 = Score 
# V2 = Frequency 

Как мы можем построить плотность, (т.е. диапазон оси у от 0 до 1,0).

В настоящее время у меня есть следующий за частотой участок:

plot(0,main="table",type="n"); 
lines(dat,lty=1) 

# I need to use lines() and plot() here, 
# because need to make multiple lines in single plot 

Не знаю, как подойти, что для плотности.

ответ

4

Плотность каждого блока будет V2/sum(V2), предполагая, что каждая строка является отдельным блоком.

Для данных

dat <- data.frame(V1 = 1:6, V2 = c(11613, 6517, 2442, 687, 159, 29)) 

я получаю:

> with(dat, V2/sum(V2)) 
[1] 0.541474332 0.303865342 0.113862079 0.032032452 0.007413624 0.001352170 

Что мы можем проверить с помощью инструментов АиР. Во-первых расширить свой компактный стол частоты

dat2 <- unlist(apply(dat, 1, function(x) rep(x[1], x[2]))) 

Затем используйте hist() для вычисления значений, которые мы хотим

dens <- hist(dat2, breaks = c(0:6), plot = FALSE) 

Посмотрите на полученный объект:

> str(dens) 
List of 7 
$ breaks  : int [1:7] 0 1 2 3 4 5 6 
$ counts  : int [1:6] 11613 6517 2442 687 159 29 
$ intensities: num [1:6] 0.54147 0.30387 0.11386 0.03203 0.00741 ... 
$ density : num [1:6] 0.54147 0.30387 0.11386 0.03203 0.00741 ... 
    $ mids  : num [1:6] 0.5 1.5 2.5 3.5 4.5 5.5 
$ xname  : chr "dat2" 
$ equidist : logi TRUE 
- attr(*, "class")= chr "histogram" 

Обратите внимание на density компонент, который:

> dens$density 
[1] 0.541474332 0.303865342 0.113862079 0.032032452 0.007413624 0.001352170 

Который согласуется с моим подсчетом на основе исходного представления частоты.

Что касается заговоров, если вы просто хотите, чтобы сделать плотности вместо попробуйте:

dat <- transform(dat, density = V2/sum(V2)) 
plot(density ~ V1, data = dat, type = "n") 
lines(density ~ V1, data = dat, col = "red") 

Если вы хотите, чтобы пределы оси сделать:

plot(density ~ V1, data = dat, type = "n", ylim = c(0,1)) 
lines(density ~ V1, data = dat, col = "red") 
Смежные вопросы