히스토그램에서 최적의 빈 수 계산

나는 얼마나 많은 빈을 사용해야하는지 결정하기 위해 가능한 한 최적의 방법을 찾는 데 관심이 있습니다. 내 데이터는 최대 30 ~ 350 개의 개체 범위 여야하며, 특히 “좋은”개체에 대해 임계 값 (Otsu의 방법과 같은)을 적용하려고합니다. 값이 더 조밀해야하는 “나쁜”개체와 분리됩니다. 구체적인 값은 각 개체에 대해 1-10 점을받습니다. 나는 5-10 점에 6-10 점, 20-25 점에 해당합니다. 점수 1-4. 저는 일반적으로 Otsu의 방법과 같은 것이 낮은 점수의 개체를 임계 값으로 설정하도록 허용하는 히스토그램 비닝 패턴을 찾고 싶습니다. 그러나 내가 본 Otsu의 구현에서 빈 크기는 256이었고 종종 256보다 더 적은 데이터 포인트를 가지고 있습니다. 이것은 256이 좋은 빈 번호가 아니라는 것을 암시합니다. 데이터가 너무 적기 때문에 사용할 빈 수를 계산하려면 어떤 접근 방식을 취해야하나요?

댓글

  • Sturges ' 규칙은 n < 200에 사용할 수 있습니다. 여기서 n은 관찰 횟수입니다.

답변

Freedman-Diaconis 규칙은 매우 강력하며 실제로 잘 작동합니다. bin-width는 $ h = 2 \ times \ text {IQR} \ times n ^ {-1/3} $ 로 설정됩니다. 따라서 빈의 수는 $ (\ max- \ min) / h $ 입니다. 여기서 $ n $ 관찰 횟수, 최대 값은 최대 값, 최소값은 최소값입니다.

기본 R에서는 다음을 사용할 수 있습니다.

 hist(x, breaks="FD")  

이 옵션이없는 다른 플로팅 라이브러리 (예 : ggplot2)의 경우 다음과 같이 binwidth를 계산할 수 있습니다.

 bw <- 2 * IQR(x) / length(x)^(1/3) ### for example ##### ggplot() + geom_histogram(aes(x), binwidth = bw)  

댓글

  • @nico. R의 기본값은 breaks = " Sturges "이며 항상 좋은 결과를 제공하지는 않습니다.
  • 어떻게합니까? 계산 IQR?
  • @KurtMueller IQR은 사 분위수 범위를 의미합니다. 1 사분 위와 3 사 분위를 찾으면 그 차이는 IQR입니다. IQR은 이미 R과 함께 제공되므로 사용할 수 있습니다.
  • 오해가 아니라면 대답은 num_bins <- diff(range(x)) / (2 * IQR(x) / length(x)^(1/3))
  • nclass.FD는 9 년 전에 존재하지 않았습니다.

답변

사용하는 경우 빈이 너무 적 으면 히스토그램이 실제로 데이터를 잘 표현하지 못합니다. 빈이 너무 많으면 빗 모양이 깨져서 분포를 알 수 없습니다.

One 해결책은 모든 값을 보여주는 그래프를 만드는 것입니다. 빈이 필요하지 않은 점 도표 또는 누적 빈도 분포입니다.

균등 한 간격의 빈으로 빈도 분포를 생성하려면 빈 수 (또는 너비)를 결정해야합니다. 값의 수에 따라 결정이 달라집니다. 값이 많으면 빈이 많으면 그래프가 더 좋아 보이고 더 많은 정보를 얻을 수 있습니다. 이 wikipedia 페이지 에는 관측치 수에서 빈 너비를 결정하는 여러 방법이 나열되어 있습니다. 가장 간단한 방법은 빈 수를 비닝하는 값 수의 제곱근과 동일하게 설정하는 것입니다.

시마 자키 히데아키의이 페이지 는 대체 방법을 설명합니다. 계산하기가 조금 더 복잡하지만 훌륭한 작업을 수행하는 것 같습니다. 페이지 상단은 이론과 설명을 보려면 스크롤하여 지나간 다음 계속 스크롤하여 방법을 설명하는 논문 링크를 찾으십시오.

