Skip to content

ZScore Method

The zscore() method calculates the standardized z-scores for numeric values in the collection, measuring how many standard deviations each value is from the mean. This is particularly useful for data normalization and outlier detection.

Basic Syntax

typescript
zscore<K extends keyof T>(key?: K): CollectionOperations<number>

Examples

Basic Usage

typescript
import { collect } from 'ts-collect'

const numbers = collect([2, 4, 6, 8, 10])
const scores = numbers.zscore()

console.log(scores.all())
// [-1.26, -0.63, 0, 0.63, 1.26]

Working with Object Properties

typescript
interface Score {
  student: string
  score: number
}

const scores = collect<Score>([
  { student: 'Chris', score: 85 },
  { student: 'Avery', score: 90 },
  { student: 'Buddy', score: 95 }
])

const standardizedScores = scores.zscore('score')
console.log(standardizedScores.all())
// [-1, 0, 1]  // Approximate values

Real-world Example: E-commerce Performance Analysis

typescript
interface ProductMetrics {
  sku: string
  views: number
  sales: number
  conversionRate: number
}

class ProductAnalyzer {
  private products: Collection<ProductMetrics>

  constructor(products: ProductMetrics[]) {
    this.products = collect(products)
  }

  analyzePerformance() {
    return this.products.map(product => ({
      sku: product.sku,
      metrics: {
        viewsZScore: this.products.zscore('views').first(),
        salesZScore: this.products.zscore('sales').first(),
        conversionZScore: this.products.zscore('conversionRate').first()
      },
      performance: this.calculatePerformanceScore(product)
    }))
  }

  findOutperformers(): Collection<ProductMetrics> {
    // Find products that are more than 1 standard deviation above mean in all metrics
    return this.products.filter(product => {
      const viewScore = this.products.zscore('views').first() || 0
      const salesScore = this.products.zscore('sales').first() || 0
      const conversionScore = this.products.zscore('conversionRate').first() || 0

      return viewScore > 1 && salesScore > 1 && conversionScore > 1
    })
  }

  private calculatePerformanceScore(product: ProductMetrics): string {
    const zScores = [
      this.products.zscore('views').first() || 0,
      this.products.zscore('sales').first() || 0,
      this.products.zscore('conversionRate').first() || 0
    ]

    const avgZScore = zScores.reduce((a, b) => a + b, 0) / 3

    if (avgZScore > 1) return 'Excellent'
    if (avgZScore > 0) return 'Good'
    if (avgZScore > -1) return 'Average'
    return 'Needs Improvement'
  }
}

// Usage
const analyzer = new ProductAnalyzer([
  {
    sku: 'LAPTOP1',
    views: 1000,
    sales: 50,
    conversionRate: 0.05
  },
  {
    sku: 'PHONE1',
    views: 2000,
    sales: 150,
    conversionRate: 0.075
  }
])

const analysis = analyzer.analyzePerformance()

Type Safety

typescript
interface Metrics {
  value: number
  category: string
}

const data = collect<Metrics>([
  { value: 100, category: 'A' },
  { value: 200, category: 'B' }
])

// Type-safe z-score calculation
const zScores: CollectionOperations<number> = data.zscore('value')

// TypeScript enforces numeric fields
// data.zscore('category') // ✗ TypeScript error

Return Value

  • Returns a Collection of z-scores (standardized values)
  • Each value represents standard deviations from mean
  • Mean of z-scores is always 0
  • Standard deviation of z-scores is always 1
  • Maintains collection chain methods
  • Handles undefined values gracefully

Common Use Cases

1. Performance Analysis

  • Product performance
  • Sales metrics
  • Conversion rates
  • Traffic analysis
  • Revenue benchmarking

2. Data Normalization

  • Score standardization
  • Metric comparison
  • Performance ranking
  • Data scaling
  • Feature normalization

3. Outlier Detection

  • Anomaly detection
  • Quality control
  • Fraud detection
  • Error identification
  • Pattern recognition

4. Comparative Analysis

  • Competitor analysis
  • Market benchmarking
  • Performance evaluation
  • Trend analysis
  • Resource optimization

5. Statistical Analysis

  • Distribution analysis
  • Probability calculation
  • Risk assessment
  • Quality scoring
  • Percentile ranking

Released under the MIT License.