# MetricSDNMPublisherPayout (ARX GUI Documentation)

org.deidentifier.arx.metric.v2

## Class MetricSDNMPublisherPayout

- java.lang.Object
- - org.deidentifier.arx.metric.Metric<ILSingleDimensional>
  - - org.deidentifier.arx.metric.v2.AbstractMetricSingleDimensional
    - - org.deidentifier.arx.metric.v2.MetricSDNMPublisherPayout

- All Implemented Interfaces:
    java.io.Serializable

      public class MetricSDNMPublisherPayout
      extends AbstractMetricSingleDimensional

  This class implements a model which maximizes publisher benefit according to the model proposed in:
  A Game Theoretic Framework for Analyzing Re-Identification Risk. Zhiyu Wan, Yevgeniy Vorobeychik, Weiyi Xia, Ellen Wright Clayton, Murat Kantarcioglu, Ranjit Ganta, Raymond Heatherly, Bradley A. Malin PLOS|ONE. 2015.
  See Also:
    Serialized Form

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class org.deidentifier.arx.metric.Metric

      `Metric.AggregateFunction`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `MetricSDNMPublisherPayout(boolean journalistAttackerModel)` Creates a new instance.
    `MetricSDNMPublisherPayout(boolean journalistAttackerModel, double gsFactor)` Creates a new instance

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `ILSingleDimensional` | `createMaxInformationLoss()` Returns an instance of the maximal value.
    `ILSingleDimensional` | `createMinInformationLoss()` Returns an instance of the minimal value.
    `MetricConfiguration` | `getConfiguration()` Returns the configuration of this metric.
    `ARXCostBenefitConfiguration` | `getCostBenefitConfiguration()` Returns the cost/benefit configuration
    `protected ILSingleDimensionalWithBound` | `getInformationLossInternal(org.deidentifier.arx.framework.lattice.Transformation transformation, org.deidentifier.arx.framework.check.groupify.HashGroupify groupify)` Evaluates the metric for the given node.
    `protected InformationLossWithBound<ILSingleDimensional>` | `getInformationLossInternal(org.deidentifier.arx.framework.lattice.Transformation transformation, org.deidentifier.arx.framework.check.groupify.HashGroupifyEntry entry)` Returns the information loss that would be induced by suppressing the given entry.
    `protected ILSingleDimensional` | `getLowerBoundInternal(org.deidentifier.arx.framework.lattice.Transformation transformation)` Returns a lower bound for the information loss for the given node.
    `protected ILSingleDimensional` | `getLowerBoundInternal(org.deidentifier.arx.framework.lattice.Transformation transformation, org.deidentifier.arx.framework.check.groupify.HashGroupify groupify)` Returns a lower bound for the information loss for the given node.
    `java.lang.String` | `getName()` Returns the name of metric.
    `protected void` | `initializeInternal(org.deidentifier.arx.framework.data.DataManager manager, DataDefinition definition, org.deidentifier.arx.framework.data.Data input, org.deidentifier.arx.framework.data.GeneralizationHierarchy[] hierarchies, ARXConfiguration config)` Implement this to initialize the metric.
    `boolean` | `isAbleToHandleMicroaggregation()` Returns whether this metric handles microaggregation
    `boolean` | `isGSFactorSupported()` Returns whether a generalization/suppression factor is supported
    `boolean` | `isJournalistAttackerModel()` Returns whether the journalist attacker model is being assumed.
    `boolean` | `isProsecutorAttackerModel()` Returns whether the prosecutor attacker model is being assumed.
    `ElementData` | `render(ARXConfiguration config)` Renders the privacy model
    `java.lang.String` | `toString()` Returns the name of metric.

    - ### Methods inherited from class org.deidentifier.arx.metric.v2.AbstractMetricSingleDimensional

      `createInformationLoss, createInformationLoss, getDimensions, getDimensionsAggregated, getDimensionsGeneralized, getMicroaggregationDomainSizes, getMicroaggregationFunctions, getMicroaggregationStartIndex, getNumTuples, setNumTuples`

    - ### Methods inherited from class org.deidentifier.arx.metric.Metric

      `createAECSMetric, createAECSMetric, createAmbiguityMetric, createDiscernabilityMetric, createDiscernabilityMetric, createEntropyBasedInformationLossMetric, createEntropyBasedInformationLossMetric, createEntropyMetric, createEntropyMetric, createEntropyMetric, createEntropyMetric, createEntropyMetric, createEntropyMetric, createHeightMetric, createHeightMetric, createInstanceOfHighestScore, createInstanceOfLowestScore, createKLDivergenceMetric, createLossMetric, createLossMetric, createLossMetric, createLossMetric, createMetric, createNormalizedEntropyMetric, createNormalizedEntropyMetric, createPrecisionMetric, createPrecisionMetric, createPrecisionMetric, createPrecisionMetric, createPrecisionMetric, createPrecisionMetric, createPrecisionMetric, createPrecisionMetric, createPrecomputedEntropyMetric, createPrecomputedEntropyMetric, createPrecomputedEntropyMetric, createPrecomputedEntropyMetric, createPrecomputedEntropyMetric, createPrecomputedEntropyMetric, createPrecomputedLossMetric, createPrecomputedLossMetric, createPrecomputedLossMetric, createPrecomputedLossMetric, createPrecomputedNormalizedEntropyMetric, createPrecomputedNormalizedEntropyMetric, createPublisherPayoutMetric, createPublisherPayoutMetric, createStaticMetric, createStaticMetric, getAggregateFunction, getDescription, getDescription, getGeneralizationFactor, getGeneralizationSuppressionFactor, getInformationLoss, getInformationLoss, getLowerBound, getLowerBound, getNumRecords, getSubset, getSuppressionFactor, initialize, isIndependent, isMonotonic, isMonotonicWithGeneralization, isMonotonicWithSuppression, isMultiDimensional, isPrecomputed, isWeighted, list, round`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### MetricSDNMPublisherPayout

          public MetricSDNMPublisherPayout(boolean journalistAttackerModel)

      Creates a new instance. Default constructor which treats all transformation methods equally.
      Parameters:
        `journalistAttackerModel` - If set to true, the journalist attacker model will be assumed, the prosecutor model will be assumed, otherwise

    - #### MetricSDNMPublisherPayout

          public MetricSDNMPublisherPayout(boolean journalistAttackerModel,
                                   double gsFactor)

      Creates a new instance
      Parameters:
        `journalistAttackerModel` - If set to true, the journalist attacker model will be assumed, the prosecutor model will be assumed, otherwise
        `gsFactor` - A factor [0,1] weighting generalization and suppression. The default value is 0.5, which means that generalization and suppression will be treated equally. A factor of 0 will favor suppression, and a factor of 1 will favor generalization. The values in between can be used for balancing both methods.

  - ### Method Detail

    - #### createMaxInformationLoss

          public ILSingleDimensional createMaxInformationLoss()

      Description copied from class: `Metric`
      Returns an instance of the maximal value.
      Overrides:
        `createMaxInformationLoss` in class `AbstractMetricSingleDimensional`
      Returns:

    - #### createMinInformationLoss

          public ILSingleDimensional createMinInformationLoss()

      Description copied from class: `Metric`
      Returns an instance of the minimal value.
      Overrides:
        `createMinInformationLoss` in class `AbstractMetricSingleDimensional`
      Returns:

    - #### getConfiguration

          public MetricConfiguration getConfiguration()

      Returns the configuration of this metric.
      Overrides:
        `getConfiguration` in class `Metric<ILSingleDimensional>`
      Returns:

    - #### getCostBenefitConfiguration

          public ARXCostBenefitConfiguration getCostBenefitConfiguration()

      Returns the cost/benefit configuration

    - #### getName

          public java.lang.String getName()

      Description copied from class: `Metric`
      Returns the name of metric.
      Overrides:
        `getName` in class `Metric<ILSingleDimensional>`
      Returns:

    - #### isAbleToHandleMicroaggregation

          public boolean isAbleToHandleMicroaggregation()

      Description copied from class: `Metric`
      Returns whether this metric handles microaggregation
      Overrides:
        `isAbleToHandleMicroaggregation` in class `Metric<ILSingleDimensional>`
      Returns:

    - #### isGSFactorSupported

          public boolean isGSFactorSupported()

      Description copied from class: `Metric`
      Returns whether a generalization/suppression factor is supported
      Overrides:
        `isGSFactorSupported` in class `Metric<ILSingleDimensional>`
      Returns:

    - #### isJournalistAttackerModel

          public boolean isJournalistAttackerModel()

      Returns whether the journalist attacker model is being assumed.
      Returns:

    - #### isProsecutorAttackerModel

          public boolean isProsecutorAttackerModel()

      Returns whether the prosecutor attacker model is being assumed.
      Returns:

    - #### render

          public ElementData render(ARXConfiguration config)

      Description copied from class: `Metric`
      Renders the privacy model
      Specified by:
        `render` in class `Metric<ILSingleDimensional>`
      Returns:

    - #### toString

          public java.lang.String toString()

      Description copied from class: `Metric`
      Returns the name of metric.
      Overrides:
        `toString` in class `Metric<ILSingleDimensional>`

    - #### getInformationLossInternal

          protected ILSingleDimensionalWithBound getInformationLossInternal(org.deidentifier.arx.framework.lattice.Transformation transformation,
                                                                org.deidentifier.arx.framework.check.groupify.HashGroupify groupify)

      Description copied from class: `Metric`
      Evaluates the metric for the given node.
      Specified by:
        `getInformationLossInternal` in class `Metric<ILSingleDimensional>`
      Parameters:
        `transformation` - The node for which to compute the information loss
        `groupify` - The groupify operator of the previous check
      Returns:
        the double

    - #### getInformationLossInternal

          protected InformationLossWithBound<ILSingleDimensional> getInformationLossInternal(org.deidentifier.arx.framework.lattice.Transformation transformation,
                                                                                 org.deidentifier.arx.framework.check.groupify.HashGroupifyEntry entry)

      Description copied from class: `Metric`
      Returns the information loss that would be induced by suppressing the given entry. The loss is not necessarily consistent with the loss that is computed by `getInformationLoss(node, groupify)` but is guaranteed to be comparable for different entries from the same groupify operator.
      Specified by:
        `getInformationLossInternal` in class `Metric<ILSingleDimensional>`
      Returns:

    - #### getLowerBoundInternal

          protected ILSingleDimensional getLowerBoundInternal(org.deidentifier.arx.framework.lattice.Transformation transformation)

      Description copied from class: `Metric`
      Returns a lower bound for the information loss for the given node. This can be used to expose the results of monotonic shares of a metric, which can significantly speed-up the anonymization process. If no such metric exists, simply return `null`.
      Specified by:
        `getLowerBoundInternal` in class `Metric<ILSingleDimensional>`
      Returns:

    - #### getLowerBoundInternal

          protected ILSingleDimensional getLowerBoundInternal(org.deidentifier.arx.framework.lattice.Transformation transformation,
                                                  org.deidentifier.arx.framework.check.groupify.HashGroupify groupify)

      Description copied from class: `Metric`
      Returns a lower bound for the information loss for the given node. This can be used to expose the results of monotonic shares of a metric, which can significantly speed-up the anonymization process. If no such metric exists, simply return `null`.
      This variant of the method allows computing a monotonic share based on a groupified data representation. IMPORTANT NOTE: The groups may not have been classified correctly when the method is called, i.e., HashGroupifyEntry.isNotOutlier may not be set correctly!
      Specified by:
        `getLowerBoundInternal` in class `Metric<ILSingleDimensional>`
      Returns:

    - #### initializeInternal

          protected void initializeInternal(org.deidentifier.arx.framework.data.DataManager manager,
                                DataDefinition definition,
                                org.deidentifier.arx.framework.data.Data input,
                                org.deidentifier.arx.framework.data.GeneralizationHierarchy[] hierarchies,
                                ARXConfiguration config)

      Description copied from class: `Metric`
      Implement this to initialize the metric.
      Overrides:
        `initializeInternal` in class `AbstractMetricSingleDimensional`