Создание выборочных векторных данных в R с асимметричным распределением с ограниченным диапазоном
Я хочу создать в R образец вектора данных в R, в котором я могу контролировать диапазон выбранных значений, поэтому я думаю, что я хочу использовать образец для ограничения диапазона генерируемых значений, а не команду типа rnorm, которая генерирует диапазон значений в зависимости от типа распределения, дисперсии, SD и т. д.
Поэтому я собираюсь сделать пример с указанным диапазоном (например, 1-5) для асимметричного распределения примерно так:
x=rexp(100,1/10)
Вот что у меня есть, но не обеспечивает перекос дистрибутива:
y=sample(1:5,234, replace=T)
Как я могу получить свой торт (ограниченный ассортимент) и съесть его (так сказать, перекошенное распределение).
Спасибо
1 ответ
set.seed(3)
hist(sample(1:10, size = 100, replace = TRUE, prob = 10:1))
Бета распределения принимает значения от 0 до 1. Если вы хотите, чтобы ваши ценности, чтобы быть от 0 до 5, например, то вы можете умножить их на 5. И, наконец, вы можете получить "перекос" с бета - распределением. Например, для перекоса можно получить эти три типа:
А используя R и бета-дистрибутивы, вы можете получить похожие дистрибутивы следующим образом. Обратите внимание, что зеленая вертикальная линия относится к среднему значению, а красная - к медиане:
x= rbeta(10000,5,2)
hist(x, main="Negative or Left Skewness", freq=FALSE)
lines(density(x), col='red', lwd=3)
abline(v = c(mean(x),median(x)), col=c("green", "red"), lty=c(2,2), lwd=c(3, 3))
x= rbeta(10000,2,5)
hist(x, main="Positive or Right Skewness", freq=FALSE)
lines(density(x), col='red', lwd=3)
abline(v = c(mean(x),median(x)), col=c("green", "red"), lty=c(2,2), lwd=c(3, 3))
x= rbeta(10000,5,5)
hist(x, main="Symmetrical", freq=FALSE)
lines(density(x), col='red', lwd=3)
abline(v = c(mean(x),median(x)), col=c("green", "red"), lty=c(2,2), lwd=c(3, 3))
Чтобы лучше понять, что делает примерная функция с целыми числами, используйте функцию barplot, а не функцию гистограммы:
set.seed(3)
barplot(table(sample(1:10, size = 100, replace = TRUE, prob = 10:1)))