Matlab - рассчитать 95% интервал вокруг среднего

Если у меня есть вектор среднемесячных значений, например

aa = [1,2,3,2,1,3,5,3,4,8,9,7;...
    11,12,3,21,1,3,15,3,4,8,19,7;...
    21,2,3,2,1,23,5,3,34,84,9,7]';

где каждый столбец относится к среднемесячным значениям из разных мест, а каждая строка представляет месяц года. Я могу рассчитать среднее значение всех сайтов как:

mean_a = nanmean(aa,2);

и, таким образом, может представить их средние значения как:

plot(1:12, mean_a);

Как мне теперь рассчитать 95-процентный доверительный интервал вокруг этих средних значений?

Любой совет будет принят во внимание.

Моя попытка:

Предполагая нормальное распределение:

aa = [1,2,3,2,1,3,5,3,4,8,9,7;...
    11,12,3,21,1,3,15,3,4,8,19,7;...
    21,2,3,2,1,23,5,3,34,84,9,7]';

mean_a = nanmean(aa,2);
sem = (nanstd(aa')./sqrt(size(aa,2))).*1.96;
errorbar(1:12,mean_a,sem);

person KatyB    schedule 23.07.2014    source источник
comment
Если у вас есть основания полагать, что ваши данные распределяются нормально, то wikihow.com/Calculate-Confidence-Interval   -  person Dan    schedule 23.07.2014
comment
Ваш вопрос слишком широк. Как вы хотите рассчитать этот интервал? Вы можете сделать это, предполагая определенное распределение или напрямую используя свои данные (подобно начальной загрузке), чтобы оценить требуемые процентили.   -  person Luis Mendo    schedule 23.07.2014
comment
Предполагая, что данные распределены нормально, как рассчитать 95 % доверительный интервал вокруг среднего значения?   -  person KatyB    schedule 23.07.2014
comment
В идеале вам нужно знать среднее значение и стандартное отклонение этого распределения, а затем применить normcdf   -  person Luis Mendo    schedule 23.07.2014


Ответы (2)


Вычислите квантиль, используя quantile: или, если известно распределение, умножьте стандартное отклонение на правильное значение квантиля.

person patrik    schedule 23.07.2014
comment
Ну, 95-процентный доверительный интервал вокруг них составляет примерно mean +- std*1.96. так кажется. - person patrik; 23.07.2014

Я знаю, что это старый вопрос, но для протокола: вот функция с именем trust_intervals (), который даст любые доверительные интервалы для набора данных и может использоваться с функция errorbar() в Matlab. Его также можно использовать, учитывая необязательный аргумент, для нахождения доверительных интервалов с log-normal< /а> дисперсия.

Как и в вашем примере, код становится:

aa = [1,2,3,2,1,3,5,3,4,8,9,7;...
      11,12,3,21,1,3,15,3,4,8,19,7;...
      21,2,3,2,1,23,5,3,34,84,9,7]';

errorbar( 1:12, mean(aa), confidence_intervals( aa, 95 ) )
person JacobD    schedule 06.04.2017
comment
Спасибо, что поделился! - person Enrico Anderlini; 12.04.2017