ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
trendClass Class Reference
+ Collaboration diagram for trendClass:

Static Public Member Functions

static calculate ($trendType=self::TREND_BEST_FIT, $yValues, $xValues=array(), $const=True)
 

Data Fields

const TREND_LINEAR = 'Linear'
 
const TREND_LOGARITHMIC = 'Logarithmic'
 
const TREND_EXPONENTIAL = 'Exponential'
 
const TREND_POWER = 'Power'
 
const TREND_POLYNOMIAL_2 = 'Polynomial_2'
 
const TREND_POLYNOMIAL_3 = 'Polynomial_3'
 
const TREND_POLYNOMIAL_4 = 'Polynomial_4'
 
const TREND_POLYNOMIAL_5 = 'Polynomial_5'
 
const TREND_POLYNOMIAL_6 = 'Polynomial_6'
 
const TREND_BEST_FIT = 'Bestfit'
 
const TREND_BEST_FIT_NO_POLY = 'Bestfit_no_Polynomials'
 

Static Private Attributes

static $_trendTypes
 
static $_trendTypePolyOrders
 
static $_trendCache = array()
 

Detailed Description

Definition at line 43 of file trendClass.php.

Member Function Documentation

◆ calculate()

static trendClass::calculate (   $trendType = self::TREND_BEST_FIT,
  $yValues,
  $xValues = array(),
  $const = True 
)
static

Definition at line 87 of file trendClass.php.

87 {
88 // Calculate number of points in each dataset
89 $nY = count($yValues);
90 $nX = count($xValues);
91
92 // Define X Values if necessary
93 if ($nX == 0) {
94 $xValues = range(1,$nY);
95 $nX = $nY;
96 } elseif ($nY != $nX) {
97 // Ensure both arrays of points are the same size
98 trigger_error("trend(): Number of elements in coordinate arrays do not match.", E_USER_ERROR);
99 }
100
101 $key = md5($trendType.$const.serialize($yValues).serialize($xValues));
102 // Determine which trend method has been requested
103 switch ($trendType) {
104 // Instantiate and return the class for the requested trend method
105 case self::TREND_LINEAR :
108 case self::TREND_POWER :
109 if (!isset(self::$_trendCache[$key])) {
110 $className = 'PHPExcel_'.$trendType.'_Best_Fit';
111 self::$_trendCache[$key] = new $className($yValues,$xValues,$const);
112 }
113 return self::$_trendCache[$key];
114 break;
120 if (!isset(self::$_trendCache[$key])) {
121 $order = substr($trendType,-1);
122 self::$_trendCache[$key] = new PHPExcel_Polynomial_Best_Fit($order,$yValues,$xValues,$const);
123 }
124 return self::$_trendCache[$key];
125 break;
128 // If the request is to determine the best fit regression, then we test each trend line in turn
129 // Start by generating an instance of each available trend method
130 foreach(self::$_trendTypes as $trendMethod) {
131 $className = 'PHPExcel_'.$trendMethod.'BestFit';
132 $bestFit[$trendMethod] = new $className($yValues,$xValues,$const);
133 $bestFitValue[$trendMethod] = $bestFit[$trendMethod]->getGoodnessOfFit();
134 }
135 if ($trendType != self::TREND_BEST_FIT_NO_POLY) {
136 foreach(self::$_trendTypePolyOrders as $trendMethod) {
137 $order = substr($trendMethod,-1);
138 $bestFit[$trendMethod] = new PHPExcel_Polynomial_Best_Fit($order,$yValues,$xValues,$const);
139 if ($bestFit[$trendMethod]->getError()) {
140 unset($bestFit[$trendMethod]);
141 } else {
142 $bestFitValue[$trendMethod] = $bestFit[$trendMethod]->getGoodnessOfFit();
143 }
144 }
145 }
146 // Determine which of our trend lines is the best fit, and then we return the instance of that trend class
147 arsort($bestFitValue);
148 $bestFitType = key($bestFitValue);
149 return $bestFit[$bestFitType];
150 break;
151 default :
152 return false;
153 }
154 } // function calculate()
getError()
returns error @access public
const TREND_LINEAR
Definition: trendClass.php:45
const TREND_POLYNOMIAL_3
Definition: trendClass.php:50
const TREND_LOGARITHMIC
Definition: trendClass.php:46
const TREND_BEST_FIT_NO_POLY
Definition: trendClass.php:55
const TREND_BEST_FIT
Definition: trendClass.php:54
const TREND_EXPONENTIAL
Definition: trendClass.php:47
const TREND_POWER
Definition: trendClass.php:48
const TREND_POLYNOMIAL_2
Definition: trendClass.php:49
const TREND_POLYNOMIAL_4
Definition: trendClass.php:51
const TREND_POLYNOMIAL_6
Definition: trendClass.php:53
const TREND_POLYNOMIAL_5
Definition: trendClass.php:52
$key
Definition: croninfo.php:18

