2012-05-02 9 views
2

에서 밀도 플롯 방법빈도 표 아래 빈도 표

우리는 (0 내지 1.0, 즉 Y 축 방향의 범위)에 밀도을 그릴 수있는 방법
> 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 

.

은 현재 나는 주파수 플롯에 대해 다음과 같습니다

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)) 

를 들어

내가 얻을 : 우리가 R의 도구를 사용하여 확인할 수 있습니다

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

. 이다

> 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 <- hist(dat2, breaks = c(0:6), plot = FALSE) 

원하는 값을 계산하는 hist()를 사용하여 소형 주파수 테이블

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

을 확장

> 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")