Образец t-теста в Matlab - PullRequest
       40

Образец t-теста в Matlab

1 голос
/ 20 октября 2019

В Matlab мне нужно сгенерировать две гауссовские случайные выборки с распределениями:

  1. N(100,5)
  2. N(115,15)

Затем запустите симуляцию1000 раз и вычислите, сколько раз нулевая гипотеза отклонялась из 1000 раз для сканирования каждого размера выборки от 2 до 50.

Наконец, мне нужно нанести на график результат отклонений H0 против образца. размер.

h = zeros(1000,1);
k = 0;

for i = 1:1000
    r1 = ();
    r2 = ();
    for j= 2:50
        r1(j-1)=normrnd(100,5,[1,j]);
        r2(j-1)=normrnd(110,15,[1,j]);
    end
    h(i)=ttest2(r1,r2)
    if h(i)==1
        k=k+1;
    end
    percent_of_rejection_Null=(k/1000*100);
end
%plot(h vs sample_size)

Может ли кто-нибудь помочь мне исправить вышеуказанный код?

1 Ответ

3 голосов
/ 20 октября 2019

Было несколько проблем с вашим кодом:

  1. ri - это вектор изменяющегося размера, поэтому вам нужно добавить его в структуру, которая может хранить элементы с разными размерами -> массив ячеек.
  2. percent_of_rejection_Null должен быть вектором для хранения всех значений.
  3. Вы не указали, какой тип графика вы ищете, я показал гистограмму, но это легкочтобы приспособиться к нужному вам.
  4. вычисление h было проблематичным, поэтому вектор 50 каждой итерации, следовательно, необходимо вычислить сумму 1.

Кусок кода:

h = zeros(1000,1);
percent_of_rejection_Null = zeros(1000,1);
k = 0;

for i = 1:1000
    r1 = {};
    r2 = {};
    for j= 2:50
        r1{j-1}=normrnd(100,5,[1,j]);
        r2{j-1}=normrnd(110,15,[1,j]);
    end
    h = cellfun(@ttest2, r1, r2);
    k = sum(h==1);
    percent_of_rejection_Null(i) = (k/1000*100);
end
figure;
plot(percent_of_rejection_Null)

Полученный график:

enter image description here

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

...