centrex/laravel-btyd
最新稳定版本:v0.1.0
Composer 安装命令:
composer require centrex/laravel-btyd
包简介
Laravel package for BTYD (BG/NBD + Gamma-Gamma) CLV prediction
README 文档
README
Implements the Buy 'Til You Die model for customer lifetime value (CLV) prediction. Fits BG/NBD parameters (purchase frequency + churn) and Gamma-Gamma parameters (monetary value) using MLE via Nelder-Mead optimisation. Supports persisting fitted parameters to the database for reuse.
Installation
composer require centrex/laravel-btyd
php artisan vendor:publish --tag="laravel-btyd-migrations"
php artisan migrate
Usage
1. Build customer summaries from transaction history
use Centrex\Btyd\Btyd; // Each transaction: ['date' => Carbon|string, 'amount' => float] $transactions = [ ['date' => '2024-01-15', 'amount' => 120.00], ['date' => '2024-03-02', 'amount' => 85.50], ['date' => '2024-06-18', 'amount' => 200.00], ]; $summary = Btyd::transactionsToSummary($transactions); // returns: frequency, recency (days), T (days since first purchase), monetary, n_transactions, total_revenue
2. Fit the models on a cohort
$btyd = new Btyd(); // Fit BG/NBD on cohort summaries (frequency, recency, T required per customer) $bgnbdParams = $btyd->fitBgNbd($cohortSummaries); // returns: ['r' => ..., 'alpha' => ..., 'a' => ..., 'b' => ...] // Fit Gamma-Gamma on customers with at least 1 repeat purchase (frequency, monetary required) $ggParams = $btyd->fitGammaGamma($cohortSummaries); // returns: ['p' => ..., 'q' => ..., 'v' => ...]
3. Predict for individual customers
// Expected number of transactions over the next 12 months $expectedTx = $btyd->expectedTransactions($customerSummary, horizonMonths: 12); // Expected monetary value per transaction $expectedMonetary = $btyd->expectedMonetary($customerSummary); // Customer lifetime value (expectedTx × expectedMonetary) $clv = $btyd->customerClv($customerSummary, horizonMonths: 12);
4. Persist fitted parameters
use Centrex\Btyd\Models\BtydParam; // Save fitted params for a given model class BtydParam::updateOrCreate( ['model' => App\Models\Customer::class], ['params' => array_merge($bgnbdParams, $ggParams)], ); // Load later $params = BtydParam::getParams(App\Models\Customer::class);
Full workflow example
$btyd = new Btyd(); // Build summaries for all customers $summaries = Customer::all()->map(fn ($c) => Btyd::transactionsToSummary($c->orders->map(fn ($o) => [ 'date' => $o->created_at, 'amount' => $o->total, ])->toArray()) )->toArray(); // Fit $btyd->fitBgNbd($summaries); $btyd->fitGammaGamma($summaries); // Predict CLV for a single customer $clv = $btyd->customerClv($summaries[0], 12); echo "12-month CLV: {$clv}";
Testing
composer test # full suite composer test:unit # pest only composer test:types # phpstan composer lint # pint
Changelog
Please see CHANGELOG for more information on what has changed recently.
Credits
License
The MIT License (MIT). Please see License File for more information.
统计信息
- 总下载量: 0
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 3
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-04-22