AgentSkillsCN

analysis

对CA状态进行分析、检测李雅普诺夫指数的混沌特征,以及周期检测的API。适用于分析CA状态、检测模式、衡量稳定性,或对动态行为进行分类的场景。

SKILL.md
--- frontmatter
name: analysis
description: Symmetry analysis, Lyapunov exponent chaos detection, and period detection APIs. Use when analyzing CA states, detecting patterns, measuring stability, or classifying dynamic behavior.

Analysis APIs

Symmetry Detection

Quick Symmetry Score

typescript
import { calculateSymmetry } from "./discovery/fitness";
// Returns 0-1 score: 30% horizontal + 30% vertical + 40% rotational
const score = calculateSymmetry(state, width, height);

Advanced Symmetry Analysis

typescript
import {
  analyzeSymmetry,
  quickSymmetryScore,
  detectSymmetryType,
  calculateKFoldSymmetry,
} from "./analysis/symmetry";

// Full symmetry analysis
const result = analyzeSymmetry(state, width, height, { maxOrder: 8 });
console.log(`Order: ${result.order}`); // Dominant k-fold (1-8)
console.log(`Strength: ${result.strength}`); // 0-1 strength
console.log(`Horizontal: ${result.horizontal}`);
console.log(`Vertical: ${result.vertical}`);
console.log(`Rotational180: ${result.rotational180}`);

// Quick symmetry score (faster, less detailed)
const score = quickSymmetryScore(state, width, height);

// Detect symmetry types
const types = detectSymmetryType(result);
// Returns: ['bilateral-horizontal', '4-fold-rotational', 'radial'] etc.

Symmetry Types

  • bilateral-horizontal / bilateral-vertical - reflection symmetry
  • point-symmetric - 180° rotational
  • k-fold-rotational - k-fold rotational (2, 4, 6, 8...)
  • radial - high-order circular symmetry
  • asymmetric - no significant symmetry

Lyapunov Exponent (Chaos Analysis)

typescript
import {
  calculateLyapunovExponent,
  wolfLyapunovEstimate,
  quickStabilityCheck,
  classifyDynamics,
} from "./analysis/chaos";

// Define step function for your CA
const stepFunction = (state: Float32Array) => {
  /* evolve state */
};

// Full Lyapunov calculation
const result = calculateLyapunovExponent(initialState, stepFunction, {
  steps: 100,
  perturbationMagnitude: 0.001,
  renormalize: true,
});
console.log(`Exponent: ${result.exponent}`);
console.log(`Classification: ${result.classification}`);
console.log(`Confidence: ${result.confidence}`);

// Wolf algorithm (more robust for noisy systems)
const wolfResult = wolfLyapunovEstimate(initialState, stepFunction);

// Quick stability check (fast but less accurate)
const stability = quickStabilityCheck(initialState, stepFunction, 20);
// Returns: 'stable' | 'unstable' | 'unknown'

Lyapunov Classification

| Exponent (λ) | Classification | Meaning | | ------------ | ---------------- | ------------------- | ------------ | ----------------- | | λ < -0.01 | stable | Perturbations decay | | | λ | ≤ 0.01 | periodic | Marginally stable | | λ > 0.01 | chaotic | Perturbations grow | | λ > 1 | hyperchaotic | Rapid divergence |

Period Detection

typescript
import {
  detectPeriod,
  PeriodTracker,
  classifyPeriodBehavior,
} from "./analysis/periodicity";

// Detect period from state history
const result = detectPeriod(stateHistory, width, height, {
  maxPeriod: 100,
  correlationThreshold: 0.8,
});
console.log(`Period: ${result.period}`);
console.log(`Exact: ${result.isExactPeriod}`);
console.log(`Behavior: ${result.behavior}`);
console.log(classifyPeriodBehavior(result));

// Incremental tracking (for real-time detection)
const tracker = new PeriodTracker(width, height, { maxPeriod: 50 });
// In simulation loop:
tracker.push(currentState);
const analysis = tracker.analyze();

Period Behaviors

BehaviorDescription
staticFixed point (no change)
periodicExact or approximate cycle
quasi-periodicMultiple incommensurate frequencies
chaoticNo detectable period

Statistical Analysis

typescript
import {
  mean,
  variance,
  std,
  sem,
  median,
  percentile,
  iqr,
  skewness,
  kurtosis,
  bootstrapCI,
  bootstrapBCaCI,
  cohensD,
  hedgesG,
  cliffsD,
  mannWhitneyU,
  kruskalWallis,
  bonferroniCorrection,
  holmCorrection,
  benjaminiHochberg,
} from "./analysis/statistics";

// Basic statistics
const m = mean(data);
const s = std(data);
const ci = bootstrapBCaCI(data, mean, { confidence: 0.95 });

// Effect sizes
const d = cohensD(group1, group2);
console.log(`Effect: ${d.interpretation}`); // 'small' | 'medium' | 'large'

// Non-parametric tests
const uTest = mannWhitneyU(group1, group2, 0.05);
console.log(`p-value: ${uTest.pValue}, significant: ${uTest.significant}`);

// Multiple comparison correction
const { corrected, significant } = holmCorrection(pValues);

Effect Size Interpretation

Cohen's dInterpretation
< 0.2Negligible
0.2 - 0.5Small
0.5 - 0.8Medium
> 0.8Large

Core Files

FilePurpose
analysis/symmetry.tsSymmetry detection algorithms
analysis/chaos.tsLyapunov exponent calculation
analysis/periodicity.tsPeriod detection and tracking
analysis/statistics.tsStatistical analysis module
analysis/experiment.tsExperiment comparison
discovery/fitness.tsQuick symmetry score