Loop to calculate multiple P values

조회 수: 4 (최근 30일)
Ross Thompson
Ross Thompson 2021년 4월 22일
편집: Scott MacKenzie 2021년 4월 23일
I have a csv file with heartrate data throughout a day. Currently i have a function which will run a ttest on 2 groups of 60 datapoints which is split about a set point in the day (noon in this case). I want to create some kind of loop which will keep moving the split point in the dataset on and calculate a new p-value each time. I basically want to be able to plot and track the p-values throughout the day to determine when it falls below a certain threshold. Any ideas about how i could go bout doing this?
data = readtable('2021-02-07.csv');
noonindex = find(data.noonTime==1);
A = data.HeartRate(noonindex-60:noonindex);
B = data.HeartRate(noonindex+1:noonindex+61);
[h, p, ci] = ttest2(A,B)
  댓글 수: 8
Ross Thompson
Ross Thompson 2021년 4월 23일
And then theres the noontime column but i dont think thats relevent
Scott MacKenzie
Scott MacKenzie 2021년 4월 23일
편집: Scott MacKenzie 2021년 4월 23일
OK, it seems there's an entry ever 2 minutes. Why don't you just iterate down the table and insert the code shown in the original question, except using i as the split point:
n = height(data);
for i=n+60:n-61
A = data.HeartRate(i-60:i);
B = data.HeartRate(i+1:i+61);
[h, p, ci] = ttest2(A,B)
end
If you want to start at i=1 and end at i=n, then there's a bit more work to do:
n = height(data);
for i=1:n-1
lowerIdx = max(1, i-60);
upperIdx = min(n, i+60)
A = data.HeartRate(lowerIdx:i);
B = data.HeartRate(i+1:upperIdx);
[h, p, ci] = ttest2(A,B)
% display results, or whatever you want to do at each iteration
end

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

Help CenterFile Exchange에서 Develop Apps Using App Designer에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by