как построить эту гистограмму в R

Итак, глядя на этот вопрос здесь

"Пусть A = {0,1, 0,5, 1, 2, 5, 10, 100} L = {0,1, 0,5, 1, 2, 5, 10, 100}

  1. Для каждой пары (α, λ) ∈ A × L, указанной выше, используйте встроенную функцию R rgamma() для создания выборок размером 10 000 каждая из распределения Gamma(α, λ). (Не включайте свою выборку в выходные данные!) Это даст вам 7 × 7 = 49 случайных выборок размером 10 000 каждая. Это ваши наборы данных, на которых вы будете основывать остальную часть задания.
  2. Используйте функцию hist() для построения гистограмм ваших выборочных наборов данных. Мне нужна гистограмма 49. Если вы можете расположить их в красивой сетке 7 на 7, тем лучше. Четко обозначьте свои участки. Не забудьте поэкспериментировать с параметрами разрывов и выбрать подходящее количество бинов, чтобы ваши графики имели четко определенные формы».

Я пытаюсь ответить на вопрос 2 и хотел бы знать, что я делаю неправильно, и даже правильно ли я ответил на вопрос 1.

#Question 1

set.seed(10000)

v <- c(0.1,0.5,1,2,5,10,100)
u <- c()
for(i in v)
{
  for(j in v)
  {
    u <- c(u,paste0(i,"-",j))
  }
}


#Question 2

lyst <- list()
q <- 1
for (i in v)
{
  m <- matrix(nrow=10000)
  for (j in v)
  {
    m <- cbind(m,rgamma(10000,i,j))
  }
  m <- m[,-1]
  colnames(m) <- paste0(rep(as.character(i),7),"-",as.character(j))
  lyst[[q]] <- m
  q <- q + 1
}
pdf("Hist8.pdf",width = 20,height = 10)
for(x in 1:7)
{
  for(y in 1:7)
  {
    hist(lyst[[x]][,y],
    xlab = "Value",
    main = paste("Alpha-Lambda:",
    colnames(lis[[x]])[y]))
  }
}
dev.off()

Я был бы признателен за любые советы или любые источники, которые могут помочь мне в этом


person user12197328    schedule 01.04.2020    source источник


Ответы (1)


Вот быстрые изменения вашего подхода. Вместо того, чтобы пытаться хранить все в матрице, я просто создал список из 49 желаемых распределений, а затем нанес их на график 1 на 1.

#Question 2

lyst <- list()
#create a list of the 49 distributions
for (i in v)
{
  for (j in v)
  {
    elementname<-paste0(as.character(i),"-",as.character(j))
    print(elementname)
    lyst[[elementname]] <- rgamma(10000,i,j)
  }
}


#plot the 49 lists
#pdf("Hist8.pdf",width = 20,height = 10)
#define the number of rows and columns (7x7 is probably to many)
par(mfcol=c(7,7))
for(x in names(lyst))
{
    hist(lyst[[x]],
         xlab = "Value",
         main = paste("Alpha-Lambda:", x) )

}
#dev.off()
person Dave2e    schedule 01.04.2020
comment
РЕДАКТИРОВАТЬ: Исправлены ошибки, спасибо за ответ, но не могли бы вы объяснить, что на самом деле делает строка par(mfcol=c(7,7)), я никогда не использовал par(), спасибо - person user12197328; 02.04.2020
comment
Mfcol указывает количество строк и количество столбцов в окне вывода. См. ?par для получения дополнительной помощи. - person Dave2e; 02.04.2020