Вот ваши первые 2 вопроса:
myhist <- hist(x,prob=FALSE,col="gray",xlim=c(0,100))
dens <- density(x)
axis(side=1, at=seq(0,100, 20), labels=seq(0,100,20))
lines(dens$x,dens$y*(1/sum(myhist$density))*length(x))
Гистограмма имеет ширину ячейки 5, которая также равна 1/sum(myhist$density)
, тогда как density(x)$x
- это небольшие скачки, около 0,2 в вашем случае (512 четных шагов). sum(density(x)$y)
- это какое-то странное число, которое определенно не равно 1, но это потому, что оно идет небольшими шагами, а при делении на интервал x оно составляет примерно 1: sum(density(x)$y)/(1/diff(density(x)$x)[1])
. Вам не нужно делать это позже, потому что он уже сопоставлен со своими нечетными значениями x. Масштаб 1) для ширины ячейки hist()
и 2) для частоты x length(x)
, как говорит DWin. Тик последней оси стал видимым после установки аргумента xlim
.
Чтобы решить вашу проблему 2, настройте график с правильными размерами (xlim
и ylim
), с помощью type = "n"
, затем нарисуйте 3 линии для плотностей, масштабированных с использованием чего-то похожего на линию плотности выше. Однако подумайте, хотите ли вы, чтобы эти полунепрерывные линии отражали высоту воображаемых столбцов с шириной бина 5 ... Вы видите, как это может привести к тому, что линии плотности будут преувеличивать значения в любой конкретной точке?
