Маркировка графика плотности

Как на следующем графике я могу напечатать только значения стандартного отклонения по оси x?

R печатает 5, 7, 10, 13, 15, 19, 20, 22, 25.

x <- rnorm(3e3, 16, 3)
plot(density(x), type = "l", lwd = 2, col = 254,
main = "Random Variable X", xact = "n")
axis(side = 1, at = c(7, 10, 13, 19, 22, 25),
labels = c("7","10","13","19", "22", "25"))
abline(v = 16, lwd = 2)
abline(v = c(7, 10, 13, 19, 22, 25), col = "darkgreen")

Спасибо..


person Locksmith    schedule 24.10.2017    source источник
comment
Кажется, у вас опечатка в описании сюжета. где вы написали xact = "n") я думаю, вы имели в виду xaxt = "n")   -  person G5W    schedule 24.10.2017


Ответы (2)


Что-то вроде этого:

x <- rnorm(3e3, 16, 3);
plot(
    density(x), 
    type = "l", lwd = 2, col = 254,
    main = "Random Variable X", xaxt = "n");
axis(
    side = 1, 
    at = mean(x) + seq(-3, 3, by = 1) * sd(x),
    labels = seq(-3, 3, by = 1));

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

По оси x показаны единицы sd в области [-3σ, +3σ].

person Maurits Evers    schedule 24.10.2017

Вот еще один метод.

Другой вариант того же - удалить x <- scale(x) и получить y <- dnorm(x, mean(x), sd(x)). Думаю, легко понять, что я сделал.

Разница между этим методом и использованием density(x) заключается в том, как оценивается плотность.

Если вы знаете параметрическое распределение, в данном случае нормальное распределение, и есть возможность оценить оценки максимального правдоподобия, mean(x), sd(x), вы можете также использовать их для оценки плотности.

set.seed(42)
rnorm(3e3, 16, 3)

# normalize N(0, 1)
x <- scale(x)
# order so plotting is easy
x <- x[order(x)]
# density 
y <- dnorm(x)
plot(x, y, type = "l", lwd = 2, col = 254, ylab = "density", 
    main = "Random Variable X")

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

person Suren    schedule 24.10.2017