Не могу добавить кривую вероятности на гистограмму

Я пытаюсь отобразить несколько гистограмм с одним графиком с пакетом решетки.

Это мой код до сих пор:

histogram(~ X1 + X2 + X3 + X4 + X5 + X6 + X7 + X8 + X9 + X10, data=mydata, 
      type = "density",layout=c(5,2),
      panel=function(x, ...) {
        panel.histogram(x, ...)
        panel.mathdensity(dmath=dnorm, col="black",
                          args=list(mean=mean(x), sd=sd(x)), ...)
      })

Проблема в том, что он не построит кривую вероятности. Это не возвращает мне ошибку, поэтому я думаю, что код выглядит хорошо.

Я также пробовал это только с одной переменной, и это тоже не сработало:

histogram(~ X1, data=mydata, 
  type = "density",layout=c(5,2),
  panel=function(x, ...) {
    panel.histogram(x, ...)
    panel.mathdensity(dmath=dnorm, col="black",
                      args=list(mean=mean(x), sd=sd(x)), ...)
  })

Кто-нибудь видит ошибку в моем коде? Или может быть что-то не так в моих данных?

Я рад любому совету!


person Ventrue12    schedule 05.12.2012    source источник
comment
Мы действительно можем помочь вам, только если вы сделаете свой пример кода воспроизводимым. В противном случае нам придется угадывать структуру ваших данных. См. stackoverflow.com/q/5963269/602276, как это сделать.   -  person Andrie    schedule 05.12.2012


Ответы (2)


Может быть, ваши данные содержат пропущенные значения?

# Create example data (no missings)
mydata <- data.frame(X1 = rpois(1000, 12), X2 = rnorm(1000, 12, sqrt(12)))

# Create some missing (NA) entries
mydata2 <- mydata
mydata2[sample(seq_len(nrow(mydata2)), 10), 1] <- NA

Использование вышеуказанного объекта mydata2 в функции гистограммы не дает графика плотности для X1, поскольку mean и sd возвращают NA. Добавление na.rm = TRUE к обеим этим функциям вернет значения, которые может использовать panel.mathdensity:

histogram(~ X1 + X2, data=mydata2, 
      type = "density",layout=c(1,2),
      panel=function(x, ...) {
        panel.histogram(x, ...)
        panel.mathdensity(dmath=dnorm, col="black",
# Add na.rm = TRUE to mean() and sd()
                          args=list(mean=mean(x, na.rm = TRUE),
                                    sd=sd(x, na.rm = TRUE)), ...)
      })

гистограмма с плотностью

person BenBarnes    schedule 16.12.2012

Без ваших данных вам сложно помочь.

Это простой пример, возможно, он может вам помочь. Я стараюсь сохранить ваши настройки и исправить некоторые.

library(lattice)

dat <- data.frame(X1 = rnorm(10000),Y1 =rnorm(10000))
histogram(~X1+Y1,
          data = dat,
          main=list(
            label="Main plot title",
            cex=1.5),
          xlab=list(
            label="Custom x-axis label",
            cex=0.75),
          ylab=list(
            label="Your Y label ",
            cex=1.2),
          scales=list(cex=0.5),
          layout = c(1,2),
          par.settings = list(
                              type = "density",
                              panel=function(x, ...) {
                                panel.histogram(x, ...)
                                panel.mathdensity(dmath=dnorm, col="black",
                                                  args=list(mean=mean(x), sd=sd(x)), ...)
                              })
)

введите здесь описание изображения

person agstudy    schedule 05.12.2012
comment
Спасибо, но я не работал. Я не вижу кривую вероятности на изображении, которое вы разместили? - person Ventrue12; 06.12.2012