You can reproduce these plots in Matlab or GNU Octave softwares just by the *.m code script below and the originally downloaded *.csv data files.
As you can see, all data processing is faithful to the original data. No extra selection, filtering or error correction procedures were adopted.
Due to the lack of specific experimental details, only a general boxplot is plotted to describe the distribution of all subjective rating data for each target curve.
No further investigations into the influences of the assessors, the pieces of sound samples and the experiment trials were included in the code and the plots. I am not familiar with Sean Olive's data processing and logical inference procedures either. Happy to see further discussions and your opimions.
Code:clear;clc table1 = readtable("data\MagnitudeFrequencyResponses.csv"); table2 = readtable("data\PreferenceRatings.csv"); freq0 = table1{1,2:end}; targets = struct; count = 1; for i = 2:height(table1) targets(count).name = table1{i,1}; targets(count).freq = freq0; targets(count).gain = table1{i,2:end}; count = count + 1; end target_names = [targets(:).name]; figure(231011003);clf(231011003); for i = 1:length(targets) semilogx(targets(i).freq, targets(i).gain); grid on; hold on; end xlim([30,25000]); xlabel('Freq (Hz)'); ylabel('Gain (dB)'); legend(target_names, 'Location', 'eastoutside'); figure(231011004); clf(231011004); boxplot(table2.Rating, table2.HeadphoneCurve); ylabel('Rating');
Thanks a lot for the answer, amazing work. I am not familiar with Matlab, but reading the documentation, am I understanding it correctly that the box plot command produces the median value, as well as the 25th and 75th percentiles ?