Хорошо, я боролся с этим некоторое время.
Я вычисляю скользящую дисперсию. Я использую ручной расчет отклонения, а затем перекрестную проверку с var()
Для отслеживания буду использовать мой расчет дисперсии с поправкой на n-1
Рассчитать среднее значение выборки. ...
Вычтите среднее значение из каждой точки данных. ...
Квадрат каждый результат. ...
Найдите сумму квадратов значений. ...
Разделите на n - 1, где n - количество точек данных.
xi = [1.0,2.0,3.0,4.0,5.0,6.0]
# initalize arrays
xi_sum = zeros(xi)
xi_mean = zeros(xi)
xi_mean_dev = zeros(xi)
xi_mean_dev_sq = zeros(xi)
xi_sum_mean_dev_sq = zeros(xi)
xi_var_corrected = zeros(xi)
# loop
i=1
for i = 1:size(xi,1)
xi_sum[i] = sum(xi[1:i])
xi_mean[i] = xi_sum[i] / i
xi_mean_dev[i] = xi[i] - xi_mean[i]
xi_mean_dev_sq[i] = xi_mean_dev[i]^2
xi_sum_mean_dev_sq[i] = sum(xi_mean_dev_sq[1:i])
xi_var_corrected[i] = xi_sum_mean_dev_sq[i] / (i-1) # n-1
end
С выводом:
julia> xi_var_corrected
6-element Array{Float64,1}:
NaN
0.25
0.625
1.16667
1.875
2.75
Если проверить с помощью var ()
var_verify = zeros(xi)
for i = 1:size(xi,1)
var_verify[i] = var(xi[1:i],corrected=true)
end
julia> var_verify
6-element Array{Float64,1}:
NaN
0.5
1.0
1.66667
2.5
3.5
Также с:
julia> var(xi)
3.5
Если я подтверждаю в R:
> test = c(1,2,3,4,5,6)
> var(test)
[1] 3.5
Финал 3,5 против моих 2,75.
Мой вопрос - я в растерянности относительно того, почему мой ручной расчет отклонений не дает тот же ответ, что и var (), R var ().
Причина, по которой я разбираю дисперсию, заключается в том, что при вычислении наклона регрессии в stdev существует много перекрестных вычислений, корреляция - поэтому, если я могу разбить это, я могу сократить время обработки +, если я вычислю на каждом [i] вместо этого в диапазонах, как указано выше. Я могу сделать это быстрее. В любом случае, кто-нибудь видит, где я ошибаюсь при расчете дисперсии?
Спасибо
Редактировать
Я вижу это сейчас - для каждого 1: я
Мне нужно окончательное среднее значение для каждого значения i, затем вычтите его из предыдущих значений, чтобы правильно отцентрировать его.