phplyr

Descriptive statistics

Verification

Scope

mean(), var(), sd(), median(), quantile(), sum(), min(), and max(), including missing values. Each computed with the phit extension and in PHP, and compared with R.

References

Reference
R 4.6.1
Versions
R 4.6.1, PHP 8.5.10, phibble v0.8.0 (9e63ca5), phit 0.5.1

Data

x
c(2, 4, 4, 5, 7, 9); c(1, NA, 3) and c(1, NaN, 3) for missing values.

Method

Reference results computed in R by tests/r/stats.R and stored in tests/Fixtures/. The same operations run in phplyr in tests/StatsTest.php, which compare every value. Values compared is the number of assertions in a case; a case fails if any assertion fails.

Check
Comparison with a reference implementation
Recorded
2026-11-02, PHP 8.5.10, macOS (arm64), commit 65e6a46

Tolerances

|x − r| ≤ 1e-12 + 1e-12 × max(|r|, 1)

Applies to: Numerical results

exact equality

Applies to: Missing results

R's NA as null

x: package value; r: reference value. Absolute error: |x − r|. Relative error: |x − r| / max(|r|, 1). Max errors are over the values a row compares.

Results

28 comparisons in 14 cases: 28 pass, 0 fail, 0 skipped.

By case

Results by case
Case Comparisons Largest abs. error Largest rel. error Status
mean(x) 2 2.7e-15 5.2e-16 pass
var(x) 2 2.7e-15 4.3e-16 pass
sd(x) 2 0 0 pass
median(x) 2 0 0 pass
quantile(x, 0.9) 2 0 0 pass
quantile(x, 0) 2 0 0 pass
quantile(x, 1) 2 0 0 pass
sum(x) 2 0 0 pass
min(x) 2 0 0 pass
max(x) 2 0 0 pass
mean(c(1, NA, 3)) 2 pass
mean(c(1, NA, 3), na.rm = TRUE) 2 0 0 pass
sd(c(1, NaN, 3), na.rm = TRUE) 2 4.9e-15 3.5e-15 pass
var(1) 2 pass

Every comparison

Every comparison
Case Implementation Quantity Criterion Values Package value Reference value Max abs. error Max rel. error Status
mean(x) phit extension Values |x − r| ≤ 1e-12 + 1e-12 × max(|r|, 1) 1 5.166666667 5.166666667 2.7e-15 5.2e-16 pass
PHP Values |x − r| ≤ 1e-12 + 1e-12 × max(|r|, 1) 1 5.166666667 5.166666667 2.7e-15 5.2e-16 pass
var(x) phit extension Values |x − r| ≤ 1e-12 + 1e-12 × max(|r|, 1) 1 6.166666667 6.166666667 2.7e-15 4.3e-16 pass
PHP Values |x − r| ≤ 1e-12 + 1e-12 × max(|r|, 1) 1 6.166666667 6.166666667 2.7e-15 4.3e-16 pass
sd(x) phit extension Values |x − r| ≤ 1e-12 + 1e-12 × max(|r|, 1) 1 2.483277404 2.483277404 0 0 pass
PHP Values |x − r| ≤ 1e-12 + 1e-12 × max(|r|, 1) 1 2.483277404 2.483277404 0 0 pass
median(x) phit extension Values |x − r| ≤ 1e-12 + 1e-12 × max(|r|, 1) 1 4.5 4.5 0 0 pass
PHP Values |x − r| ≤ 1e-12 + 1e-12 × max(|r|, 1) 1 4.5 4.5 0 0 pass
quantile(x, 0.9) phit extension Values |x − r| ≤ 1e-12 + 1e-12 × max(|r|, 1) 1 8 8 0 0 pass
PHP Values |x − r| ≤ 1e-12 + 1e-12 × max(|r|, 1) 1 8 8 0 0 pass
quantile(x, 0) phit extension Values |x − r| ≤ 1e-12 + 1e-12 × max(|r|, 1) 1 2 2 0 0 pass
PHP Values |x − r| ≤ 1e-12 + 1e-12 × max(|r|, 1) 1 2 2 0 0 pass
quantile(x, 1) phit extension Values |x − r| ≤ 1e-12 + 1e-12 × max(|r|, 1) 1 9 9 0 0 pass
PHP Values |x − r| ≤ 1e-12 + 1e-12 × max(|r|, 1) 1 9 9 0 0 pass
sum(x) phit extension Values |x − r| ≤ 1e-12 + 1e-12 × max(|r|, 1) 1 31 31 0 0 pass
PHP Values |x − r| ≤ 1e-12 + 1e-12 × max(|r|, 1) 1 31 31 0 0 pass
min(x) phit extension Values |x − r| ≤ 1e-12 + 1e-12 × max(|r|, 1) 1 2 2 0 0 pass
PHP Values |x − r| ≤ 1e-12 + 1e-12 × max(|r|, 1) 1 2 2 0 0 pass
max(x) phit extension Values |x − r| ≤ 1e-12 + 1e-12 × max(|r|, 1) 1 9 9 0 0 pass
PHP Values |x − r| ≤ 1e-12 + 1e-12 × max(|r|, 1) 1 9 9 0 0 pass
mean(c(1, NA, 3)) phit extension Values exact equality 1 pass
PHP Values exact equality 1 pass
mean(c(1, NA, 3), na.rm = TRUE) phit extension Values |x − r| ≤ 1e-12 + 1e-12 × max(|r|, 1) 1 2 2 0 0 pass
PHP Values |x − r| ≤ 1e-12 + 1e-12 × max(|r|, 1) 1 2 2 0 0 pass
sd(c(1, NaN, 3), na.rm = TRUE) phit extension Values |x − r| ≤ 1e-12 + 1e-12 × max(|r|, 1) 1 1.414213562 1.414213562 4.9e-15 3.5e-15 pass
PHP Values |x − r| ≤ 1e-12 + 1e-12 × max(|r|, 1) 1 1.414213562 1.414213562 4.9e-15 3.5e-15 pass
var(1) phit extension Values exact equality 1 pass
PHP Values exact equality 1 pass

Reproduction

From the repository root
Rscript tests/r/stats.R
bin/site-verifications
Raw record
site/verifications/descriptives.json
Input data
tests/Fixtures