This commit is contained in:
salam committed 2026-04-30 08:38:04 +02:00
1 parent fb8518597f
commit 90c3ad32cb
6 files changed
+399 -264

No files matched your search

+128 -31
View File
@@ -6,11 +6,21 @@ use App\Models\StatistikoEvent;
class LoadEvents
{
public static $last_query = [];
public static function load($filter)
{
if (self::$last_query) {
return self::$last_query;
}
$league_id = (int) $filter['league_id'] ?? 0;
$team_id = (int) $filter['team_id'] ?? 0;
$team_position = $filter['team_position'];
if (! $league_id) {
return [];
}
@@ -46,40 +56,127 @@ class LoadEvents
// $tmp['exp_away'] = (float) $value['expgoalsaway_value'];
// $tmp['exp_home'] = (float) $value['expgoalshome_value'];
switch ($filter['statistic_type']) {
case 'gls':
$tmp['gls_a'] = (int) $value['gls_a'];
$tmp['gls_h'] = (int) $value['gls_h'];
break;
case 'crn':
$tmp['crn_a'] = (int) $value['crn_a'];
$tmp['crn_h'] = (int) $value['crn_h'];
break;
case 'fls':
$tmp['fls_a'] = (int) $value['fls_a'];
$tmp['fls_h'] = (int) $value['fls_h'];
break;
case 'ofs':
$tmp['ofs_a'] = (int) $value['ofs_a'];
$tmp['ofs_h'] = (int) $value['ofs_h'];
break;
case 'crd':
$tmp['crd_a'] = (int) $value['crd_a'];
$tmp['crd_h'] = (int) $value['crd_h'];
break;
case 'snt':
$tmp['snt_a'] = (int) $value['snt_a'];
$tmp['snt_h'] = (int) $value['snt_h'];
break;
case 'tsh':
$tmp['tsh_a'] = (int) $value['tsh_a'];
$tmp['tsh_h'] = (int) $value['tsh_h'];
break;
if ($team_position == 'home') {
switch ($filter['statistic_type']) {
case 'gls':
$val = (int) $value['gls_h'];
break;
case 'crn':
$val = (int) $value['crn_h'];
break;
case 'fls':
$val = (int) $value['fls_h'];
break;
case 'ofs':
$val = (int) $value['ofs_h'];
break;
case 'crd':
$val = (int) $value['crd_h'];
break;
case 'snt':
$val = (int) $value['snt_h'];
break;
case 'tsh':
$val = (int) $value['tsh_h'];
break;
}
} elseif ($team_position == 'away') {
switch ($filter['statistic_type']) {
case 'gls':
$val = (int) $value['gls_a'];
break;
case 'crn':
$val = (int) $value['crn_a'];
break;
case 'fls':
$val = (int) $value['fls_a'];
break;
case 'ofs':
$val = (int) $value['ofs_a'];
break;
case 'crd':
$val = (int) $value['crd_a'];
break;
case 'snt':
$val = (int) $value['snt_a'];
break;
case 'tsh':
$val = (int) $value['tsh_a'];
break;
}
} else {
switch ($filter['statistic_type']) {
case 'gls':
if ($team_id == $value['home_id']) {
$val = (int) $value['gls_a'];
} else {
$val = (int) $value['gls_h'];
}
break;
case 'crn':
if ($team_id == $value['home_id']) {
$val = (int) $value['crn_a'];
} else {
$val = (int) $value['crn_h'];
}
break;
case 'fls':
if ($team_id == $value['home_id']) {
$val = (int) $value['fls_a'];
} else {
$val = (int) $value['fls_h'];
}
break;
case 'ofs':
if ($team_id == $value['home_id']) {
$val = (int) $value['ofs_a'];
} else {
$val = (int) $value['ofs_h'];
}
break;
case 'crd':
if ($team_id == $value['home_id']) {
$val = (int) $value['crd_a'];
} else {
$val = (int) $value['crd_h'];
}
break;
case 'snt':
if ($team_id == $value['home_id']) {
$val = (int) $value['snt_a'];
} else {
$val = (int) $value['snt_h'];
}
break;
case 'tsh':
if ($team_id == $value['home_id']) {
$val = (int) $value['tsh_a'];
} else {
$val = (int) $value['tsh_h'];
}
break;
}
}
$datasets[] = $tmp;
$datasets[] = $val;
}
return ['lables' => $labels, 'datasets' => $datasets];
$data = [
'datasets' => [
[
'label' => ucfirst($team_position),
'data' => $datasets,
'borderColor' => '#36A2EB',
],
],
'labels' => $labels,
];
self::$last_query = $data;
return $data;
}
}
@@ -0,0 +1,34 @@
Median
Wikipedia
https://de.wikipedia.org › wiki › Median
Der Median der Messwerte einer Urliste ist derjenige Messwert, der genau „in der Mitte“ steht, wenn man die Messwerte der Größe nach sortiert. Beispielsweise ...
Weitere Fragen
Was sagt der Medianwert aus?
Was ist der Unterschied von Median- und Mittelwert?
Der Hauptunterschied liegt in der Berechnung und Robustheit: Der Durchschnitt (arithmetisches Mittel) summiert alle Werte und teilt durch deren Anzahl, ist aber anfällig für Ausreißer. Der Median ist der exakte Mittelwert einer sortierten Reihe; er teilt Daten in zwei Hälften und ist robuster gegenüber extremen Werten.
Hier sind die Details:
Durchschnitt (Arithmetisches Mittel):
Berechnung:
Summe aller Werte/ Anzahl der Werte
Eigenschaft: Berücksichtigt jeden Datenpunkt.
Nachteil: Extremwerte (sehr hohe oder niedrige Zahlen) verzerren das Ergebnis stark.
Beispiel: Bei Einkommen von 1.000€, 1.500€, 2.000€ und 50.000€ liegt der Durchschnitt bei 13.625€, was nicht die Situation der Mehrheit widerspiegelt.
Median (Zentralwert):
Berechnung: Daten sortieren, der mittlere Wert ist der Median. Bei gerader Anzahl: Mittelwert der beiden mittleren Werte.
Eigenschaft: Teilt die Daten in zwei gleich große Hälften (50 % sind kleiner, 50 % größer).
Vorteil: Unempfindlich gegenüber Ausreißern (robust).
Beispiel: Im obigen Einkommensbeispiel (1.000, 1.500, 2.000, 50.000) ist der Median 1.750€ (
(1.500 + 2.000)/2 (bei gerader Anzahle der Werte)
), was die Situation besser repräsentiert.
Wann was verwenden?
Durchschnitt: Bei gleichmäßiger Verteilung ohne große Ausreißer.
Median: Bei ungleichmäßiger Verteilung (schiefe Verteilung), wie bei Einkommen oder Immobilienpreisen.
+45
View File
@@ -0,0 +1,45 @@
<?php
namespace App\Actions\Statistics;
class MoveingAverage
{
public static function get(&$data)
{
// dd($data);
$arr = $data['datasets'][0]['data'];
$new = [];
$last = count($arr);
$second_last = $last--;
foreach ($arr as $key => $value) {
switch ($key) {
case 0:
$new[] = $value;
break;
case 1:
$new[] = ($arr[0] + $value) / 2;
break;
case $second_last:
$new[] = ($arr[$second_last] + $arr[$last]) / 2;
break;
case $last:
$new[] = $arr[$last];
break;
default:
$before = $key--;
$after = $key++;
$new[] = ($arr[$before] + $value + $arr[$after]) / 3;
break;
}
}
// $data['datasets'][0]['backgroundColor'] = '#00a63e';
$data['datasets'][0]['borderColor'] = '#00a63e';
// $data['datasets'][0]['fill'] = true;
$data['datasets'][0]['tension'] = 0.5;
// $data['datasets'][0]['borderRadius'] = 30;
$data['datasets'][0]['data'] = $new;
}
}