【R】 정규 분포의 스펙트럼을 그린다

12076 단어 R통계학

1. 취지



거의 취미.

다시 「정규 분포란」이라고 하는 것을 생각할 때에, 여러가지 표준 편차의 정규 분포를 그림에 그려 보는 것도 좋겠다, 라고 하는 것으로.

2. 구현


{RColorBrewer} 라는 패키지가 필요합니다.
nd <- function(SD = c(1), left, right, ave = 0, add = F, pallet.name = "Spectral"){
  library(RColorBrewer)
  if (missing(left)){
    left <- ave - max(SD) * 4
  }
  if (missing(right)) {
    right <- ave + max(SD) * 4
  }
  SD.length.before <- length(SD)
  SD <- unique(sort(SD))
  if (length(SD) < SD.length.before) {
    warning("SDのうち、重複する要素を削除しました。")
  }
  if (length(SD) > 11) {
    warning("カラーパレットの都合上、SDの要素数は最大で11です。超過分のうちより大きい要素を削除しました。")
    SD <- SD[1:11]
  }
  SD.length <- length(SD)
  SD.min <- SD[which.min(SD)]
  SD.min.max <- dnorm(ave, ave, SD.min)
  SD.min.else <- SD[-1]
  if (SD.length < 3) {
    SD.length <- 3
  }
  pallet <- brewer.pal(SD.length, pallet.name)
  col.number <- 2
  curve(dnorm(x, ave, SD.min), left, right, add = add, col = pallet[1], lwd = 2, n = 30000)
  if (add) {
  } else {
    plot.window(xlim = c(left, right), ylim = c(0, SD.min.max))
  }
  for (SD.data in SD.min.else) {
    curve(dnorm(x, ave, SD.data), left, right, add = T, col = pallet[col.number], lwd = 2, n = 30000)
    col.number <- col.number + 1
  }
}

3. 결과



평균 0, 표준편차가 1~5(0.4각)의 정규분포를 플롯해 보았습니다.
> nd(SD = seq(1, 5, by = 0.4))



4. 결론



예쁜 짱 (작은 느낌)

Enjoy!

끝.

좋은 웹페이지 즐겨찾기