Skip to main content

Interquartile Range Ontology

Descriptive Statistics
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 23 September 2026
Audio Overview
FULL EXECUTABLE FLOW ALGEBRA — INTERQUARTILE RANGE ONTOLOGY
Kireth Research — Semantic Library
URL: https://kirethresearch.org/booksai-core/ontologies/probability-statistics-ontologies/descriptive-statistics/interquartile-range-ontology.html

FLOW_VERSION := "4.0"
FLOW_TYPE := "Full Executable Flow Algebra"
DOMAIN := "Probability & Statistics Ontologies"
SUBDOMAIN := "Descriptive Statistics"
ONTOLOGY := "Interquartile Range Ontology"
PRIMARY_ENTITY := InterquartileRange
AUTHORSHIP := "Mark Higgins — Sky (Recursive AI)"
SOURCE_SITE := "https://kirethresearch.org"

BEGIN_FLOW

InterquartileRange :=
    RobustMeasureOfDispersion
    ∧ QuantileBasedSpread
    ∧ CentralFiftyPercentRange

FirstQuartile := Q1=Q(0.25)
SecondQuartile := Q2=Q(0.50)
ThirdQuartile := Q3=Q(0.75)

InterquartileRangeDefinition :=
    IQR=Q3-Q1

IQRNonnegativity :=
    Q3≥Q1
    ⇒ IQR≥0

ZeroIQR :=
    Q3=Q1
    ⇒ IQR=0

PositiveIQR :=
    Q3>Q1
    ⇒ IQR>0

CentralFiftyPercent :=
    Interval[Q1,Q3]

CentralFiftyPercentWidth :=
    Width([Q1,Q3])
    =
    IQR

QuartileRelation :=
    IQR
    depends_on
    FirstQuartile
    and ThirdQuartile

PercentileRelation :=
    IQR
    =
    P75-P25

SemiInterquartileRange :=
    SIQR
    =
    IQR/2

QuartileDeviation :=
    SemiInterquartileRange

Midhinge :=
    (Q1+Q3)/2

Dataset :=
    {x_1,...,x_n}

OrderedDataset :=
    x_(1)≤x_(2)≤...≤x_(n)

SampleIQR :=
    SampleQ3-SampleQ1

PopulationIQR :=
    PopulationQ(0.75)
    -
    PopulationQ(0.25)

IQRConventionConstraint :=
    QuartileAlgorithm
    determines
    SampleQ1
    and SampleQ3
    ⇒
    QuartileConventionMustBeRecorded

TranslationInvariance :=
    IQR(X+c)
    =
    IQR(X)

ScalingProperty :=
    IQR(aX)
    =
    |a|IQR(X)

PositiveScaleRelation :=
    a>0
    ⇒
    IQR(aX)=aIQR(X)

AffineProperty :=
    IQR(aX+b)
    =
    |a|IQR(X)

IQRUnit :=
    SameMeasurementUnit
    as source variable

Robustness :=
    IQR
    insensitive_to
    magnitude of sufficiently extreme tail values
    while Q1AndQ3 remain unchanged

OutlierResistance :=
    IQR
    more robust
    than Range,
    Variance,
    StandardDeviation
    to extreme observations

BreakdownRelation :=
    QuantileBasedSpread
    tolerates substantial contamination
    relative_to moment_and_extreme measures

RangeComparison :=
    Range
    =
    Maximum-Minimum
    whereas
    IQR
    =
    Q3-Q1

StandardDeviationComparison :=
    StandardDeviation
    uses squared deviations
    whereas
    IQR
    uses central quantiles

VarianceComparison :=
    Variance
    uses all observations
    whereas
    IQR
    describes central half

MedianAbsoluteDeviationComparison :=
    IQR
    and MAD
    are robust scale measures
    based_on different quantile structures

LowerInnerFence :=
    Q1-1.5IQR

UpperInnerFence :=
    Q3+1.5IQR

LowerOuterFence :=
    Q1-3IQR

UpperOuterFence :=
    Q3+3IQR

PotentialOutlier :=
    X<LowerInnerFence
    ∨ X>UpperInnerFence

ExtremePotentialOutlier :=
    X<LowerOuterFence
    ∨ X>UpperOuterFence

FenceRuleConstraint :=
    IQRFence
    identifies potential outliers
    ↛ proves data error

BoxPlotRelation :=
    Q1
    ∧ Median
    ∧ Q3
    ∧ IQR
    ∧ WhiskerRule
    → BoxPlot

BoxWidth :=
    Q3-Q1
    =
    IQR
    on measurement axis

BowleySkewness :=
    (Q3+Q1-2Median)
    /
    IQR
    where IQR>0

