Построение распределения хи-квадрат с помощью ggplot2 в R

#r #ggplot2

#r #ggplot2

Вопрос:

Я хотел бы использовать R для случайного построения распределения хи-квадрат со степенью свободы 5 при 100 наблюдениях. После этого я хочу вычислить среднее значение этих наблюдений и использовать ggplot2 для построения распределения хи-квадрат с помощью гистограммы. Ниже приведен мой код:

 rm(list = ls())
library(ggplot2)
set.seed(9487)

###Step_1###
x_100 <-data.frame(rchisq(100, 5, ncp = FALSE))

###Step_2###
mean_x <- mean(x_100[,1])
class(x_100)

###Step_3###
plot_x_100 <- ggplot(data = x_100, aes(x = x_100))  
  geom_bar()
plot_x_100
  

Во-первых, я создаю фрейм данных случайного распределения хи-квадрат с df = 5, obs = 100.

Во-вторых, я вычисляю среднее значение этого распределения хи-квадрат.

Наконец, я строю график с помощью пакета ggplot2.

Тем не менее, я получаю результат следующим образом:

 Don't know how to automatically pick scale for object of type data.frame. Defaulting to continuous.
Error in is.finite(x) : default method not implemented for type 'list'
  

Я застрял в этой проблеме на несколько часов и не могу найти ни одного списка в моей глобальной среде. Буду признателен, если кто-нибудь сможет мне помочь и дать мне несколько предложений.

Комментарии:

1. Ошибка заключается в том, что вы передаете весь data.frame в эстетику x вместо столбца данных. Я бы сначала обозначил столбец в x_100 ( x_100 = data.frame(x_col = rchisq(100, 5, ncp = FALSE)) ). Затем измените значение aes на aes(x=x_col) . И если вам просто нужна гистограмма, вы можете попробовать geom_histogram вместо geom_bar

Ответ №1:

Проблема в том, что внутри ggplot функции вы вызываете тот же фрейм данных (x_100), что и данные, и переменная x внутри aes . Помните, что в ggplot внутри aes вы должны указать имя столбца, который вы хотите отобразить. Кроме того, если вы хотите построить распределение хи-квадрат, я думаю, что было бы лучше использовать geom_histogram вместо geom_bar , поскольку первый группирует наблюдения в ячейки.

 library(ggplot2)
# Rename the only column of your data frame as "value"
colnames(x_100) <- "value"
plot_x_100 <- ggplot(data = x_100, aes(x = value))  
  geom_histogram(bins = 20) 
  

График гистограммы

Комментарии:

1. Спасибо, что помогли мне! Это дает мне больше информации о ggplot2 и фрейме данных. Еще раз, СПАСИБО!