Loop to calculate multiple P values
5 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
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 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!