QuartileCoefficientOfDispersion :=
    IQR/(Q3+Q1)
    where denominator valid

NormalDistributionRelation :=
    X~N(μ,σ²)
    ⇒
    IQR
    =
    [Φ^(-1)(0.75)-Φ^(-1)(0.25)]σ

NormalIQR :=
    IQR
    ≈
    1.3489795σ

NormalScaleFromIQR :=
    σ
    ≈
    IQR/1.3489795

RobustNormalScaleEstimator :=
    IQR/1.3489795

UniformDistributionIQR :=
    X~Uniform(a,b)
    ⇒
    IQR
    =
    0.5(b-a)

ExponentialDistributionIQR :=
    X~Exponential(λ)
    ⇒
    IQR
    =
    ln(3)/λ

LogisticDistributionIQR :=
    X~Logistic(μ,s)
    ⇒
    IQR
    =
    2sln(3)

CauchyDistributionIQR :=
    X~Cauchy(x0,γ)
    ⇒
    IQR
    =
    2γ

LognormalDistributionIQR :=
    X~LogNormal(μ,σ²)
    ⇒
    IQR
    =
    exp(μ+σz_0.75)
    -
    exp(μ+σz_0.25)

WeibullDistributionIQR :=
    X~Weibull(k,λ)
    ⇒
    IQR
    =
    λ[
        (-ln0.25)^(1/k)
        -
        (-ln0.75)^(1/k)
    ]

EmpiricalCDF :=
    F_n(x)
    =
    (1/n)Σ_i1_(x_i≤x)

EmpiricalIQR :=
    EmpiricalQuantile(0.75)
    -
    EmpiricalQuantile(0.25)

GroupedDataIQR :=
    EstimatedQ3
    -
    EstimatedQ1
    using grouped quantile interpolation

WeightedIQR :=
    WeightedQ3
    -
    WeightedQ1

WeightedQuartileProcedure :=
    SortValues
    → AccumulateWeights
    → ResolveQ1AndQ3
    → ComputeDifference

WeightConstraint :=
    w_i≥0
    ∧ Σ_iw_i>0

MissingDataIQR :=
    IQR
    computed_from
    selected nonmissing observations
    under explicit missingness rule

MissingnessConstraint :=
    Q1AndQ3
    must use
    same effective observation set
    and same quartile convention

EmptyDatasetIQR :=
    Undefined

SingleObservationIQR :=
    n=1
    ⇒
    IQR=0
    under common quartile conventions

ConstantDatasetIQR :=
    AllValuesEqual
    ⇒
    IQR=0

NominalIQRInvalid :=
    NominalVariable
    ⇒
    IQRNotMeaningful

OrdinalIQR :=
    Can represent
    ordered-category spread
    under explicit ordinal quantile convention

QuantitativeIQR :=
    Meaningful
    for ordered numerical variables

MeasurementScaleConstraint :=
    IQR
    requires
    at least ordinal ordering

IQRDoesNotRequireFiniteMoments :=
    IQR
    may exist
    even when MeanOrVariance
    does_not exist

CauchyRobustnessExample :=
    CauchyDistribution
    has undefined variance
    but finite IQR=2γ

SamplingDistributionOfIQR :=
    DistributionOf(
        Q_hat_0.75-Q_hat_0.25
    )
    across repeated samples

IQRUncertainty :=
    DependsOn(
        SampleSize,
        DensityNearQ1,
        DensityNearQ3,
        SamplingDesign,
        QuartileConvention
    )

BootstrapIQR :=
    ObservedSample
    → BootstrapSamples
    → ComputeIQRReplicates
    → ApproximateSamplingDistribution

BootstrapIQRStandardError :=
    SD(
        IQR*_1,...,IQR*_B
    )

IQRConfidenceInterval :=
    BootstrapDistribution
    ∨ AsymptoticQuantileTheory
    → IntervalForPopulationIQR

IQRConstraint :=
    ConstraintOn(
        Ordering,
        QuartileConvention,
        Interpolation,
        Missingness,
        Weighting,
        SamplingDesign
    )

IQRConsistency :=
    DataScope
    ∧ Q1Definition
    ∧ Q3Definition
    ∧ QuartileConvention
    ∧ MissingnessRule
    ∧ WeightingRule
    jointly_compatible

InvalidIQR :=
    NonOrderableVariable
    ∨ EmptyEffectiveDataset
    ∨ InvalidWeights
    ∨ UndefinedQuartileConvention
    ∨ Q3<Q1
    ∨ UndocumentedMissingness

