フィルターのクリア

Integration for only positive values

15 ビュー (過去 30 日間)
Sim Kron
Sim Kron 2020 年 6 月 18 日
回答済み: Pasindu Ranasinghe 2021 年 12 月 20 日
Hi!
I would like to calculate the integral of an already estimated probability density function. This PDF was estimated with a SPLINE, which is "slightly" negative in certain areas. My SPLINE is saved as a "struct" and integrating it works just fine fnint(PDF). However, the resulting CDF is decreasing in those areas of negative densities, which I would like to avoid by simply replacing those areas of the PDF with 0.
My question: Is it possible to set those regions of the function equal to 0, or to integrate just over the positive values ot this PDF? I would like to avoid transforming the function into a vector of resulting densities, and instead use the (spline) function directly?
Thanks in advance!

回答 (2 件)

the cyclist
the cyclist 2020 年 6 月 19 日
Can you just replace your PDF with max(0,PDF) and proceed?
  9 件のコメント
the cyclist
the cyclist 2020 年 6 月 19 日
It wasn't clear to me which field of the structure you need to modify, but for example if it is coefs,then
PDF.coefs = max(PDF.coefs,0)
Sim Kron
Sim Kron 2020 年 6 月 19 日
Sry, I made a mistake: The whole file was too large to upload, so I just uploaded the data of an arbitrary PDF. By sheer coincidence, exatly this data set doesn't exhibit any negative densities... The data set I uploaded now should include negative densities.
Concerning your comment: This command just replaces negative coefficients with 0, right? But my intention would be to replace a potential negative output of each function of the spline with 0. In my case, the different parts of the spline are linear functions, so I would like to adjust the outcome f(x) of each part of the spline and not the coefficients itself.

サインインしてコメントする。


Pasindu Ranasinghe
Pasindu Ranasinghe 2021 年 12 月 20 日
How to integrate over the positive part of the function
lower_limit=-5; %Lower Limit of the integration
upper_limit=5; %Upper limit of the integration
Point_number=1000; %NUmber of points to be in the function
x_range=linspace(lower_limit,upper_limit,Point_number);
% Enter Function
syms x
f(x)=x^2+3*x-5
f(x) = 
y=f(x_range); %Getting function values
y_plus=subplus(y); %Getting only the Positive part
fprintf("Integration of the Positive Part %f",trapz(y_plus))
Integration of the Positive Part 5930.246783
%more plots
figure
plot(x_range,y_plus,"g","LineWidth",2);
hold on
plot(x_range,y,"r","LineWidth",1);
hold off
legend({'Positive Part','Input Function'});
xline(0);
yline(0);
title("Function")

カテゴリ

Help Center および File ExchangeSpline Postprocessing についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by