Здравствуйте.
Прошу помощи в решении следующей задачи (если решение существует):
Есть массив цен. Для первого простого варианта предположим что они представляют собой броуновское движение (сумма независимых нормально распределенных величин со средним 0 и ско=1)
Дальше мы делаем квантование по цене (округляем до ближайшего целого)
Вот немного кода на R:
Код:
> x = cumsum(rnorm(1000000)) # моделируем 1 млн. цен
> plot.ts(x) # нарисуем график
> sd(diff(x)) # оценим ско
[1] 0.9985503
> x_round = round(x, 0) # округляем цены до ближайшего целого (0 знаков после комы)
> sd(diff(x_round)) # оценим ско
[1] 1.0789
> xq = x_round[c(T, diff(X_round)!=0)] # удаляем идущие подряд одинаковые значения
> length(xq) # размер массива после удаления
[1] 630838
> sd(diff(xq)) # оценим ско
[1] 1.358383
Задача состоит в том как по имеющимся уже квантованным ценам (xq), их дисперсии/ско и величине q(интервал квантования) оценить дисперсию/ско оригинального ряда.
https://ccrma.stanford.edu/~jos/mdft/Round_Off_Error_Variance.html - здесь есть формула вычисления дисперсии ошибки квантования:
проверим распределение ошибок:
Код:
> hist(x_round - x)
как видно распределение равномерное.
Вычислим дисперсию и ско для этого случая:
Код:
> q = 1
> var = q^2 / 12
> var
[1] 0.08333333
> cko = sqrt(var)
> cko
[1] 0.2886751
Оценочное ско равно:
Код:
> sd(x_round - x)
[1] 0.2888048
практически совпадают. а вот как вычислить ско начального ряда никак не пойму. есть идеи?
Заранее спасибо за любую информацию.