댓글

답변

아마도 “ 히스토그램 변형 “이 흥미로울 것입니다.

“dhist “라고 부르는이 새로운 디스플레이 (대각선 -컷 히스토그램)은 동일한 너비 히스 토와 동일한 영역 히스 토 모두의 바람직한 기능을 보존합니다. 데이터에 급증이있을 때 ea hist와 같은 크고 좁은 빈을 표시하고 일반적인 히스토그램과 같이 분리 된 이상 치를 표시합니다.

또한 언급합니다. R의 코드는 요청시 제공됩니다.

답변

Shimazaki-Shinomoto 방법?

계산 비용이 많이 들지만 좋은 결과를 얻을 수 있습니다. 계산 시간이 문제가 아니라면 시도해 볼 가치가 있습니다.충분히 빠르게 실행되는 다음 링크에 Java, MATLAB 등에서이 메서드가 구현되어 있습니다. web-interface

의견

  • 다음은 구현입니다. gist.github.com/salotz/0158a99a75078b47538452111ec0faa2 . 그리고 bin의 수에 대한 범위를 선택하고 각각에 대한 히스토그램을 만든 다음 비용을 계산 한 다음 비용이 가장 적게 드는 것을 선택해야하므로 비용이 더 많이 듭니다.

Answer

이것이 엄밀히 말하면 좋은 방법으로 간주되지는 않지만, 빈 너비가 다른 히스토그램을 두 개 이상 생성하고 히스토그램을 선택할 히스토그램을 선택하는 경향이 있습니다. 가장 잘 전달하려는 해석에 맞는 히스토그램을 사용합니다. 이것은 히스토그램 선택에 약간의 주관성을 도입하지만, 히스토그램을 제공하는 사람보다 데이터를 이해하는 데 훨씬 더 많은 시간이 있었기 때문에 매우 간결한 메시지를 제공해야한다는 점을 근거로 정당화합니다.

저는 또한 동일한 빈 너비가 아니라 각 빈에 동일한 수의 포인트로 히스토그램을 표시하는 것을 좋아합니다. 나는 일반적으로 생성하기가 더 어렵지만 일정한 빈 너비보다 훨씬 더 나은 데이터를 나타냅니다.

댓글

  • 죄송합니다.이 작업을 자동화해야한다고 언급 했어야합니다. " 내 목적에 가장 적합한 것을 찾을 때까지 여러 번 수행하는 옵션 " 수상 ' 저를 위해 일하지 않습니다. 계산 방식으로 수행해야합니다 …
  • 동의합니다-하나의 " 최적 " 저장소가 있다는 생각 너비는 엄청나게 단순화 된 가정입니다.

답변

프로그래밍 방식으로 저장소 수를 결정해야하는 경우 저는 보통 필요한 것보다 훨씬 많은 빈이있는 히스토그램으로 시작합니다. 히스토그램이 채워지면 사용중인 방법에 대해 빈당 항목이 충분할 때까지 빈을 결합합니다. 10 개 이상의 항목이있을 때까지 정규 분포의 불확실성을 사용하여 계수 실험에서 포아송 불확실성을 모델링하려는 경우.

답변

이 답변을 Mr. Rob Hyndman의 답변 .

정확히 동일한 간격으로 히스토그램 플롯을 만들기 위해 또는 기본 R 또는 ggplot2 패키지와 함께 Freedman–Diaconis 규칙 을 사용하는 “binwidths”를 사용할 수 있습니다. hist() 함수, 즉 breaks의 값 중 하나입니다. qsec Freedman–Diaconis 규칙을 사용하는 mtcars 데이터. 기본 R에서는

x <- mtcars$qsec hist(x, breaks = "FD") 

반면에 ggplot2 우리가 사용하는 패키지

