Как легко построить распределение хи-квадрат в R


Чтобы создать график плотности для распределения хи-квадрат в R, мы можем использовать следующие функции:

  • dchisq() для создания функции плотности вероятности
  • curve() для построения функции плотности вероятности

Все, что нам нужно сделать, чтобы создать график, это указать степени свободы для dchisq() вместе с точками входа и выхода для кривой() .

Например, следующий код иллюстрирует, как создать график плотности для распределения хи-квадрат с 10 степенями свободы, где ось x графика находится в диапазоне от 0 до 40:

curve(dchisq(x, df = 10), from = 0, to = 40)

Изменение графика плотности

Мы также можем изменить график плотности, добавив заголовок, изменив метку оси Y, увеличив ширину линии и изменив цвет линии:

curve(dchisq(x, df = 10), from = 0, to = 40,
 main = 'Chi-Square Distribution (df = 10)', #add title
 ylab = 'Density', #change y-axis label
 lwd = 2, #increase line width to 2
 col = 'steelblue') #change line color to steelblue 

Заполнение графика плотности

В дополнение к созданию графика плотности мы можем заполнить часть графика с помощью функции polygon() на основе начального и конечного значения.

Следующий код иллюстрирует, как заполнить часть графика плотности для значений x в диапазоне от 10 до 40:

#create density curve
curve(dchisq(x, df = 10), from = 0, to = 40,
main = 'Chi-Square Distribution (df = 10)',
ylab = 'Density',
lwd = 2)

#create vector of x values
x_vector <- seq(10, 40)

#create vector of chi-square density values
p_vector <- dchisq(x_vector, df = 10)

#fill in portion of the density plot from 0 to 40
polygon(c(x_vector, rev(x_vector)), c(p_vector, rep(0, length(p_vector))),
 col = adjustcolor('red', alpha=0.3), border = NA) 

Следующий код иллюстрирует, как заполнить часть графика плотности для значений x в диапазоне от 0 до 10:

#create density curve
curve(dchisq(x, df = 10), from = 0, to = 40,
main = 'Chi-Square Distribution (df = 10)',
ylab = 'Density',
lwd = 2)

#create vector of x values
x_vector <- seq( 0, 10 )

#create vector of chi-square density values
p_vector <- dchisq(x_vector, df = 10)

#fill in portion of the density plot from 0 to 10
polygon(c(x_vector, rev(x_vector)), c(p_vector, rep(0, length(p_vector))),
 col = adjustcolor('red', alpha=0.3), border = NA) 

Следующий код иллюстрирует, как заполнить часть графика плотности для значений x, лежащих за пределами средних 95% распределения:

#create density curve
curve(dchisq(x, df = 10), from = 0, to = 40,
main = 'Chi-Square Distribution (df = 10)',
ylab = 'Density',
lwd = 2)

#find upper and lower values for middle 95% of distribution
lower95 <- qchisq(.025, 10)
upper95 <- qchisq(.975, 10)

#create vector of x values
x_lower95 <- seq(0, lower95)

#create vector of chi-square density values
p_lower95 <- dchisq(x_lower95, df = 10)

#fill in portion of the density plot from 0 to lower 95% value
polygon(c(x_lower95, rev(x_lower95)), c(p_lower95, rep(0, length(p_lower95))),
 col = adjustcolor('red', alpha=0.3), border = NA)

#create vector of x values
x_upper95 <- seq(upper95, 40)

#create vector of chi-square density values
p_upper95 <- dchisq(x_upper95, df = 10)

#fill in portion of the density plot for upper 95% value to end of plot
polygon(c(x_upper95, rev(x_upper95)), c(p_upper95, rep(0, length(p_upper95))),
 col = adjustcolor('red', alpha=0.3), border = NA) 

Наконец, следующий код иллюстрирует, как заполнить часть графика плотности для значений x, лежащих внутри средних 95% распределения:

#create density curve
curve(dchisq(x, df = 10), from = 0, to = 40,
main = 'Chi-Square Distribution (df = 10)',
ylab = 'Density',
lwd = 2)

#find upper and lower values for middle 95% of distribution
lower95 <- qchisq(.025, 10)
upper95 <- qchisq(.975, 10)

#create vector of x values
x_vector <- seq(lower95, upper95)

#create vector of chi-square density values
p_vector <- dchisq(x_vector, df = 10)

#fill in density plot
polygon(c(x_vector, rev(x_vector)), c(p_vector, rep(0, length(p_vector))),
 col = adjustcolor('red', alpha=0.3), border = NA)