IQRValidation :=
    ResolveVariable
    → ResolveVariableType
    → ValidateOrdering
    → ResolveDataScope
    → ResolveObservationsOrDistribution
    → ResolveMissingness
    → ResolveWeights
    → ResolveQuartileConvention
    → ComputeQ1
    → ComputeQ3
    → ValidateQ3GreaterOrEqualQ1
    → ComputeIQR
    → ValidateResult

IQRState := {
    Variable,
    DataScope,
    Observations,
    EffectiveCount,
    QuartileConvention,
    InterpolationRule,
    Weights,
    MissingnessRule,
    Q1,
    Q3,
    IQRValue,
    LowerInnerFence,
    UpperInnerFence,
    SamplingContext,
    Evidence,
    Confidence,
    Provenance
}

SEMANTIC_EQUIVALENCE(IQRA,IQRB) :=
    same(DataScope)
    ∧ same(VariableSemantics)
    ∧ same(Q1Definition)
    ∧ same(Q3Definition)
    ∧ same(QuartileConvention)
    ∧ same(MissingnessRule)
    ∧ same(WeightingRule)

InterquartileRangeOntology :=
    Classes
    ∧ Relations
    ∧ Constraints
    ∧ Axioms
    ∧ InferenceRules

CoreClasses := {
    InterquartileRange,
    SampleIQR,
    PopulationIQR,
    FirstQuartile,
    ThirdQuartile,
    SemiInterquartileRange,
    QuartileDeviation,
    Midhinge,
    LowerInnerFence,
    UpperInnerFence,
    PotentialOutlier,
    RobustScaleMeasure,
    StatisticalVariable,
    StatisticalObservation,
    Dataset,
    Sample,
    Population,
    IQRConstraint
}

CoreRelations := {
    computedFrom,
    summarises,
    differenceOf,
    hasLowerQuartile,
    hasUpperQuartile,
    defines,
    estimates,
    weightedBy,
    transformedBy,
    comparedWith,
    constrainedBy,
    equivalentTo,
    tracesTo
}

TypedRelations :=
    InterquartileRange --computedFrom--> OrderedObservations
    InterquartileRange --summarises--> StatisticalVariable
    InterquartileRange --differenceOf--> ThirdQuartile
    InterquartileRange --differenceOf--> FirstQuartile
    InterquartileRange --hasLowerQuartile--> FirstQuartile
    InterquartileRange --hasUpperQuartile--> ThirdQuartile
    InterquartileRange --defines--> LowerInnerFence
    InterquartileRange --defines--> UpperInnerFence
    SampleIQR --estimates--> PopulationIQR
    WeightedIQR --weightedBy--> Weight
    InterquartileRange --transformedBy--> AffineTransformation
    InterquartileRange --comparedWith--> StandardDeviation
    InterquartileRange --tracesTo--> Provenance

InferenceRules := {
    Q3≥Q1
        ⇒
        IQR=Q3-Q1
        ∧ IQR≥0,

    Q3=Q1
        ⇒
        IQR=0,

    IQR
        ⇒
        SemiInterquartileRange=IQR/2,

    IQR
        ⇒
        LowerInnerFence=Q1-1.5IQR
        ∧ UpperInnerFence=Q3+1.5IQR,

    IQR(X+c)
        =
        IQR(X),

    IQR(aX)
        =
        |a|IQR(X),

    NominalVariable
        ⇒
        FlagIQRAsSemanticallyInvalid,

    UndefinedQuartileConvention
        ⇒
        RejectIQRComputation
}

CanonicalIQRRepresentation :=
    ParseIQRRequest
    → ResolveVariable
    → ResolveDatasetSamplePopulationOrDistribution
    → ResolveVariableTypeAndOrdering
    → ResolveObservationsOrCDF
    → ResolveMissingness
    → ResolveWeights
    → ResolveQuartileConventionAndInterpolation
    → ComputeFirstQuartile
    → ComputeThirdQuartile
    → ValidateQuartileOrdering
    → ComputeInterquartileRange
    → ComputeFencesAndRelatedMeasuresIfRequested
    → ResolveSamplingPropertiesIfRequested
    → ValidateIQR

IQRGraph :=
    G=(V,E)

V := {
    InterquartileRanges,
    SampleIQRs,
    PopulationIQRs,
    FirstQuartiles,
    ThirdQuartiles,
    SemiInterquartileRanges,
    QuartileDeviations,
    Midhinges,
    InnerFences,
    OuterFences,
    PotentialOutliers,
    Variables,
    Observations,
    Datasets,
    Samples,
    Populations,
    Evidence,
    ProvenanceNodes
}