h <- hist(x, breaks = "FD", plot = FALSE) qplot(x, geom = "histogram", breaks = h$breaks, fill = I("red"), col = I("white")) 

또는

ggplot(mtcars, aes(x)) + geom_histogram(breaks = h$breaks, col = "white") 

모두 의도 한 것과 정확히 동일한 간격과 빈 수로 히스토그램 플롯을 생성합니다.

답변

I Au g / t에 대해 600 개의 관측 값이 있습니다. Bin 크기 1은 다음과 같습니다. 여기에 이미지 설명 입력

자동 선택 (빈 범위 생략)은 다음을 제공합니다. 여기에 이미지 설명 입력

데이터는 마치 첫 번째와 두 번째 그래프에서 정상으로 보입니다. 데이터 무결성에는 문제가 없습니다. 빈 크기 0.1 (g / t)만이 질문에 답합니다. 측정 값이 부정확하고 부정확했습니다. 여기에 이미지 설명 입력

제 판단 : 1. 자연 현상의 진정한 가치를 보여주는 측정 기술이 지구상에 없습니다. 모든 측정은 근사치이며 일부는 실제 값에 가깝습니다. 샘플링 설계, 교정, 인적 자격 등에 따라 달라집니다. 2. 이것이 분포가 대칭이 아닌 왜곡 된 이유입니다. 3. 그럼에도 불구하고 분포의 모양은 적어도 대략 “종 모양”섹션과 유사해야합니다. 한 번에 하나의 종 (지질 학적 환경이 여러 개인 경우 제외). 4. Bin 크기 조작을 통한 주파수 분포는 측정이 얼마나 정확하고 정밀했는지에 대한 패턴을 드러내는 데 도움이 될 수 있습니다. 따라서 규칙을 잘라 내기보다는 빈 크기를 실험적으로 선택해야합니다.

댓글

  • 이것은 댓글이 아닙니다. 당신이 도덕적 인 철자를 쓰지 않는 한 대답하십시오. 저는 ' 도덕적으로 다음과 같이 말합니다. 모든 규칙은 경험 법칙이며 일부 규칙은 다른 규칙보다 통계적 근거가 더 많지만 분포의 왜곡도가 매우 높으면 대부분의 규칙이 원하는대로 작동하지 않을 수 있습니다. 또는 첨도. 따라서 귀하의 판단도 사용하십시오.
  • 댓글을 추가했지만 스레드에 유용한 새로운 세부 정보를 제공하는 것이 확실하지 않습니다. 1.나에게는 괜찮지 만 여기서 문제는 아닙니다. 2. 일부 분포가 거의 대칭이기 때문에 ' 1을 따르지 않습니다. 3. 모호하다 : 종 이외의 모양이 예상되는 상황이 많다. 4. 또한 원래 측정 값의 품질이 어떤 히스토그램에서도 분명하지 않기 때문에 모호하지만, 분포의 매우 미세한 구조에주의를 기울여 가장 잘 검사되는 경우가 많습니다.
  • 2. 거의 대칭은 대칭이 아닙니다. 임신 여부에 관계없이 거의 임신 할 수 없습니다.
  • 물론이지만 데이터의 정확한 대칭은 매우 드물기 때문에 " 대칭 " 누군가가 이에 대해 합리적으로 반대 할 수도 있습니다. 거의 대칭이되는 것이 ' 매우 쉽습니다. 이것이 왜 그리고 우리가 왜도의 척도를 가지고 있는지입니다.
  • 주의했지만 귀하의 의견은 일반적이며 지금 제공하는 맥락이 부족합니다. 차례로 나는 " 잘못 iv id = “94254d5ece”가 아니라 " 의심스러운 "라고 말했습니다. >

. 내 주요 의견은 귀하의 답변이 ' 빈 크기 또는 이에 상응하는 빈 수를 선택하는 방법에 대한 스레드에 실제로 많은 것을 추가하지 않는다는 것입니다. ' 어려운 또 다른 예를 갖는 것은 실제로 대답이 아닌 질문에 대한 회전입니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다