Как предложил @dash2, CDF потребуется, чтобы вы интегрировали PDF, по сути, вам нужно найти область под кривой.
Вот общее решение, которое должно помочь. В качестве примера я использую распределение Гаусса — вы должны иметь возможность передать ему любую общую функцию.
Обратите внимание, что указанные квантили являются приблизительными. Также не забудьте заглянуть в документацию по integrate()
.
# CDF Function
CDF <- function(FUNC = p, plot = T, area = 0.5, LOWER = -10, UPPER = 10, SIZE = 1000){
# Create data
x <- seq(LOWER, UPPER, length.out = SIZE)
y <- p(x)
area.vec <- c()
area.vec[1] <- 0
for(i in 2:length(x)){
x.vec <- x[1:i]
y.vec <- y[1:i]
area.vec[i] = integrate(p, lower = x[1], upper = x[i])$value
}
# Quantile
quantile = x[which.min(abs(area.vec - area))]
# Plot if requested
if(plot == TRUE){
# PDF
par(mfrow = c(1, 2))
plot(x, y, type = "l", main = "PDF", col = "indianred", lwd = 2)
grid()
# CDF
plot(x, area.vec, type = "l", main = "CDF", col = "slateblue",
xlab = "X", ylab = "CDF", lwd = 2)
# Quantile
mtext(text = paste("Quantile at ", area, "=",
round(quantile, 3)), side = 3)
grid()
par(mfrow = c(1, 1))
}
}
# Sample data
# PDF Function - Gaussian distribution
p <- function(x, SD = 1, MU = 0){
y <- (1/(SD * sqrt(2*pi)) * exp(-0.5 * ((x - MU)/SD) ^ 2))
return(y)
}
# Call to function
CDF(p, area = 0.5, LOWER = -5, UPPER = 5)
person
royr2
schedule
21.03.2017
stats::integrate
- person   schedule 21.03.2017library(Ryacas)
илиlibrary(Rsympy)
- person   schedule 21.03.2017b
? - person Amanda R.   schedule 21.03.2017b
я должен установить? - person Amanda R.   schedule 21.03.2017b
нет значения по умолчанию. Это зависит от того, для какого региона вы хотите рассчитать площадь. Может быть, переместитьb
в качестве первого параметра и оставитьa
необязательным? И что касается функции квантили, мы здесь не для того, чтобы проверять вашу домашнюю работу по статистике. Если у вас есть конкретный вопрос или проблема, связанная с программированием, сообщите об этом. Дайте образец ввода и желаемый результат. - person MrFlick   schedule 21.03.2017