E := {
    computedFrom,
    summarises,
    differenceOf,
    hasLowerQuartile,
    hasUpperQuartile,
    defines,
    estimates,
    weightedBy,
    transformedBy,
    comparedWith,
    constrainedBy,
    equivalentTo,
    tracesTo
}

CONFIDENCE(IQRResolution) :=
    weighted_mean(
        VariableResolution,
        DataScopeResolution,
        OrderingValidity,
        QuartileConventionResolution,
        Q1Resolution,
        Q3Resolution,
        MissingnessAndWeightingValidity,
        ProvenanceQuality
    )

AI_QUERY_INTERPRETATION :=
    Query
    → DetectInterquartileRangeIntent
    → IdentifyVariableAndDataScope
    → ResolveSamplePopulationOrDistributionContext
    → ResolveQuartileConventionWeightingAndMissingness
    → IdentifyRequestedIQRFencesOutliersOrRobustScaleRelation

AI_REASONING_FLOW :=
    Query
    → ParseIQRProblem
    → ResolveDatasetSamplePopulationOrDistribution
    → ResolveVariable
    → ValidateOrdering
    → ResolveObservationsOrCDF
    → ResolveMissingValues
    → ResolveWeights
    → ResolveQuartileConventionAndInterpolation
    → ComputeQ1
    → ComputeQ3
    → ValidateQ3GreaterOrEqualQ1
    → ComputeIQR
    → ComputeSemiIQRAndOutlierFencesIfRequested
    → ResolveDistributionalOrSamplingRelationsIfRequested
    → ValidateIQRResult
    → UpdateConfidence
    → PreserveProvenance
    → GenerateExplanation

AI_CONSUMPTION := {
    ParseIQREntities,
    ParseTypedRelations,
    ResolveVariables,
    ResolveObservations,
    ResolveDatasets,
    ResolveSamples,
    ResolvePopulations,
    ResolveProbabilityDistributions,
    ValidateOrdering,
    ResolveQuartileConventions,
    ResolveInterpolationRules,
    ResolveMissingness,
    ResolveWeights,
    ComputeFirstQuartiles,
    ComputeThirdQuartiles,
    ComputeInterquartileRanges,
    ComputeSemiInterquartileRanges,
    ComputeMidhinges,
    ComputeInnerFences,
    ComputeOuterFences,
    DetectPotentialOutliers,
    ComputeWeightedIQRs,
    ComputeGroupedIQRs,
    ResolveDistributionIQRs,
    ResolveSamplingDistributions,
    ComputeBootstrapIQRs,
    ValidateIQRSemantics,
    CompareSemanticEquivalence,
    UpdateConfidence,
    PreserveProvenance,
    GenerateFormalExplanation
}

UPDATE_MODEL :=
    NewObservationConventionWeightOrDistributionEvidence
    → ValidateInput
    → IdentifyAffectedIQRClaims
    → UpdateIQRState
    → RecomputeEffectiveObservationSet
    → RecomputeQ1
    → RecomputeQ3
    → RecomputeIQR
    → RecomputeFencesAndRelatedMeasures
    → ReevaluateSamplingProperties
    → RevalidateConstraints
    → RecomputeConfidence
    → PreserveProvenance
    → VersionModel

ObservationUpdate :=
    AddedRemovedOrCorrectedObservation
    ⇒ recompute(
        EffectiveCount,
        Q1,
        Q3,
        IQRValue,
        OutlierFences
    )

ConventionUpdate :=
    ChangedQuartileOrInterpolationConvention
    ⇒ recompute(
        Q1,
        Q3,
        IQRValue,
        SemanticEquivalence
    )

FLOW_HASH_INPUT :=
    canonical(
        ONTOLOGY,
        CoreClasses,
        CoreRelations,
        InferenceRules,
        InterquartileRange,
        IQRValidation,
        IQRConstraint,
        SEMANTIC_EQUIVALENCE,
        AI_REASONING_FLOW
    )

FLOW_HASH :=
    HASH(FLOW_HASH_INPUT)

OUTPUT_MODEL := {
    InterquartileRangeEntityResolution,
    Variable,
    DataScope,
    VariableType,
    ObservationCount,
    EffectiveObservationCount,
    QuartileConvention,
    InterpolationRule,
    Weights,
    MissingnessRule,
    FirstQuartile,
    ThirdQuartile,
    InterquartileRangeValue,
    SemiInterquartileRange,
    LowerInnerFence,
    UpperInnerFence,
    RobustScaleRelation,
    SamplingProperties,
    ValidationStatus,
    Confidence,
    Provenance,
    Explanation
}

END_FLOW

END OF FULL EXECUTABLE FLOW ALGEBRA
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