Приспособьте студента t к неполному распределению - PullRequest
0 голосов
/ 14 мая 2018

Благодаря формуле закрытой формы (я работаю с нейтральной по риску плотностью, с этим королем формулы: формула RND , стр. 8), у меня есть неполное распределение этого типа:

RND estimate

Моя идея состояла бы в том, чтобы согласовать эту плотность со студентом.

Я уже пробовал пакеты MASS и fitdistrplus , но просто не могу найти способ выполнить свою задачу. Все, что я могу сейчас сделать, - это получить подогнанные параметры (m = 1702.041, s = 6.608536, df = 15.18036), но отсюда я не знаю, как получить мои подогнанные значения для моего распределения.

Образец кода:

temp = matrix(nrow=1000, ncol=3)
colnames(temp) = c("strikes", "first_density", "mulitply_first_density")
temp = as.data.frame(temp)

# we generate fake data
temp$strikes = seq(1000,2000,length=1000)
temp$first_density = runif(1000,max=0.006, min=1e-10)

# we multiply our first density to generate our sample
temp$mulitply_first_density = temp$first_density*1000000

# we generate our sample
vec = vector()
for (i in 1:nrow(temp))
{
    vec = c(vec, rep(temp$strike[i], temp$mulitply_first_density[i]))
}

# we laod our library
library("MASS")

# we fir our parameters
fitted_parameters = fitdistr(vec, "t")

1 Ответ

0 голосов
/ 15 мая 2018

Формула для функции t-плотности с использованием параметров местоположения и масштаба приведена в примерах документации как mydt.

#simulated data
set.seed(42)
x <- rt(1e4, 7, 10)
plot(density(x))

library(MASS)
fitted_parameters = fitdistr(x, "t", start = list(df = 10, m = 10, s = 5))
#      df             m             s     
#  3.81901649   10.56816146    2.66905346 
#( 0.15295551) ( 0.03448627) ( 0.03361758)

mydt <- function(x, m, s, df) dt((x-m)/s, df)/s
curve(do.call(mydt, c(list(x), as.list(fitted_parameters$estimate))), add = TRUE, col = "red")
legend("topright", legend = c("kernel density estimate", "fitted t distribution"), 
       col = c("black", "red"), lty = 1)

resulting plot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...