Bin data and fit curve
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
MiauMiau
el 20 de Jun. de 2017
Comentada: Farooq Muhammad
el 17 de Mzo. de 2022
Hi, I have the following data:
- A vector of physical stimulus properties, something like: [0.8, 0.7, 0.56,0.4,....,0.01]
- For each of the vector's elements, the response of the subject (either "0" or "1").
What I want: I want to bin the data with the physical stimuli, and determine the percentage of "1"s responded for this bin (it would be the percentage of correct answers for the bin).
Additionally, I want a curve fittet through these percentages. I know about the hist function, but I am not sure of how I can apply it here. Thanks
1 comentario
Farooq Muhammad
el 17 de Mzo. de 2022
hi all
i want the answer to simulation question.
i have the error plot of height above the sea level w.r.t to some reference system.
i want to bin the x axis and curve fit the bins using curve fitting tool or something else to know how error is behaving w.r.t height above the sea level.
help requierd.
Respuesta aceptada
Walter Roberson
el 20 de Jun. de 2017
binedges = 0 : 0.1 : 1; %set as appropriate
[~, ~, binnumber] = histcounts( StimulusVector, binedges );
maxbin = max(binnumber);
count0 = accumarray(binnumber, Response == '0', [1 maxbin]);
count1 = accumarray(binnumber, Response == '1', [1 maxbin]);
total_for_bins = count0 + count1;
percent_per_bin = count1 ./ max(1,total_for_bins) * 100;
If you only need the percentages and not the counts, you can make this a bit shorter:
binedges = 0 : 0.1 : 1; %set as appropriate
[~, ~, binnumber] = histcounts( StimulusVector, binedges );
percent_per_bin = accumarray(binnumber, Response == '1', [], @mean) * 100;
To fit a curve:
x = (binedges(1:end-1) + binedges(2:end))/2;
y = percent_per_bin;
and now you can fit your curve on x and y using whatever distribution seems suitable. You might want to look inside histfit() to see how it does the fitting and plotting.
7 comentarios
Walter Roberson
el 20 de Jun. de 2017
You wrote that the response is (either "0" or "1") so my interpretation is that the responses are the characters '0' or '1' . If they are instead the numeric values 0 or 1 then change the '1' in the code to plain 1
Más respuestas (0)
Ver también
Categorías
Más información sobre Fit Postprocessing en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!