Parameterised PSD Showing Higher Values When Compared To Non-Parameterised PSDs?

,

Hello!

I am currently conducting a comparison of alpha and theta band power across different age groups. I'm exploring the differences between the conventional approach (comparisons using Power Spectral Densities (PSDs) with both periodic and aperiodic components) and the parameterisation of the data (using PSDs of just the periodic components).

I plotted both PSDs to take a look at the data, but I realised that the highest value in my regular PSD went up to 70, while the highest value in my parameterized PSD was 80.

I'm not too sure if I've done something wrong because to my understanding, the parameterised PSD should actually show smaller values, since you'd be subtracting the power contributions from the aperiodic components, while the regular PSD reflects both components.

This is what I did to compute my values, maybe I did something wrong along the way. For my regular PSD, I computed Welch's PSD with a 4s Hamming window and 50% overlap segments. I then ran that through the FOOOF algorithm to extract the peaks.

I realised that when I extracted the values for my regular PSD, the values were very small (E-12). Meanwhile, the values I extracted from the FOOOF peaks were relatively larger (E+00), so I wasn't sure how to interpret these units. I did a bit of searching on these discussions and came across these threads:

  1. PSD Log Transformation
  2. Unit of Power

So I figured that the units in the FOOOF peaks are already in μV2/Hz, while the regular PSD was in signal units and needed to be transformed to microV. I divided my regular PSD units by (1e-6)^2. I assumed that meant that both units from the regular PSD and FOOOF PSD were comparable now, but maybe I was wrong to assume so.

I would greatly appreciate any insight to this matter, many thanks in advance!
Jonas

Thanks Jonas,

Would you mind posting a few screen captures to illustrate the issue, please?
Pinging @Luc for his expert input here.

Thanks for the mention! Happy to help here.

What sounds to be the issue to me is the interpretation of the periodic components derived from specparam (FOOOF). Specifically, they are given as relatively large values (E+00) compared to the PSD and aperiodic.

You can interpret the values of periodic power best in log-power space, as this is the environment that they are separated (and combined) using specparam. In this way, log rules specify that when two components are added in log-space, they are actually multiplied in their normal space! Mathematically:

log(A) + log(B) = log(A*B)

So because specparam separates periodic from aperiodic components in log-space, you would need to interpret the spectral model as periodic components acting as multipliers of aperiodic power (i.e., their interpretation depends on aperiodic power, even after both components are separated). For this reason, they are only really interpretable in log-power.

To maintain data legibility within Brainstorm, they are transformed to regular power (10^log-power). For the above reasons, this format is not really interpretable (unless you incorporate the aperiodic). It is completely reasonable to provide band-limited power measures in the order of E-12, and the closest equivalent using specparam would be to provide the spectral power of the model at the centre frequency of the identified peak. Otherwise, you will have to report power values around E+00 (but even so, it is more conventional and interpretable to keep these in log-power).

I hope this helps, but please don't hesitate to reach out for clarifications! :slight_smile:

Luc

2 Likes

Thanks a bunch Luc!

I really appreciate the quick and detailed response!

Just so I can clarify, the output values for my periodic power when I export to MATLAB is transformed to regular power (10^log-power). However, it would be better for me to report these values in log-power instead, as regular power is not really interpretable without the aperiodic components?

How can I go around transforming my output into log-power? Would it be possible to simply run log(10^log-power) to transform it in MATLAB or is there a way to export the log-power directly from Brainstorm?

Also you've mentioned providing the spectral power of the model at the centre frequency. How should I go about doing that?

Thanks a lot, I really appreciate the help!
Jonas

Hi Jonas!

My pleasure, happy to help. :slight_smile:

Just so I can clarify, the output values for my periodic power when I export to MATLAB is transformed to regular power (10^log-power).

Yes, the data in the fields fooofed_spectrum, peak_model, and aperiodic_model are all converted to regular power.

However, it would be better for me to report these values in log-power instead, as regular power is not really interpretable without the aperiodic components?

When it comes to reporting differences in power (between PSD and specparam outputs), it would be more interpretable to report periodic power from specparam using log-power. For this reason, you might consider reporting PSD band-limited power using log-power as well. Though here, you will still see orders of magnitude difference between both methods (PSD values around -120 and specparam values around 10; because of the aperiodic), so direct comparisons between both approaches are difficult. Usually, someone comparing methods would look at differences in PSD band-limited power between e.g., conditions, and compare the effect significance/size to that of periodic power differences between conditions from specparam. [This was a bit long, but I hope it makes sense!]

How can I go around transforming my output into log-power? Would it be possible to simply run log(10^log-power) to transform it in MATLAB or is there a way to export the log-power directly from Brainstorm?

Yes, you can simply compute the log10 of the contents of the above data fields within MATLAB. Unfortunately, there is not a way to do this within Brainstorm, but if you would like to avoid repeating the computation every time you want to display the data, you could always overwrite the data contents with your log-transformed versions (but they would no longer be visible if you imported them back into Brainstorm until they were 10^ again).

Also you've mentioned providing the spectral power of the model at the centre frequency. How should I go about doing that?

Several ways to do this. If you want just the power at the centre frequency of your periodic component, you can use the amplitude parameter (this is the simplest way, but only works as long as no other periodic components are close by, otherwise they mix and distort the power slightly). If there are other periodic components nearby, the safest way is to find the sampled frequency closest to the centre frequency and look up the power value corresponding to this frequency in peak_model. Finally, if you want the spectral power of the full specparam model (aperiodic + periodic), do the same as previous but find the corresponding value in fooofed_spectrum.

Hope this all helps! If anything comes up, I'd be happy to help troubleshoot. :slight_smile:

Luc

2 Likes

Hi Luc!

Thanks, you've been amazing! It makes a lot more sense to me now and I think I have a better idea on how to proceed with my data.

Once again, I really appreciate you taking the time out provide such detailed responses, you've been so helpful!

Cheers!
Jonas

1 Like