References $key, getError(), TREND_BEST_FIT, TREND_BEST_FIT_NO_POLY, TREND_EXPONENTIAL, TREND_LINEAR, TREND_LOGARITHMIC, TREND_POLYNOMIAL_2, TREND_POLYNOMIAL_3, TREND_POLYNOMIAL_4, TREND_POLYNOMIAL_5, TREND_POLYNOMIAL_6, and TREND_POWER.

Referenced by PHPExcel_Calculation_Statistical\CORREL(), PHPExcel_Calculation_Statistical\COVAR(), PHPExcel_Calculation_Statistical\FORECAST(), PHPExcel_Calculation_Statistical\GROWTH(), PHPExcel_Calculation_Statistical\INTERCEPT(), PHPExcel_Calculation_Statistical\LINEST(), PHPExcel_Calculation_Statistical\LOGEST(), PHPExcel_Calculation_Statistical\RSQ(), PHPExcel_Calculation_Statistical\SLOPE(), PHPExcel_Calculation_Statistical\STEYX(), and PHPExcel_Calculation_Statistical\TREND().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Field Documentation

◆ $_trendCache

trendClass::$_trendCache = array()
staticprivate

Definition at line 84 of file trendClass.php.

◆ $_trendTypePolyOrders

trendClass::$_trendTypePolyOrders
staticprivate
Initial value:
= array( self::TREND_POLYNOMIAL_2,
self::TREND_POLYNOMIAL_3,
self::TREND_POLYNOMIAL_4,
self::TREND_POLYNOMIAL_5,
self::TREND_POLYNOMIAL_6
)

Definition at line 72 of file trendClass.php.

◆ $_trendTypes

trendClass::$_trendTypes
staticprivate
Initial value:
= array( self::TREND_LINEAR,
self::TREND_LOGARITHMIC,
self::TREND_EXPONENTIAL,
self::TREND_POWER
)

Definition at line 62 of file trendClass.php.

◆ TREND_BEST_FIT

const trendClass::TREND_BEST_FIT = 'Bestfit'

Definition at line 54 of file trendClass.php.

Referenced by calculate().

◆ TREND_BEST_FIT_NO_POLY

const trendClass::TREND_BEST_FIT_NO_POLY = 'Bestfit_no_Polynomials'

Definition at line 55 of file trendClass.php.

Referenced by calculate().

◆ TREND_EXPONENTIAL

const trendClass::TREND_EXPONENTIAL = 'Exponential'

◆ TREND_LINEAR

◆ TREND_LOGARITHMIC

const trendClass::TREND_LOGARITHMIC = 'Logarithmic'

Definition at line 46 of file trendClass.php.

Referenced by calculate().

◆ TREND_POLYNOMIAL_2

const trendClass::TREND_POLYNOMIAL_2 = 'Polynomial_2'

Definition at line 49 of file trendClass.php.

Referenced by calculate().

◆ TREND_POLYNOMIAL_3

const trendClass::TREND_POLYNOMIAL_3 = 'Polynomial_3'

Definition at line 50 of file trendClass.php.

Referenced by calculate().

◆ TREND_POLYNOMIAL_4

const trendClass::TREND_POLYNOMIAL_4 = 'Polynomial_4'

Definition at line 51 of file trendClass.php.

Referenced by calculate().

◆ TREND_POLYNOMIAL_5

const trendClass::TREND_POLYNOMIAL_5 = 'Polynomial_5'

Definition at line 52 of file trendClass.php.

Referenced by calculate().

◆ TREND_POLYNOMIAL_6

const trendClass::TREND_POLYNOMIAL_6 = 'Polynomial_6'

Definition at line 53 of file trendClass.php.

Referenced by calculate().

◆ TREND_POWER

const trendClass::TREND_POWER = 'Power'

Definition at line 48 of file trendClass.php.

Referenced by calculate().


The documentation for this class was generated from the following file: