rthin

rthin applies independent random thinning to a point pattern.

Syntax

Description

This function was ported to matlab from the R spatstat package, developed by Adrian Baddeley (Adrian.Baddeley@curtin.edu.au), Rolf Turner (r.turner@auckland.ac.nz) and Ege Rubak (rubak@math.aau.dk) for the statistical analysis of spatial point patterns. The algorithm for random thinning was changed in spatstat version 1.42-3. Our matlab porting is based on a earlier version. See the rthin documentation in spatstat for more details.

In a random thinning operation, each point of X is randomly either deleted or retained (i.e. not deleted). The result is a point pattern, consisting of those points of X that were retained. Independent random thinning means that the retention/deletion of each point is independent of other points.

example

Y =rthin(X, P) Random thinning on a mixture of normal distribution.

example

[Y , retain] =rthin(___) Random thinning on the fishery dataset.

Examples

expand all

  • Random thinning on a mixture of normal distribution.
  • Data

    clear all; close all;
    data=[randn(500,2);randn(500,1)+3.5, randn(500,1);];
    x = data(:,1);
    y = data(:,2);
    % Data density
    [density,xout,bandwidth]   = kdebiv(data,'pdfmethod','fsda');
    xx = xout(:,1);
    yy = xout(:,2);
    zz = density;
    % plot of data and density
    figure;
    [xq,yq] = meshgrid(xx,yy);
    density = griddata(xx,yy,density,xq,yq);
    contour3(xq,yq,density,50), hold on
    plot(x,y,'r.','MarkerSize',5)
    title(['Original data (' num2str(numel(y)) ' units) with density contour'],'FontSize',16);
    %Interpolate the density and apply thinning using retention probabilities (1 - pdfe/max(pdfe))
    F = TriScatteredInterp(xx(:),yy(:),zz(:));
    pdfe = F(x,y);
    pretain = 1 - pdfe/max(pdfe);
    [Xt , Xti]= rthin([x y],pretain);
    % rthin retention probabilities
    [psorted ii] = sort(pretain);
    figure;
    plot(x,y,'r.','MarkerSize',5);
    hold on;
    plot(x(ii(1:100)),y(ii(1:100)),'bx','MarkerSize',5);
    title('The 100 units with smaller retention probabilities','FontSize',16);
    % now estimate the density on the retained units
    %[tdensity,txout,tbandwidth] = ksdensity(Xt);
    [tdensity,txout,tbandwidth]  = kdebiv(Xt,'pdfmethod','fsda');
    txx = txout(:,1);
    tyy = txout(:,2);
    tzz = tdensity;
    % and plot the retained units with their density superimposed
    figure;
    [txq,tyq] = meshgrid(txx,tyy);
    tdensity = griddata(txx,tyy,tdensity,txq,tyq);
    contour3(txq,tyq,tdensity,50), hold on
    plot(x(Xti),y(Xti),'b.','MarkerSize',5);
    title(['Retained data (' num2str(numel(y(Xti))) ' units) with new density contour'],'FontSize',16);
    cascade;
    Click here for the graphical output of this example (link to Ro.S.A. website). Graphical output could not be included in the installation file because toolboxes cannot be greater than 20MB. To load locally the image files, download zip file http://rosa.unipr.it/fsda/images.zip and unzip it to <tt>(docroot)/FSDA/images</tt> or simply run routine <tt>downloadGraphicalOutput.m</tt>

  • Random thinning on the fishery dataset.
  • load data and add some jittering, because duplicated units are not treated

    clear all; close all;
    load('fishery.txt');
    fishery = fishery + 10^(-8) * abs(randn(677,2));
    x = fishery(:,1);
    y = fishery(:,2);
    % Data density
    [density,xout,bandwidth]   = kdebiv(fishery,'pdfmethod','fsda');
    xx = xout(:,1);
    yy = xout(:,2);
    zz = density;
    % plot of data and density
    figure;
    [xq,yq] = meshgrid(xx,yy);
    density = griddata(xx,yy,density,xq,yq);
    contour3(xq,yq,density,50), hold on
    plot(x,y,'r.','MarkerSize',8)
    xlim([0 300]); ylim([0 2000]);
    set(gca,'CameraPosition',[-216 -12425 0.0135]);
    title({['Zoom on fishery data (' num2str(numel(y)) ' units) with density contour'] , 'Probability mass concentrated close to the origin'},'FontSize',16);
    %Interpolate the density and apply thinning using retention
    %probabilities equal to 1 - pdfe/max(pdfe)
    F = TriScatteredInterp(xx(:),yy(:),zz(:));
    pdfe = F(x,y);
    pretain = 1 - pdfe/max(pdfe);
    [Xt , Xti]= rthin([x y],pretain);
    % now estimate the density on the retained units
    [tdensity,txout,tbandwidth]  = kdebiv(Xt,'pdfmethod','fsda');
    txx = txout(:,1);
    tyy = txout(:,2);
    tzz = tdensity;
    % and plot the retained units with their density superimposed
    figure;
    [txq,tyq] = meshgrid(txx,tyy);
    tdensity = griddata(txx,tyy,tdensity,txq,tyq);
    contour3(txq,tyq,tdensity,50), hold on
    plot(x(Xti),y(Xti),'b.','MarkerSize',8);
    xlim([0 300]); ylim([0 2000]);
    set(gca,'CameraPosition',[-216 -12425 0.0002558 ]);
    title({['Zoom on retained on the fishery data (' num2str(numel(y(Xti))) ' units) with density contour'] , 'Probabiity mass is smoother'},'FontSize',16);
    cascade;
    Click here for the graphical output of this example (link to Ro.S.A. website). Graphical output could not be included in the installation file because toolboxes cannot be greater than 20MB. To load locally the image files, download zip file http://rosa.unipr.it/fsda/images.zip and unzip it to <tt>(docroot)/FSDA/images</tt> or simply run routine <tt>downloadGraphicalOutput.m</tt>

    Input Arguments

    expand all

    X — Vector with the data to be thinned. Data can represent a point pattern.

    Data Types: single| double

    P — Vector giving the retention probabilities, i.e. the probability that each point in X will be retained.

    It can be:

    - a single number, so that each point will be retained with the same probability P;

    - a vector of numbers, so that the ith point of X will be retained with probability P(i);

    - a function P(x,y), so that a point at a location (x,y) will be retained with probability P(x,y);

    - a pixel image, containing values of the retention probability for all locations in a region encompassing the point pattern.

    If P is a function, it should be vectorised, that is, it should accept vector arguments x,y and should yield a numeric vector of the same length. The function may have extra arguments which are passed through the argument.

    Data Types: single| double

    Output Arguments

    expand all

    Y —the retained data units. Vector

    In practice, Y = X(retain,:).

    retain —the indices of the retained points in the original data X. Vector

    The ith point of X is retained with probability P(i).

    Optional Output:

    References

    Bowman, A.W. and Azzalini, A. (1997), "Applied Smoothing Techniques for Data Analysis", Oxford University Press.

    Acknowledgements

    This function was ported to matlab from the R spatstat package, developed by Adrian Baddeley (Adrian.Baddeley@curtin.edu.au), Rolf Turner (r.turner@auckland.ac.nz) and Ege Rubak (rubak@math.aau.dk) for the statistical analysis of spatial point patterns. The algorithm for random thinning was changed in spatstat version 1.42-3. Our matlab porting is based on a previous version. See the rthin documentation in spatstat for more details.

    See Also

    This page has been automatically generated by our routine publishFS