 <?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.analytica.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Drice</id>
	<title>Analytica Docs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.analytica.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Drice"/>
	<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php/Special:Contributions/Drice"/>
	<updated>2026-05-24T02:02:31Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.9</generator>
	<entry>
		<id>https://docs.analytica.com/index.php?title=ConcatRows&amp;diff=59712</id>
		<title>ConcatRows</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=ConcatRows&amp;diff=59712"/>
		<updated>2023-08-29T15:11:33Z</updated>

		<summary type="html">&lt;p&gt;Drice: typo, «i» should have been «k»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:Array Flattening Functions]]&lt;br /&gt;
[[Category:Doc Status C]] &amp;lt;!-- For Lumina use, do not change --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ConcatRows(a, i, j'', k'') ===&lt;br /&gt;
Flattens array «a» by replacing the two indexes «i» and «j» by a single new index «k» that includes all combinations of values from «i» and «j». If you don't specify «i», it generates a local index with the name &amp;lt;code&amp;gt;.ConcatIndex&amp;lt;/code&amp;gt;, containing all those combinations. If you do specify «k», it must have length equal to &amp;lt;code&amp;gt;[[IndexLength]](i)*[[IndexLength]](j)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
Let &lt;br /&gt;
:&amp;lt;code&amp;gt;Variable A:=&amp;lt;/code&amp;gt; &lt;br /&gt;
:{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !! colspan=&amp;quot;4&amp;quot; | J &amp;amp;#9654;&lt;br /&gt;
|-&lt;br /&gt;
! I &amp;amp;#9660; !!1 !! 2 !! 3 !! 4&lt;br /&gt;
|-&lt;br /&gt;
! 1 || 'a' || 'b' || 'c' || 'd'&lt;br /&gt;
|-&lt;br /&gt;
! 2 || 'e' || 'f' || 'g' || 'h'&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Then&lt;br /&gt;
:&amp;lt;code&amp;gt;ConcatRows(A, I, J) &amp;amp;rarr;&amp;lt;/code&amp;gt;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! colspan=8| .ConcatIndex &amp;amp;#9654;&lt;br /&gt;
|-&lt;br /&gt;
!1 !! 2 !! 3 !! 4 !! 5 !! 6 !! 7 !! 8&lt;br /&gt;
|-&lt;br /&gt;
| 'a' || 'b' || 'c' || 'd' || 'e' || 'f' || 'g' || 'h'&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;ConcatRows(A, J, I) &amp;amp;rarr;&amp;lt;/code&amp;gt;&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! colspan=8| .ConcatIndex &amp;amp;#9654; &lt;br /&gt;
|-&lt;br /&gt;
! 1 !! 2 !! 3 !! 4 !! 5 !! 6 !! 7 !! 8&lt;br /&gt;
|-&lt;br /&gt;
| 'a' || 'e' || 'b' || 'f' || 'c' || 'g' || 'd' || 'h'&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To flatten three dimensions,&amp;lt;code&amp;gt; I1&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt; I2&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;I3&amp;lt;/code&amp;gt;, use:&lt;br /&gt;
:&amp;lt;code&amp;gt;Var tmp := ConcatRows(A, I1, I2) Do ConcatRows(tmp, tmp. ConcatIndex, I3)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Inverse of ConcatRows ===&lt;br /&gt;
It is often useful to do the inverse of [[ConcatRows]] -- that is, unflatten a 1D array indexed by &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; to produce a 2D array indexed by &amp;lt;code&amp;gt;I&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;J&amp;lt;/code&amp;gt;.  As with [[ConcatRows]], &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; must have &amp;lt;code&amp;gt;Size(I)*Size(J)&amp;lt;/code&amp;gt; elements.  You can do this by defining this function:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;Function UnconcatRows(X: Array[K]; I, J, K: Index)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Definition: X[K = (@I - 1)*Size(J) + @J]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use this function to extend a variety of 1D transformation functions to their 2D equivalents.  For example, &amp;lt;code&amp;gt;Rank(X, I)&amp;lt;/code&amp;gt; returns the sort rank of each element in &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt;. Given a 2D array,  apply [[ConcatRows]] to flatten it, then apply the 1D transformation [[Rank]]() to the 1D result, and finally use &amp;lt;code&amp;gt;UnConcatRows()&amp;lt;/code&amp;gt; to get back the 2D array of ranks: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;Var B := ConcatRows(A, I, J);&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;LocalAlias K := Handle(B.ConcatIndex);&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;UnconcatRows(Rank(B, K), I, J, K)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some other 1D transformation functions that can be usefully extended to 2D equivalents in this fashion are: [[Sort]], [[Cumulate]], [[Uncumulate]], [[CumProduct]], [[Dispatch]], [[GetFract]], [[Frequency]].  The technique could be applied to [[Integrate]], [[Cdf]], [[Pdf]], [[LinearInterp]] and [[CubicInterp]] functions, but the results might not be quite the same as what you would normally think of as the 2D generalization of the functions, so use with care in those cases.&lt;br /&gt;
&lt;br /&gt;
=== See Also ===&lt;br /&gt;
* [[Concat]]&lt;br /&gt;
* [[ConcatN]]&lt;br /&gt;
* [[Text Concatenation Operator: &amp;amp;]]&lt;br /&gt;
* [[MdArrayToTable]]&lt;br /&gt;
* [[Flatten]]&lt;br /&gt;
* [[media:Flattening_and_Unflatting_Arrays.ana | Flattening_and_Unflatting_Arrays.ana]] -- a downloadable model&lt;br /&gt;
* [http://WebinarArchive.analytica.com/2008-01-31-Array-Flattening.wmv Array-Flattening.wmv]  -- a webinar recording&lt;br /&gt;
* [[Array-reducing functions]]&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Attribute_panel&amp;diff=59070</id>
		<title>Attribute panel</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Attribute_panel&amp;diff=59070"/>
		<updated>2023-04-04T18:33:49Z</updated>

		<summary type="html">&lt;p&gt;Drice: Description of the More... option, a release 6.3 addition.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Analytica User Guide]] &lt;br /&gt;
[[Category: Windows and dialogs]]&lt;br /&gt;
[[Category: Attributes]]&lt;br /&gt;
&amp;lt;breadcrumbs&amp;gt;Analytica User Guide &amp;gt; Examining a Model &amp;gt; {{PAGENAME}}&amp;lt;/breadcrumbs&amp;gt;&lt;br /&gt;
{{ReleaseBar}}&lt;br /&gt;
&lt;br /&gt;
The '''''Attribute panel '''''offers a handy way to rapidly explore the [[definition]]s, descriptions, or other [[attributes]] of the variables and other nodes in a [[Diagram window]]. You can open the panel below the diagram, and use it to view or edit any attribute of the node you select. It shows the same attributes that you can see in the [[Object window]], and often several other attributes.&lt;br /&gt;
&lt;br /&gt;
{{Release||4.6|&lt;br /&gt;
:[[File:Chapter1_43.png]]&lt;br /&gt;
}}{{Release|5.0||&lt;br /&gt;
{{CalloutAnnotationBlock|[[image:Rent vs Buy Model Diagram.png]]|&lt;br /&gt;
{{CalloutAnnotation|Select node to see its attribute below|pt=32,92|v=70|style=border-style:none;padding:0px;text-align:right}}&lt;br /&gt;
{{CalloutAnnotation|Panel opener is open|pt=11,358|v=350|style=border-style:none;padding:0px;text-align:right}}&lt;br /&gt;
{{CalloutAnnotation|Drag partition to change panel height|pt=452,360|path=l|v=340|style=border-style:none;padding:0px;left:690px}}&lt;br /&gt;
{{CalloutAnnotation|Title of the selected object|pt=13,377|v=380|style=border-style:none;padding:0px;text-align:right}}&lt;br /&gt;
{{CalloutAnnotation|Value of the attribute|pt=27,403|v=480|path=t|style=border-style:none;padding:0px;text-align:center;left:135px}}&lt;br /&gt;
{{CalloutAnnotation|Attribute menu from which you select the attribute to show|pt=259,380|path=t|v=480|style=border-style:none;padding:0px;text-align:center;left:380px}}&lt;br /&gt;
{{CalloutAnnotation|Drag box to change panel height and diagram width|pt=451,446|path=t|v=480|style=border-style:none;padding:0px;left:580px}}&lt;br /&gt;
}}}}&lt;br /&gt;
&lt;br /&gt;
Click the {{Release||4.6|key icon [[File:Chapter1_44.png]]}}{{Release|5.0||panel opener icon [[image:Attribute panel opener button.png]]}} to open the '''Attribute '''panel. Here are things you can do in this panel:&lt;br /&gt;
&lt;br /&gt;
* Select another node in the diagram to see the selected attribute of a different object.&lt;br /&gt;
* Click the background of the diagram to see the [[attributes]] of the parent module.&lt;br /&gt;
* Select another option from the '''Attribute '''menu to see a different attribute.&lt;br /&gt;
* To enter or edit the attribute value, make sure you are in edit mode, and click in the '''Attribute''' panel, and start typing. (Not all attributes are user-editable.)&lt;br /&gt;
&lt;br /&gt;
Different classes of objects have different sets of attributes.&lt;br /&gt;
&lt;br /&gt;
{{Release|5.0||&lt;br /&gt;
{{CalloutAnnotationBlock|[[Image:AttributePanel.png|center]]&lt;br /&gt;
{{CalloutAnnotation|[[image:AttributeMenuVariableOptions{{Release|6.3||6_3}}.png]]&lt;br /&gt;
'''Variable'''|v=150|pt=239,33|path=t|style=border-style:none;padding:0px;text-align:center}}&lt;br /&gt;
{{CalloutAnnotation|[[image:AttributeMenuModuleOptions{{Release|6.3||6_3}}.png]]&lt;br /&gt;
'''Module'''|v=150|pt=239,33|path=t|style=border-style:none;padding:0px;left:230px;text-align:center}}&lt;br /&gt;
{{CalloutAnnotation|[[image:AttributeMenuFunctionOptions{{Release|6.3||6_3}}.png]]&lt;br /&gt;
'''Function'''|v=150|pt=239,33|path=t|style=border-style:none;padding:0px;left:460px;text-align:center}} &lt;br /&gt;
|styleRhs=left:0px;height:650px;width:680px;text-align:center&lt;br /&gt;
}}&lt;br /&gt;
}}{{Release||4.6|:[[File:Chapter1_45.png]]}}&lt;br /&gt;
&lt;br /&gt;
If you try to see an attribute not defined for an object, it shows its description.&lt;br /&gt;
&lt;br /&gt;
See the [[Glossary]] for descriptions of these attributes. &lt;br /&gt;
&lt;br /&gt;
For simplicity, less common attributes are not usually on the dropdown. {{Release|6.3||The '''More...''' option displays a submenu where you can add or remove an attribute from the menu for the current object only. This adds (or removes) the attribute to the menu and selects it for editing.}} To display other attributes or to add new attributes to the dropdown{{Release|6.3||&amp;amp;nbsp;for all objects, so it is always or never there}}, see [[Managing attributes]].  &lt;br /&gt;
&lt;br /&gt;
To close the '''Attribute '''panel, click the {{Release||4.6|key icon [[File:Chapter1_44.png]]}}{{Release|5.0||panel opener button [[image:Attribute panel closer button.png]]}} again.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Attributes]]&lt;br /&gt;
* [[Manage attributes]]&lt;br /&gt;
* [[Objects_and_Their_Attributes_-_Part_1_of_3|Objects and Their Attributes]]&lt;br /&gt;
* [[To edit an attribute]]&lt;br /&gt;
* [[Entering Attributes using the Attribute panel]]&lt;br /&gt;
* [[Tutorial: Reviewing a model#Using_the_Attribute_panel|Tutorial: Using the Attribute panel]]&lt;br /&gt;
* [[Tutorial: Create a model#Entering_attributes_using_the_Attribute_panel|Tutorial: Creating and entering attributes using the Attribute panel]]&lt;br /&gt;
* [[Tutorial: Reviewing a model#Inspecting_definitions_in_the_Attribute_panel|Tutorial: Inspecting definitions in the Attribute panel]]&lt;br /&gt;
* [[Tutorial: Reviewing a model#Inspecting_values_in_the_Attribute_panel|Tutorial: Inspecting values in the Attribute panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;footer&amp;gt;Object window / {{PAGENAME}} / Values in Object Window &amp;lt;/footer&amp;gt;&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=File:AttributeMenuModuleOptions6_3.png&amp;diff=59069</id>
		<title>File:AttributeMenuModuleOptions6 3.png</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=File:AttributeMenuModuleOptions6_3.png&amp;diff=59069"/>
		<updated>2023-04-04T18:26:48Z</updated>

		<summary type="html">&lt;p&gt;Drice: Drice uploaded a new version of File:AttributeMenuModuleOptions6 3.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=File:AttributeMenuFunctionOptions6_3.png&amp;diff=59068</id>
		<title>File:AttributeMenuFunctionOptions6 3.png</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=File:AttributeMenuFunctionOptions6_3.png&amp;diff=59068"/>
		<updated>2023-04-04T18:24:30Z</updated>

		<summary type="html">&lt;p&gt;Drice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=File:AttributeMenuModuleOptions6_3.png&amp;diff=59067</id>
		<title>File:AttributeMenuModuleOptions6 3.png</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=File:AttributeMenuModuleOptions6_3.png&amp;diff=59067"/>
		<updated>2023-04-04T18:23:48Z</updated>

		<summary type="html">&lt;p&gt;Drice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Attribute_panel&amp;diff=59066</id>
		<title>Attribute panel</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Attribute_panel&amp;diff=59066"/>
		<updated>2023-04-04T18:22:23Z</updated>

		<summary type="html">&lt;p&gt;Drice: Images of attribute menus with More&amp;gt;&amp;gt; from release 6.3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Analytica User Guide]] &lt;br /&gt;
[[Category: Windows and dialogs]]&lt;br /&gt;
[[Category: Attributes]]&lt;br /&gt;
&amp;lt;breadcrumbs&amp;gt;Analytica User Guide &amp;gt; Examining a Model &amp;gt; {{PAGENAME}}&amp;lt;/breadcrumbs&amp;gt;&lt;br /&gt;
{{ReleaseBar}}&lt;br /&gt;
&lt;br /&gt;
The '''''Attribute panel '''''offers a handy way to rapidly explore the [[definition]]s, descriptions, or other [[attributes]] of the variables and other nodes in a [[Diagram window]]. You can open the panel below the diagram, and use it to view or edit any attribute of the node you select. It shows the same attributes that you can see in the [[Object window]], and often several other attributes.&lt;br /&gt;
&lt;br /&gt;
{{Release||4.6|&lt;br /&gt;
:[[File:Chapter1_43.png]]&lt;br /&gt;
}}{{Release|5.0||&lt;br /&gt;
{{CalloutAnnotationBlock|[[image:Rent vs Buy Model Diagram.png]]|&lt;br /&gt;
{{CalloutAnnotation|Select node to see its attribute below|pt=32,92|v=70|style=border-style:none;padding:0px;text-align:right}}&lt;br /&gt;
{{CalloutAnnotation|Panel opener is open|pt=11,358|v=350|style=border-style:none;padding:0px;text-align:right}}&lt;br /&gt;
{{CalloutAnnotation|Drag partition to change panel height|pt=452,360|path=l|v=340|style=border-style:none;padding:0px;left:690px}}&lt;br /&gt;
{{CalloutAnnotation|Title of the selected object|pt=13,377|v=380|style=border-style:none;padding:0px;text-align:right}}&lt;br /&gt;
{{CalloutAnnotation|Value of the attribute|pt=27,403|v=480|path=t|style=border-style:none;padding:0px;text-align:center;left:135px}}&lt;br /&gt;
{{CalloutAnnotation|Attribute menu from which you select the attribute to show|pt=259,380|path=t|v=480|style=border-style:none;padding:0px;text-align:center;left:380px}}&lt;br /&gt;
{{CalloutAnnotation|Drag box to change panel height and diagram width|pt=451,446|path=t|v=480|style=border-style:none;padding:0px;left:580px}}&lt;br /&gt;
}}}}&lt;br /&gt;
&lt;br /&gt;
Click the {{Release||4.6|key icon [[File:Chapter1_44.png]]}}{{Release|5.0||panel opener icon [[image:Attribute panel opener button.png]]}} to open the '''Attribute '''panel. Here are things you can do in this panel:&lt;br /&gt;
&lt;br /&gt;
* Select another node in the diagram to see the selected attribute of a different object.&lt;br /&gt;
* Click the background of the diagram to see the [[attributes]] of the parent module.&lt;br /&gt;
* Select another option from the '''Attribute '''menu to see a different attribute.&lt;br /&gt;
* To enter or edit the attribute value, make sure you are in edit mode, and click in the '''Attribute''' panel, and start typing. (Not all attributes are user-editable.)&lt;br /&gt;
&lt;br /&gt;
Different classes of objects have different sets of attributes.&lt;br /&gt;
&lt;br /&gt;
{{Release|5.0||&lt;br /&gt;
{{CalloutAnnotationBlock|[[Image:AttributePanel.png|center]]&lt;br /&gt;
{{CalloutAnnotation|[[image:AttributeMenuVariableOptions{{Release|6.3||6_3}}.png]]&lt;br /&gt;
'''Variable'''|v=150|pt=239,33|path=t|style=border-style:none;padding:0px;text-align:center}}&lt;br /&gt;
{{CalloutAnnotation|[[image:AttributeMenuModuleOptions{{Release|6.3||6_3}}.png]]&lt;br /&gt;
'''Module'''|v=150|pt=239,33|path=t|style=border-style:none;padding:0px;left:230px;text-align:center}}&lt;br /&gt;
{{CalloutAnnotation|[[image:AttributeMenuFunctionOptions{{Release|6.3||6_3}}.png]]&lt;br /&gt;
'''Function'''|v=150|pt=239,33|path=t|style=border-style:none;padding:0px;left:460px;text-align:center}} &lt;br /&gt;
|styleRhs=left:0px;height:650px;width:680px;text-align:center&lt;br /&gt;
}}&lt;br /&gt;
}}{{Release||4.6|:[[File:Chapter1_45.png]]}}&lt;br /&gt;
&lt;br /&gt;
If you try to see an attribute not defined for an object, it shows its description.&lt;br /&gt;
&lt;br /&gt;
See the [[Glossary]] for descriptions of these attributes. To display other attributes or to add new attributes, see [[Managing attributes]].&lt;br /&gt;
&lt;br /&gt;
To close the '''Attribute '''panel, click the {{Release||4.6|key icon [[File:Chapter1_44.png]]}}{{Release|5.0||panel opener button [[image:Attribute panel closer button.png]]}} again.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Attributes]]&lt;br /&gt;
* [[Manage attributes]]&lt;br /&gt;
* [[Objects_and_Their_Attributes_-_Part_1_of_3|Objects and Their Attributes]]&lt;br /&gt;
* [[To edit an attribute]]&lt;br /&gt;
* [[Entering Attributes using the Attribute panel]]&lt;br /&gt;
* [[Tutorial: Reviewing a model#Using_the_Attribute_panel|Tutorial: Using the Attribute panel]]&lt;br /&gt;
* [[Tutorial: Create a model#Entering_attributes_using_the_Attribute_panel|Tutorial: Creating and entering attributes using the Attribute panel]]&lt;br /&gt;
* [[Tutorial: Reviewing a model#Inspecting_definitions_in_the_Attribute_panel|Tutorial: Inspecting definitions in the Attribute panel]]&lt;br /&gt;
* [[Tutorial: Reviewing a model#Inspecting_values_in_the_Attribute_panel|Tutorial: Inspecting values in the Attribute panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;footer&amp;gt;Object window / {{PAGENAME}} / Values in Object Window &amp;lt;/footer&amp;gt;&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=File:AttributeMenuVariableOptions6_3.png&amp;diff=59065</id>
		<title>File:AttributeMenuVariableOptions6 3.png</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=File:AttributeMenuVariableOptions6_3.png&amp;diff=59065"/>
		<updated>2023-04-04T18:21:37Z</updated>

		<summary type="html">&lt;p&gt;Drice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=File:Anderson-Darling_test_example.ana&amp;diff=59058</id>
		<title>File:Anderson-Darling test example.ana</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=File:Anderson-Darling_test_example.ana&amp;diff=59058"/>
		<updated>2023-03-27T22:53:40Z</updated>

		<summary type="html">&lt;p&gt;Drice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Anderson-Darling_test&amp;diff=59057</id>
		<title>Anderson-Darling test</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Anderson-Darling_test&amp;diff=59057"/>
		<updated>2023-03-27T22:53:23Z</updated>

		<summary type="html">&lt;p&gt;Drice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Anderson-Darling test is used to detect whether a set of univariate continuous samples comes from a known distribution. The [[Kolmogorov-Smirnov Tests]] are used for the same thing, but differ in the choice of metric used to measure the distance between distributions. The Anderson-Darling test is more powerful (i.e., more likely to detect a difference in distribution when one exists) in many cases.&lt;br /&gt;
&lt;br /&gt;
However, the Anderson-Darling test does not have a closed-form for the distribution function. Even though the test is distribution-free in theory, in practice, many different critical value tables are compiled for different forms for the null hypothesis distribution. These are usually estimated tables obtained after simulating many examples and then fitting a parametric model to approximate the true values.&lt;br /&gt;
&lt;br /&gt;
Here, instead of assuming any particular distribution, I show how to compute the p-value for ''any'' distribution null hypothesis in Analytica. The trade-off is that this is indeed distribution-free, but requires a Monte Carlo simulation to compute every p-value. &lt;br /&gt;
&lt;br /&gt;
== The test ==&lt;br /&gt;
Given a sample of data, &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt;, indexed by &amp;lt;code&amp;gt;I&amp;lt;/code&amp;gt;, where each cell is a scalar, we ask the question: Was this data sampled from the distribution &amp;lt;code&amp;gt;F&amp;lt;/code&amp;gt;?  To answer this, we compute the p-value, which is the probability of observing an Anderson-Darling distance greater than the measured distance under the assumption that the data was indeed generated by &amp;lt;code&amp;gt;F&amp;lt;/code&amp;gt;.  This assumption is called the ''null hypothesis''. If the computed p-value &amp;lt; 0.05, then we will conclude that there is evidence (i.e., statistically significant evidence) that the data's distribution is not the same as &amp;lt;code&amp;gt;F&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To perform the test, in addition to the data, you need to be able to compute two things:&lt;br /&gt;
* The CDF of the hypothesized distribution at any value &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, written &amp;lt;code&amp;gt;F(x)&amp;lt;/code&amp;gt;.&lt;br /&gt;
* A random sample from the hypothesized distribution.&lt;br /&gt;
&lt;br /&gt;
If you want to test whether the data comes from a &amp;lt;code&amp;gt;[[Normal]](10,2)&amp;lt;/code&amp;gt; distribution, then you'll need these:&lt;br /&gt;
* &amp;lt;code&amp;gt;Function F(x) := CumNormal( x, 10, 2 )&amp;lt;/code&amp;gt;   { To compute the CDF }&lt;br /&gt;
* &amp;lt;code&amp;gt;[[Normal]](10,2)&amp;lt;/code&amp;gt;    { To generate the sample }&lt;br /&gt;
&lt;br /&gt;
== The Anderson-Darling distance ==&lt;br /&gt;
The Anderson-Darling distance is a metric that compares the distance (in distribution) of a sample of points to a known distribution. It is implemented in Analytica as follows:&lt;br /&gt;
&lt;br /&gt;
 Function AD_dist( x : [I] ; I : Index ; F : Function(x) atom )&lt;br /&gt;
'''Definition''':&lt;br /&gt;
  [[Local]] xs := [[Sort]](x,I);&lt;br /&gt;
  [[Local]] n := [[Sum]](x&amp;lt;&amp;gt;Null, I);&lt;br /&gt;
  [[Local]] S := [[Sum]]( (2*@I-1)/n * ([[Ln]](F(xs)) + [[Ln]](1-F([[Reverse]](xs,I)))), I );&lt;br /&gt;
  -n - S&lt;br /&gt;
&lt;br /&gt;
The distance from your data to the hypothesized distribution is given by:&lt;br /&gt;
:Variable A2 := &amp;lt;code&amp;gt;AD_dist( X, I, F )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Computing the p-value ==&lt;br /&gt;
To compute the p-value by Monte Carlo simulation, create a chance variable that samples from the hypothesized distribution. For example, if the null hypothesis is that the data comes from a &amp;lt;code&amp;gt;[[Normal]](10,2)&amp;lt;/code&amp;gt; distribution, then your chance variable will be defined as:&lt;br /&gt;
&lt;br /&gt;
:Chance Xr := &amp;lt;code&amp;gt;[[Normal]]( 10, 2 )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use two more variables as follows:&lt;br /&gt;
:Variable Sim_AD_dist_given_H0 := &amp;lt;code&amp;gt;AD_dist( Xr, I, F )&amp;lt;/code&amp;gt;&lt;br /&gt;
:Variable p_value := &amp;lt;code&amp;gt;Probability( Sim_AD_dist_given_H0 &amp;gt; A2 )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
This approach generalizes to any hypothesis test. &lt;br /&gt;
&lt;br /&gt;
The computed p-value has some sampling error due to the fact that it is approximated using Monte Carlo sampling. You can reduce this error by increasing the [[Uncertainty Setup dialog|Sample Size]]. A larger sample size takes longer and requires more memory, but is more accurate. However, a default sample size of 1000 is sufficient in almost all cases, especially if you aren't right on the 0.05 threshold.&lt;br /&gt;
&lt;br /&gt;
== A working example ==&lt;br /&gt;
'''Download:''' [[media:Anderson-Darling test example.ana]]&lt;br /&gt;
&lt;br /&gt;
This model implements the test.  Data points are generated by sampling from a &amp;lt;code&amp;gt;[[Logistic]]( 10, 2)&amp;lt;/code&amp;gt; distribution (see variable &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt;). This is our data set.  &lt;br /&gt;
&lt;br /&gt;
You can select from two null hypotheses:&lt;br /&gt;
* &amp;lt;code&amp;gt;[[Normal]](10,2)&amp;lt;/code&amp;gt;    { A different distribution }&lt;br /&gt;
* &amp;lt;code&amp;gt;[[Logistic]](10,2)&amp;lt;/code&amp;gt;    { The same distribution }&lt;br /&gt;
&lt;br /&gt;
A successful result is a p-Value &amp;lt; 0.05 in the first case, and a p-Value &amp;gt; 0.05 in the second case.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Kolmogorov-Smirnov Tests]]&lt;br /&gt;
* [[Tutorial_videos#Session_8:_Hypothesis_Testing|Webinar on Hypothesis Testing]]&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Kolmogorov-Smirnov_Tests&amp;diff=59056</id>
		<title>Kolmogorov-Smirnov Tests</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Kolmogorov-Smirnov_Tests&amp;diff=59056"/>
		<updated>2023-03-27T22:42:03Z</updated>

		<summary type="html">&lt;p&gt;Drice: fixed a hyperlink&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Are the data points in a sample drawn from a specific known distribution? For example, are they drawn from a &amp;lt;code&amp;gt;[[Gamma]](3,2)&amp;lt;/code&amp;gt; distribution?  Are the data points in one sample drawn from the same distribution as the data points in a second sample?&lt;br /&gt;
&lt;br /&gt;
The Kolmogorov-Smirnov test(s) can be used to answer either of these questions.&lt;br /&gt;
* The data must be univariate and continuous (i.e., each sample point is a single real number).&lt;br /&gt;
* It works for any continuous distribution -- there is no assumption that the distribution is [[Normal]] or anything else.&lt;br /&gt;
&lt;br /&gt;
The tests return a p-value, which is the probability of seeing as much distance between the two distributions (in the one-sample case, between the sample and the reference) if there is no difference in distribution. A small p-value, say p-value &amp;lt; 0.05, means a difference was detected, with a false-positive rate equal to 0.05. If the p-value &amp;gt; 0.05, you can't conclude that they are the same distribution -- only that the test and amount of data did not provide enough power to detect any difference if one exists.&lt;br /&gt;
&lt;br /&gt;
== Kolmogorov-Smirnov Tests Library ==&lt;br /&gt;
&lt;br /&gt;
'''Download:''' [[media:Kolmogorov-Smirnov Tests Library.ana]]&lt;br /&gt;
&lt;br /&gt;
To use this library, use '''File / Add Library...''' from the File menu after downloading.&lt;br /&gt;
&lt;br /&gt;
This library provides two functions:&lt;br /&gt;
; &amp;lt;code&amp;gt;KS_test_one_dist( x, I, refCdf )&amp;lt;/code&amp;gt;&lt;br /&gt;
: Tests whether the empirical distribution of data «x», which is indexed by «&amp;lt;code&amp;gt;I&amp;lt;/code&amp;gt;», matches a hypothesized distribution whose cumulative probability function is passed as the 3rd parameter.&lt;br /&gt;
; &amp;lt;code&amp;gt;KS_test_two_dist( xi, xj, I, J )&amp;lt;/code&amp;gt;&lt;br /&gt;
:Tests whether the data in «xi» and data in «xj» appear to be from the same distribution.  «xi» is indexed by «&amp;lt;code&amp;gt;I&amp;lt;/code&amp;gt;» and «xj» is indexed by «&amp;lt;code&amp;gt;J&amp;lt;/code&amp;gt;».&lt;br /&gt;
&lt;br /&gt;
Both functions return the p-value.&lt;br /&gt;
;If p-value &amp;lt; 0.05&lt;br /&gt;
:Conclude (with statistical significance 0.05) that the distributions differ.&lt;br /&gt;
;If p-value &amp;gt; 0.05&lt;br /&gt;
:You can't conclude that they have the same or different distributions. Just that there is not enough statistical power in the test, or enough data. to detect a difference in distribution if one exists.&lt;br /&gt;
&lt;br /&gt;
== Using KS_test_one_dist ==&lt;br /&gt;
&lt;br /&gt;
To do a one-sample test, you need to provide a cdf function for your hypothesized distribution. You can do this either by creating a new global [[UDF]], or by using a [[Local functions and local value captures|Local function]].&lt;br /&gt;
&lt;br /&gt;
To test whether the data in &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; is distributed as &amp;lt;code&amp;gt;Gamma( 5.9, 1.65 )&amp;lt;/code&amp;gt;, you can first create a [[UDF]]:&lt;br /&gt;
:&amp;lt;code&amp;gt;Function MyHypothCDF(x) ::= CumGamma( x, 5.9, 1.65)&amp;lt;/code&amp;gt;&lt;br /&gt;
And then pass this to the function using:&lt;br /&gt;
:&amp;lt;code&amp;gt;KS_test_one_dist( x, I, MyHypothCDF )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternately, you can use a local function like this:&lt;br /&gt;
:&amp;lt;code&amp;gt;[[Local functions and local value captures|Function]] hypCdf(x) : CumGamma( x, 5.9, 1.65 );&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;KS_test_one_dist( x, I, hypCdf )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is important to notice that a sole colon is used between the function declaration and its defining expression in the local declaration (i.e., not an assignment operator, &amp;lt;code&amp;gt;:=&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Using KS_test_two_dist ==&lt;br /&gt;
When comparing two data sets, each may have its own index, and each can be a different length. The usage is easy -- just pass each, then pass the index of each:&lt;br /&gt;
:&amp;lt;code&amp;gt;KS_test_two_dist( xi, xj, I, J )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
* The p-value from &amp;lt;code&amp;gt;KS_test_one_dist&amp;lt;/code&amp;gt; is overly weak when you use the data to estimate parameters of your hypothesized distribution. If you do this and still get a p-value &amp;lt; 0.05, you are safe to conclude that the distributions differ, but in general, the p-value will be more conservative than necessary. In that case, other statistical tests will be more powerful.&lt;br /&gt;
* Stronger statistical tests exist for specific distributions.  KS is weaker since it makes no distributional assumption.&lt;br /&gt;
&lt;br /&gt;
There are some things that should be cleaned up in this model.&lt;br /&gt;
* The identifiers that appear in the '''Examples''' module don't have a namespace prefix. Hence, they are at risk for name collisions. (If name collisions occur, you'll see a dialog when you Add the library to your model).&lt;br /&gt;
* You'll get a warning if you open this in a release prior to [[Analytica 6.3]]. You can ignore the warning as long as your release is fairly recent (like 6.x).&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Tutorial_videos#Session_8:_Hypothesis_Testing|Hypothesis Testing]] (A webinar)&lt;br /&gt;
* [[Anderson-Darling test]]&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Kolmogorov-Smirnov_Tests&amp;diff=59055</id>
		<title>Kolmogorov-Smirnov Tests</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Kolmogorov-Smirnov_Tests&amp;diff=59055"/>
		<updated>2023-03-27T22:41:37Z</updated>

		<summary type="html">&lt;p&gt;Drice: link to Anderson-Darling test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Are the data points in a sample drawn from a specific known distribution? For example, are they drawn from a &amp;lt;code&amp;gt;[[Gamma]](3,2)&amp;lt;/code&amp;gt; distribution?  Are the data points in one sample drawn from the same distribution as the data points in a second sample?&lt;br /&gt;
&lt;br /&gt;
The Kolmogorov-Smirnov test(s) can be used to answer either of these questions.&lt;br /&gt;
* The data must be univariate and continuous (i.e., each sample point is a single real number).&lt;br /&gt;
* It works for any continuous distribution -- there is no assumption that the distribution is [[Normal]] or anything else.&lt;br /&gt;
&lt;br /&gt;
The tests return a p-value, which is the probability of seeing as much distance between the two distributions (in the one-sample case, between the sample and the reference) if there is no difference in distribution. A small p-value, say p-value &amp;lt; 0.05, means a difference was detected, with a false-positive rate equal to 0.05. If the p-value &amp;gt; 0.05, you can't conclude that they are the same distribution -- only that the test and amount of data did not provide enough power to detect any difference if one exists.&lt;br /&gt;
&lt;br /&gt;
== Kolmogorov-Smirnov Tests Library ==&lt;br /&gt;
&lt;br /&gt;
'''Download:''' [[media:Kolmogorov-Smirnov Tests Library.ana]]&lt;br /&gt;
&lt;br /&gt;
To use this library, use '''File / Add Library...''' from the File menu after downloading.&lt;br /&gt;
&lt;br /&gt;
This library provides two functions:&lt;br /&gt;
; &amp;lt;code&amp;gt;KS_test_one_dist( x, I, refCdf )&amp;lt;/code&amp;gt;&lt;br /&gt;
: Tests whether the empirical distribution of data «x», which is indexed by «&amp;lt;code&amp;gt;I&amp;lt;/code&amp;gt;», matches a hypothesized distribution whose cumulative probability function is passed as the 3rd parameter.&lt;br /&gt;
; &amp;lt;code&amp;gt;KS_test_two_dist( xi, xj, I, J )&amp;lt;/code&amp;gt;&lt;br /&gt;
:Tests whether the data in «xi» and data in «xj» appear to be from the same distribution.  «xi» is indexed by «&amp;lt;code&amp;gt;I&amp;lt;/code&amp;gt;» and «xj» is indexed by «&amp;lt;code&amp;gt;J&amp;lt;/code&amp;gt;».&lt;br /&gt;
&lt;br /&gt;
Both functions return the p-value.&lt;br /&gt;
;If p-value &amp;lt; 0.05&lt;br /&gt;
:Conclude (with statistical significance 0.05) that the distributions differ.&lt;br /&gt;
;If p-value &amp;gt; 0.05&lt;br /&gt;
:You can't conclude that they have the same or different distributions. Just that there is not enough statistical power in the test, or enough data. to detect a difference in distribution if one exists.&lt;br /&gt;
&lt;br /&gt;
== Using KS_test_one_dist ==&lt;br /&gt;
&lt;br /&gt;
To do a one-sample test, you need to provide a cdf function for your hypothesized distribution. You can do this either by creating a new global [[UDF]], or by using a [[Local functions and local value captures|Local function]].&lt;br /&gt;
&lt;br /&gt;
To test whether the data in &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; is distributed as &amp;lt;code&amp;gt;Gamma( 5.9, 1.65 )&amp;lt;/code&amp;gt;, you can first create a [[UDF]]:&lt;br /&gt;
:&amp;lt;code&amp;gt;Function MyHypothCDF(x) ::= CumGamma( x, 5.9, 1.65)&amp;lt;/code&amp;gt;&lt;br /&gt;
And then pass this to the function using:&lt;br /&gt;
:&amp;lt;code&amp;gt;KS_test_one_dist( x, I, MyHypothCDF )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternately, you can use a local function like this:&lt;br /&gt;
:&amp;lt;code&amp;gt;[[Local functions and local value captures|Function]] hypCdf(x) : CumGamma( x, 5.9, 1.65 );&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;KS_test_one_dist( x, I, hypCdf )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is important to notice that a sole colon is used between the function declaration and its defining expression in the local declaration (i.e., not an assignment operator, &amp;lt;code&amp;gt;:=&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Using KS_test_two_dist ==&lt;br /&gt;
When comparing two data sets, each may have its own index, and each can be a different length. The usage is easy -- just pass each, then pass the index of each:&lt;br /&gt;
:&amp;lt;code&amp;gt;KS_test_two_dist( xi, xj, I, J )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
* The p-value from &amp;lt;code&amp;gt;KS_test_one_dist&amp;lt;/code&amp;gt; is overly weak when you use the data to estimate parameters of your hypothesized distribution. If you do this and still get a p-value &amp;lt; 0.05, you are safe to conclude that the distributions differ, but in general, the p-value will be more conservative than necessary. In that case, other statistical tests will be more powerful.&lt;br /&gt;
* Stronger statistical tests exist for specific distributions.  KS is weaker since it makes no distributional assumption.&lt;br /&gt;
&lt;br /&gt;
There are some things that should be cleaned up in this model.&lt;br /&gt;
* The identifiers that appear in the '''Examples''' module don't have a namespace prefix. Hence, they are at risk for name collisions. (If name collisions occur, you'll see a dialog when you Add the library to your model).&lt;br /&gt;
* You'll get a warning if you open this in a release prior to [[Analytica 6.3]]. You can ignore the warning as long as your release is fairly recent (like 6.x).&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[https://docs.analytica.com/index.php/Tutorial_videos#Session_8:_Hypothesis_Testing|Hypothesis Testing]] (A webinar)&lt;br /&gt;
* [[Anderson-Darling test]]&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Anderson-Darling_test&amp;diff=59054</id>
		<title>Anderson-Darling test</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Anderson-Darling_test&amp;diff=59054"/>
		<updated>2023-03-27T22:41:22Z</updated>

		<summary type="html">&lt;p&gt;Drice: sample size&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Anderson-Darling test is used to detect whether a set of univariate continuous samples comes from a known distribution. The [[Kolmogorov-Smirnov Tests]] are used for the same thing, but differ in the choice of metric used to measure the distance between distributions. The Anderson-Darling test is more powerful (i.e., more likely to detect a difference in distribution when one exists) in many cases.&lt;br /&gt;
&lt;br /&gt;
However, the Anderson-Darling test does not have a closed-form for the distribution function. Even though the test is distribution-free in theory, in practice, many different critical value tables are compiled for different forms for the null hypothesis distribution. These are usually estimated tables obtained after simulating many examples and then fitting a parametric model to approximate the true values.&lt;br /&gt;
&lt;br /&gt;
Here, instead of assuming any particular distribution, I show how to compute the p-value for ''any'' distribution null hypothesis in Analytica. The trade-off is that this is indeed distribution-free, but requires a Monte Carlo simulation to compute every p-value. &lt;br /&gt;
&lt;br /&gt;
== The test ==&lt;br /&gt;
Given a sample of data, &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt;, indexed by &amp;lt;code&amp;gt;I&amp;lt;/code&amp;gt;, where each cell is a scalar, we ask the question: Was this data sampled from the distribution &amp;lt;code&amp;gt;F&amp;lt;/code&amp;gt;?  To answer this, we compute the p-value, which is the probability of observing an Anderson-Darling distance greater than the measured distance under the assumption that the data was indeed generated by &amp;lt;code&amp;gt;F&amp;lt;/code&amp;gt;.  This assumption is called the ''null hypothesis''. If the computed p-value &amp;lt; 0.05, then we will conclude that there is evidence (i.e., statistically significant evidence) that the data's distribution is not the same as &amp;lt;code&amp;gt;F&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To perform the test, in addition to the data, you need to be able to compute two things:&lt;br /&gt;
* The CDF of the hypothesized distribution at any value &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, written &amp;lt;code&amp;gt;F(x)&amp;lt;/code&amp;gt;.&lt;br /&gt;
* A random sample from the hypothesized distribution.&lt;br /&gt;
&lt;br /&gt;
If you want to test whether the data comes from a &amp;lt;code&amp;gt;[[Normal]](10,2)&amp;lt;/code&amp;gt; distribution, then you'll need these:&lt;br /&gt;
* &amp;lt;code&amp;gt;Function F(x) := CumNormal( x, 10, 2 )&amp;lt;/code&amp;gt;   { To compute the CDF }&lt;br /&gt;
* &amp;lt;code&amp;gt;[[Normal]](10,2)&amp;lt;/code&amp;gt;    { To generate the sample }&lt;br /&gt;
&lt;br /&gt;
== The Anderson-Darling distance ==&lt;br /&gt;
The Anderson-Darling distance is a metric that compares the distance (in distribution) of a sample of points to a known distribution. It is implemented in Analytica as follows:&lt;br /&gt;
&lt;br /&gt;
 Function AD_dist( x : [I] ; I : Index ; F : Function(x) atom )&lt;br /&gt;
'''Definition''':&lt;br /&gt;
  [[Local]] xs := [[Sort]](x,I);&lt;br /&gt;
  [[Local]] n := [[Sum]](x&amp;lt;&amp;gt;Null, I);&lt;br /&gt;
  [[Local]] S := [[Sum]]( (2*@I-1)/n * ([[Ln]](F(xs)) + [[Ln]](1-F([[Reverse]](xs,I)))), I );&lt;br /&gt;
  -n - S&lt;br /&gt;
&lt;br /&gt;
The distance from your data to the hypothesized distribution is given by:&lt;br /&gt;
:Variable A2 := &amp;lt;code&amp;gt;AD_dist( X, I, F )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Computing the p-value ==&lt;br /&gt;
To compute the p-value by Monte Carlo simulation, create a chance variable that samples from the hypothesized distribution. For example, if the null hypothesis is that the data comes from a &amp;lt;code&amp;gt;[[Normal]](10,2)&amp;lt;/code&amp;gt; distribution, then your chance variable will be defined as:&lt;br /&gt;
&lt;br /&gt;
:Chance Xr := &amp;lt;code&amp;gt;[[Normal]]( 10, 2 )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use two more variables as follows:&lt;br /&gt;
:Variable Sim_AD_dist_given_H0 := &amp;lt;code&amp;gt;AD_dist( Xr, I, F )&amp;lt;/code&amp;gt;&lt;br /&gt;
:Variable p_value := &amp;lt;code&amp;gt;Probability( Sim_AD_dist_given_H0 &amp;gt; A2 )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
This approach generalizes to any hypothesis test. &lt;br /&gt;
&lt;br /&gt;
The computed p-value has some sampling error due to the fact that it is approximated using Monte Carlo sampling. You can reduce this error by increasing the [[Uncertainty Setup dialog|Sample Size]]. A larger sample size takes longer and requires more memory, but is more accurate. However, a default sample size of 1000 is sufficient in almost all cases, especially if you aren't right on the 0.05 threshold.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Kolmogorov-Smirnov Tests]]&lt;br /&gt;
* [[Tutorial_videos#Session_8:_Hypothesis_Testing|Webinar on Hypothesis Testing]]&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Anderson-Darling_test&amp;diff=59053</id>
		<title>Anderson-Darling test</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Anderson-Darling_test&amp;diff=59053"/>
		<updated>2023-03-27T22:37:11Z</updated>

		<summary type="html">&lt;p&gt;Drice: Created page with &amp;quot;The Anderson-Darling test is used to detect whether a set of univariate continuous samples comes from a known distribution. The Kolmogorov-Smirnov Tests are used for the s...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Anderson-Darling test is used to detect whether a set of univariate continuous samples comes from a known distribution. The [[Kolmogorov-Smirnov Tests]] are used for the same thing, but differ in the choice of metric used to measure the distance between distributions. The Anderson-Darling test is more powerful (i.e., more likely to detect a difference in distribution when one exists) in many cases.&lt;br /&gt;
&lt;br /&gt;
However, the Anderson-Darling test does not have a closed-form for the distribution function. Even though the test is distribution-free in theory, in practice, many different critical value tables are compiled for different forms for the null hypothesis distribution. These are usually estimated tables obtained after simulating many examples and then fitting a parametric model to approximate the true values.&lt;br /&gt;
&lt;br /&gt;
Here, instead of assuming any particular distribution, I show how to compute the p-value for ''any'' distribution null hypothesis in Analytica. The trade-off is that this is indeed distribution-free, but requires a Monte Carlo simulation to compute every p-value. &lt;br /&gt;
&lt;br /&gt;
== The test ==&lt;br /&gt;
Given a sample of data, &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt;, indexed by &amp;lt;code&amp;gt;I&amp;lt;/code&amp;gt;, where each cell is a scalar, we ask the question: Was this data sampled from the distribution &amp;lt;code&amp;gt;F&amp;lt;/code&amp;gt;?  To answer this, we compute the p-value, which is the probability of observing an Anderson-Darling distance greater than the measured distance under the assumption that the data was indeed generated by &amp;lt;code&amp;gt;F&amp;lt;/code&amp;gt;.  This assumption is called the ''null hypothesis''. If the computed p-value &amp;lt; 0.05, then we will conclude that there is evidence (i.e., statistically significant evidence) that the data's distribution is not the same as &amp;lt;code&amp;gt;F&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To perform the test, in addition to the data, you need to be able to compute two things:&lt;br /&gt;
* The CDF of the hypothesized distribution at any value &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, written &amp;lt;code&amp;gt;F(x)&amp;lt;/code&amp;gt;.&lt;br /&gt;
* A random sample from the hypothesized distribution.&lt;br /&gt;
&lt;br /&gt;
If you want to test whether the data comes from a &amp;lt;code&amp;gt;[[Normal]](10,2)&amp;lt;/code&amp;gt; distribution, then you'll need these:&lt;br /&gt;
* &amp;lt;code&amp;gt;Function F(x) := CumNormal( x, 10, 2 )&amp;lt;/code&amp;gt;   { To compute the CDF }&lt;br /&gt;
* &amp;lt;code&amp;gt;[[Normal]](10,2)&amp;lt;/code&amp;gt;    { To generate the sample }&lt;br /&gt;
&lt;br /&gt;
== The Anderson-Darling distance ==&lt;br /&gt;
The Anderson-Darling distance is a metric that compares the distance (in distribution) of a sample of points to a known distribution. It is implemented in Analytica as follows:&lt;br /&gt;
&lt;br /&gt;
 Function AD_dist( x : [I] ; I : Index ; F : Function(x) atom )&lt;br /&gt;
'''Definition''':&lt;br /&gt;
  [[Local]] xs := [[Sort]](x,I);&lt;br /&gt;
  [[Local]] n := [[Sum]](x&amp;lt;&amp;gt;Null, I);&lt;br /&gt;
  [[Local]] S := [[Sum]]( (2*@I-1)/n * ([[Ln]](F(xs)) + [[Ln]](1-F([[Reverse]](xs,I)))), I );&lt;br /&gt;
  -n - S&lt;br /&gt;
&lt;br /&gt;
The distance from your data to the hypothesized distribution is given by:&lt;br /&gt;
:Variable A2 := &amp;lt;code&amp;gt;AD_dist( X, I, F )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Computing the p-value ==&lt;br /&gt;
To compute the p-value by Monte Carlo simulation, create a chance variable that samples from the hypothesized distribution. For example, if the null hypothesis is that the data comes from a &amp;lt;code&amp;gt;[[Normal]](10,2)&amp;lt;/code&amp;gt; distribution, then your chance variable will be defined as:&lt;br /&gt;
&lt;br /&gt;
:Chance Xr := &amp;lt;code&amp;gt;[[Normal]]( 10, 2 )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use two more variables as follows:&lt;br /&gt;
:Variable Sim_AD_dist_given_H0 := &amp;lt;code&amp;gt;AD_dist( Xr, I, F )&amp;lt;/code&amp;gt;&lt;br /&gt;
:Variable p_value := &amp;lt;code&amp;gt;Probability( Sim_AD_dist_given_H0 &amp;gt; A2 )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
This approach generalizes to any hypothesis test. &lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Kolmogorov-Smirnov Tests]]&lt;br /&gt;
* [[Tutorial_videos#Session_8:_Hypothesis_Testing|Webinar on Hypothesis Testing]]&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Kolmogorov-Smirnov_Tests&amp;diff=59052</id>
		<title>Kolmogorov-Smirnov Tests</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Kolmogorov-Smirnov_Tests&amp;diff=59052"/>
		<updated>2023-03-27T21:40:54Z</updated>

		<summary type="html">&lt;p&gt;Drice: /* Limitations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Are the data points in a sample drawn from a specific known distribution? For example, are they drawn from a &amp;lt;code&amp;gt;[[Gamma]](3,2)&amp;lt;/code&amp;gt; distribution?  Are the data points in one sample drawn from the same distribution as the data points in a second sample?&lt;br /&gt;
&lt;br /&gt;
The Kolmogorov-Smirnov test(s) can be used to answer either of these questions.&lt;br /&gt;
* The data must be univariate and continuous (i.e., each sample point is a single real number).&lt;br /&gt;
* It works for any continuous distribution -- there is no assumption that the distribution is [[Normal]] or anything else.&lt;br /&gt;
&lt;br /&gt;
The tests return a p-value, which is the probability of seeing as much distance between the two distributions (in the one-sample case, between the sample and the reference) if there is no difference in distribution. A small p-value, say p-value &amp;lt; 0.05, means a difference was detected, with a false-positive rate equal to 0.05. If the p-value &amp;gt; 0.05, you can't conclude that they are the same distribution -- only that the test and amount of data did not provide enough power to detect any difference if one exists.&lt;br /&gt;
&lt;br /&gt;
== Kolmogorov-Smirnov Tests Library ==&lt;br /&gt;
&lt;br /&gt;
'''Download:''' [[media:Kolmogorov-Smirnov Tests Library.ana]]&lt;br /&gt;
&lt;br /&gt;
To use this library, use '''File / Add Library...''' from the File menu after downloading.&lt;br /&gt;
&lt;br /&gt;
This library provides two functions:&lt;br /&gt;
; &amp;lt;code&amp;gt;KS_test_one_dist( x, I, refCdf )&amp;lt;/code&amp;gt;&lt;br /&gt;
: Tests whether the empirical distribution of data «x», which is indexed by «&amp;lt;code&amp;gt;I&amp;lt;/code&amp;gt;», matches a hypothesized distribution whose cumulative probability function is passed as the 3rd parameter.&lt;br /&gt;
; &amp;lt;code&amp;gt;KS_test_two_dist( xi, xj, I, J )&amp;lt;/code&amp;gt;&lt;br /&gt;
:Tests whether the data in «xi» and data in «xj» appear to be from the same distribution.  «xi» is indexed by «&amp;lt;code&amp;gt;I&amp;lt;/code&amp;gt;» and «xj» is indexed by «&amp;lt;code&amp;gt;J&amp;lt;/code&amp;gt;».&lt;br /&gt;
&lt;br /&gt;
Both functions return the p-value.&lt;br /&gt;
;If p-value &amp;lt; 0.05&lt;br /&gt;
:Conclude (with statistical significance 0.05) that the distributions differ.&lt;br /&gt;
;If p-value &amp;gt; 0.05&lt;br /&gt;
:You can't conclude that they have the same or different distributions. Just that there is not enough statistical power in the test, or enough data. to detect a difference in distribution if one exists.&lt;br /&gt;
&lt;br /&gt;
== Using KS_test_one_dist ==&lt;br /&gt;
&lt;br /&gt;
To do a one-sample test, you need to provide a cdf function for your hypothesized distribution. You can do this either by creating a new global [[UDF]], or by using a [[Local functions and local value captures|Local function]].&lt;br /&gt;
&lt;br /&gt;
To test whether the data in &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; is distributed as &amp;lt;code&amp;gt;Gamma( 5.9, 1.65 )&amp;lt;/code&amp;gt;, you can first create a [[UDF]]:&lt;br /&gt;
:&amp;lt;code&amp;gt;Function MyHypothCDF(x) ::= CumGamma( x, 5.9, 1.65)&amp;lt;/code&amp;gt;&lt;br /&gt;
And then pass this to the function using:&lt;br /&gt;
:&amp;lt;code&amp;gt;KS_test_one_dist( x, I, MyHypothCDF )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternately, you can use a local function like this:&lt;br /&gt;
:&amp;lt;code&amp;gt;[[Local functions and local value captures|Function]] hypCdf(x) : CumGamma( x, 5.9, 1.65 );&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;KS_test_one_dist( x, I, hypCdf )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is important to notice that a sole colon is used between the function declaration and its defining expression in the local declaration (i.e., not an assignment operator, &amp;lt;code&amp;gt;:=&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Using KS_test_two_dist ==&lt;br /&gt;
When comparing two data sets, each may have its own index, and each can be a different length. The usage is easy -- just pass each, then pass the index of each:&lt;br /&gt;
:&amp;lt;code&amp;gt;KS_test_two_dist( xi, xj, I, J )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
* The p-value from &amp;lt;code&amp;gt;KS_test_one_dist&amp;lt;/code&amp;gt; is overly weak when you use the data to estimate parameters of your hypothesized distribution. If you do this and still get a p-value &amp;lt; 0.05, you are safe to conclude that the distributions differ, but in general, the p-value will be more conservative than necessary. In that case, other statistical tests will be more powerful.&lt;br /&gt;
* Stronger statistical tests exist for specific distributions.  KS is weaker since it makes no distributional assumption.&lt;br /&gt;
&lt;br /&gt;
There are some things that should be cleaned up in this model.&lt;br /&gt;
* The identifiers that appear in the '''Examples''' module don't have a namespace prefix. Hence, they are at risk for name collisions. (If name collisions occur, you'll see a dialog when you Add the library to your model).&lt;br /&gt;
* You'll get a warning if you open this in a release prior to [[Analytica 6.3]]. You can ignore the warning as long as your release is fairly recent (like 6.x).&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Kolmogorov-Smirnov_Tests&amp;diff=59051</id>
		<title>Kolmogorov-Smirnov Tests</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Kolmogorov-Smirnov_Tests&amp;diff=59051"/>
		<updated>2023-03-27T21:33:03Z</updated>

		<summary type="html">&lt;p&gt;Drice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Are the data points in a sample drawn from a specific known distribution? For example, are they drawn from a &amp;lt;code&amp;gt;[[Gamma]](3,2)&amp;lt;/code&amp;gt; distribution?  Are the data points in one sample drawn from the same distribution as the data points in a second sample?&lt;br /&gt;
&lt;br /&gt;
The Kolmogorov-Smirnov test(s) can be used to answer either of these questions.&lt;br /&gt;
* The data must be univariate and continuous (i.e., each sample point is a single real number).&lt;br /&gt;
* It works for any continuous distribution -- there is no assumption that the distribution is [[Normal]] or anything else.&lt;br /&gt;
&lt;br /&gt;
The tests return a p-value, which is the probability of seeing as much distance between the two distributions (in the one-sample case, between the sample and the reference) if there is no difference in distribution. A small p-value, say p-value &amp;lt; 0.05, means a difference was detected, with a false-positive rate equal to 0.05. If the p-value &amp;gt; 0.05, you can't conclude that they are the same distribution -- only that the test and amount of data did not provide enough power to detect any difference if one exists.&lt;br /&gt;
&lt;br /&gt;
== Kolmogorov-Smirnov Tests Library ==&lt;br /&gt;
&lt;br /&gt;
'''Download:''' [[media:Kolmogorov-Smirnov Tests Library.ana]]&lt;br /&gt;
&lt;br /&gt;
To use this library, use '''File / Add Library...''' from the File menu after downloading.&lt;br /&gt;
&lt;br /&gt;
This library provides two functions:&lt;br /&gt;
; &amp;lt;code&amp;gt;KS_test_one_dist( x, I, refCdf )&amp;lt;/code&amp;gt;&lt;br /&gt;
: Tests whether the empirical distribution of data «x», which is indexed by «&amp;lt;code&amp;gt;I&amp;lt;/code&amp;gt;», matches a hypothesized distribution whose cumulative probability function is passed as the 3rd parameter.&lt;br /&gt;
; &amp;lt;code&amp;gt;KS_test_two_dist( xi, xj, I, J )&amp;lt;/code&amp;gt;&lt;br /&gt;
:Tests whether the data in «xi» and data in «xj» appear to be from the same distribution.  «xi» is indexed by «&amp;lt;code&amp;gt;I&amp;lt;/code&amp;gt;» and «xj» is indexed by «&amp;lt;code&amp;gt;J&amp;lt;/code&amp;gt;».&lt;br /&gt;
&lt;br /&gt;
Both functions return the p-value.&lt;br /&gt;
;If p-value &amp;lt; 0.05&lt;br /&gt;
:Conclude (with statistical significance 0.05) that the distributions differ.&lt;br /&gt;
;If p-value &amp;gt; 0.05&lt;br /&gt;
:You can't conclude that they have the same or different distributions. Just that there is not enough statistical power in the test, or enough data. to detect a difference in distribution if one exists.&lt;br /&gt;
&lt;br /&gt;
== Using KS_test_one_dist ==&lt;br /&gt;
&lt;br /&gt;
To do a one-sample test, you need to provide a cdf function for your hypothesized distribution. You can do this either by creating a new global [[UDF]], or by using a [[Local functions and local value captures|Local function]].&lt;br /&gt;
&lt;br /&gt;
To test whether the data in &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; is distributed as &amp;lt;code&amp;gt;Gamma( 5.9, 1.65 )&amp;lt;/code&amp;gt;, you can first create a [[UDF]]:&lt;br /&gt;
:&amp;lt;code&amp;gt;Function MyHypothCDF(x) ::= CumGamma( x, 5.9, 1.65)&amp;lt;/code&amp;gt;&lt;br /&gt;
And then pass this to the function using:&lt;br /&gt;
:&amp;lt;code&amp;gt;KS_test_one_dist( x, I, MyHypothCDF )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternately, you can use a local function like this:&lt;br /&gt;
:&amp;lt;code&amp;gt;[[Local functions and local value captures|Function]] hypCdf(x) : CumGamma( x, 5.9, 1.65 );&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;KS_test_one_dist( x, I, hypCdf )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is important to notice that a sole colon is used between the function declaration and its defining expression in the local declaration (i.e., not an assignment operator, &amp;lt;code&amp;gt;:=&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Using KS_test_two_dist ==&lt;br /&gt;
When comparing two data sets, each may have its own index, and each can be a different length. The usage is easy -- just pass each, then pass the index of each:&lt;br /&gt;
:&amp;lt;code&amp;gt;KS_test_two_dist( xi, xj, I, J )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
There are some things that should be cleaned up in this model.&lt;br /&gt;
* The identifiers that appear in the '''Examples''' module don't have a namespace prefix. Hence, they are at risk for name collisions. (If name collisions occur, you'll see a dialog when you Add the library to your model).&lt;br /&gt;
* You'll get a warning if you open this in a release prior to [[Analytica 6.3]]. You can ignore the warning as long as your release is fairly recent (like 6.x).&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Kolmogorov-Smirnov_Tests&amp;diff=59050</id>
		<title>Kolmogorov-Smirnov Tests</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Kolmogorov-Smirnov_Tests&amp;diff=59050"/>
		<updated>2023-03-27T21:20:11Z</updated>

		<summary type="html">&lt;p&gt;Drice: Created&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Are the data points in a sample drawn from a specific known distribution? For example, are they drawn from a &amp;lt;code&amp;gt;[[Gamma]](3,2)&amp;lt;/code&amp;gt; distribution?  Are the data points in one sample drawn from the same distribution as the data points in a second sample?&lt;br /&gt;
&lt;br /&gt;
The Kolmogorov-Smirnov test(s) can be used to answer either of these questions.&lt;br /&gt;
* The data must be univariate and continuous (i.e., each sample point is a single real number).&lt;br /&gt;
* It works for any continuous distribution -- there is no assumption that the distribution is [[Normal]] or anything else.&lt;br /&gt;
&lt;br /&gt;
The tests return a p-value, which is the probability of seeing as much distance between the two distributions (in the one-sample case, between the sample and the reference) if there is no difference in distribution. A small p-value, say p-value &amp;lt; 0.05, means a difference was detected, with a false-positive rate equal to 0.05. If the p-value &amp;gt; 0.05, you can't conclude that they are the same distribution -- only that the test and amount of data did not provide enough power to detect any difference if one exists.&lt;br /&gt;
&lt;br /&gt;
== Kolmogorov-Smirnov Tests Library ==&lt;br /&gt;
&lt;br /&gt;
'''Download:''' [[media:Kolmogorov-Smirnov Tests Library.ana]]&lt;br /&gt;
&lt;br /&gt;
This library provides two functions:&lt;br /&gt;
; &amp;lt;code&amp;gt;KS_test_one_dist( x, I, refCdf )&amp;lt;/code&amp;gt;&lt;br /&gt;
: Tests whether the empirical distribution of data «x», which is indexed by «&amp;lt;code&amp;gt;I&amp;lt;/code&amp;gt;», matches a hypothesized distribution whose cumulative probability function is passed as the 3rd parameter.&lt;br /&gt;
; &amp;lt;code&amp;gt;KS_test_two_dist( xi, xj, I, J )&amp;lt;/code&amp;gt;&lt;br /&gt;
:Tests whether the data in «xi» and data in «xj» appear to be from the same distribution.  «xi» is indexed by «&amp;lt;code&amp;gt;I&amp;lt;/code&amp;gt;» and «xj» is indexed by «&amp;lt;code&amp;gt;J&amp;lt;/code&amp;gt;».&lt;br /&gt;
&lt;br /&gt;
Both functions return the p-value.&lt;br /&gt;
;If p-value &amp;lt; 0.05&lt;br /&gt;
:Conclude (with statistical significance 0.05) that the distributions differ.&lt;br /&gt;
;If p-value &amp;gt; 0.05&lt;br /&gt;
:You can't conclude that they have the same or different distributions. Just that there is not enough statistical power in the test, or enough data. to detect a difference in distribution if one exists.&lt;br /&gt;
&lt;br /&gt;
== Using KS_test_one_dist ==&lt;br /&gt;
&lt;br /&gt;
To do a one-sample test, you need to provide a cdf function for your hypothesized distribution. You can do this either by creating a new global [[UDF]], or by using a [[Local functions and local value captures|Local function]].&lt;br /&gt;
&lt;br /&gt;
To test whether the data in &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; is distributed as &amp;lt;code&amp;gt;Gamma( 5.9, 1.65 )&amp;lt;/code&amp;gt;, you can first create a [[UDF]]:&lt;br /&gt;
:&amp;lt;code&amp;gt;Function MyHypothCDF(x) ::= CumGamma( x, 5.9, 1.65)&amp;lt;/code&amp;gt;&lt;br /&gt;
And then pass this to the function using:&lt;br /&gt;
:&amp;lt;code&amp;gt;KS_test_one_dist( x, I, MyHypothCDF )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternately, you can use a local function like this:&lt;br /&gt;
:&amp;lt;code&amp;gt;[[Local functions and local value captures|Function]] hypCdf(x) : CumGamma( x, 5.9, 1.65 );&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;KS_test_one_dist( x, I, hypCdf )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is important to notice that a sole colon is used between the function declaration and its defining expression in the local declaration (i.e., not an assignment operator, &amp;lt;code&amp;gt;:=&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Using KS_test_two_dist ==&lt;br /&gt;
When comparing two data sets, each may have its own index, and each can be a different length. The usage is easy -- just pass each, then pass the index of each:&lt;br /&gt;
:&amp;lt;code&amp;gt;KS_test_two_dist( xi, xj, I, J )&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=File:Kolmogorov-Smirnov_Tests_Library.ana&amp;diff=59049</id>
		<title>File:Kolmogorov-Smirnov Tests Library.ana</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=File:Kolmogorov-Smirnov_Tests_Library.ana&amp;diff=59049"/>
		<updated>2023-03-27T21:07:36Z</updated>

		<summary type="html">&lt;p&gt;Drice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=File:Cash_flow_question.ana&amp;diff=57469</id>
		<title>File:Cash flow question.ana</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=File:Cash_flow_question.ana&amp;diff=57469"/>
		<updated>2022-03-02T19:36:27Z</updated>

		<summary type="html">&lt;p&gt;Drice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Configuring_an_RLM_Server&amp;diff=57166</id>
		<title>Configuring an RLM Server</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Configuring_an_RLM_Server&amp;diff=57166"/>
		<updated>2021-12-01T17:45:59Z</updated>

		<summary type="html">&lt;p&gt;Drice: Changed to activation.analytica.com and refreshed a screenshot&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Analytica installation and licenses]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The [http://www.reprisesoftware.com Reprise License Manager] (RLM) makes it easier to manage and track multiple Analytica and ADE licenses within an organization than having each user manage their own license. If you use Floating licenses (a license shared among multiple users), you require RLM.&lt;br /&gt;
&lt;br /&gt;
This page explains how to install and configure RLM for an IT manager who manages software licenses. Analytica end-users that wish to install the software should see [[How to Install Analytica -- Individual License]] and [[How to Install Analytica -- Centrally Managed License]].&lt;br /&gt;
&lt;br /&gt;
[http://WebinarArchive.Analytica.com/2009-06-04-RLM_Install.wmv This video] shows how to install the RLM server, use the RLM administration console, and activate [http://lumina.com Lumina] codes.&lt;br /&gt;
&lt;br /&gt;
== What you need ==&lt;br /&gt;
;Selecting a computer to run the License Server&lt;br /&gt;
:You'll need to select a server computer that will host the [http://www.reprisesoftware.com Reprise License Manager] (RLM) server.  This server must be on your internal company network, accessible by all the computers in your organization that may need to check out licenses.  &lt;br /&gt;
:'''Note''': RLM must be hosted on a '''physical (non-virtual) server''', and the server must be running a Windows operating system. Licenses will not activate if RLM is hosted on a virtual machine, and Lumina licenses are not honored on Linux (or other non-Windows) installations of RLM.&lt;br /&gt;
:It should also be a server with high availability -- i.e., never turned off.  &lt;br /&gt;
:RLM can serve licenses for software from other vendors that use RLM. &lt;br /&gt;
:Running RLM for Analytica imposes a minimal load on the server, so it certainly need not be dedicated . You can easily use a computer whose primary purpose is for something else.&lt;br /&gt;
:The Server can be nearly any platform supported by Reprise, including Windows or Unix.&lt;br /&gt;
:RLM does support redundant failover servers, but this is seldom required and isn't covered here.&lt;br /&gt;
&lt;br /&gt;
;Generic RLM Server Software&lt;br /&gt;
:If you already run RLM for other applications using RLM 7 or later, you already have what you need. Otherwise, download the end-user bundle from [http://www.reprisesoftware.com/admin/software-licensing.php reprisesoftware.com].  For a windows platform, this is downloaded as a file &amp;lt;code&amp;gt;x86_w1.enduser.zip&amp;lt;/code&amp;gt;. &lt;br /&gt;
:You'll also need the Lumina-specific settings file (right click, select '''Save Target As...''')  [[media:lumina.set|lumina.set]], and save it in your RLM directory.&lt;br /&gt;
&lt;br /&gt;
;Analytica or ADE license(s).  &lt;br /&gt;
:These are provided to you by [http://lumina.com Lumina] when you purchase [[ADE]] or Analytica.&lt;br /&gt;
:They should contain 16 numeric digits, such as: &amp;lt;code&amp;gt;1234-5678-9012-3456&amp;lt;/code&amp;gt;&lt;br /&gt;
:If you have a multi-seat license, then each activation key also has a ''count'' (i.e.''number of seats'') associated with it.  Most commonly, licenses are 1-seat licenses, so if you were not given a count with your activation key, you can assume it is a 1-seat license.&lt;br /&gt;
&lt;br /&gt;
== To Install RLM ==&lt;br /&gt;
These steps are to install RLM on a Windows server -- but it's almost the same on a Unix machine.  For Windows computers, especially Vista, you'll probably need an administrator account.&lt;br /&gt;
&lt;br /&gt;
1. Download the [https://www.reprisesoftware.com/admin/software-licensing-downloads.php RLM License Administration bundle] for Windows.&lt;br /&gt;
&lt;br /&gt;
2. Double click the file and extract it to a directory of your choice, such as:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;C:\Program Files (x86)\Reprise\RlmServer&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:[[File:Extract_screenshot.png]]&lt;br /&gt;
&lt;br /&gt;
3. Copy the [[media:lumina.set|lumina.set]] file to the same directory.&lt;br /&gt;
&lt;br /&gt;
4. (This step is only required starting with RLM v13. Without this step, the '''Activate license''' button won't appear).&lt;br /&gt;
* Run NotePad (or your favorite text editor) as administrator.  You can do this by clicking the Windows start button and typing NotePad. When it appears, right click on it and select ''Run as administrator''&lt;br /&gt;
* Enter the line:  &amp;lt;code&amp;gt;admin::all&amp;lt;/code&amp;gt;&lt;br /&gt;
* Save the file as &amp;lt;code&amp;gt;rlm.pw&amp;lt;/code&amp;gt; in the RLM install folder.&lt;br /&gt;
&lt;br /&gt;
5. Start a command-line window. &lt;br /&gt;
:On Windows Vista and Windows 7, start the command-line window as Administrator:&lt;br /&gt;
# Click on the Start menu on the bottom left.&lt;br /&gt;
# Type in &amp;lt;code&amp;gt;cmd&amp;lt;/code&amp;gt; in the Search box.&lt;br /&gt;
# Press ''Ctrl + Shift + Enter''&lt;br /&gt;
&lt;br /&gt;
6.  Navigate to the chosen directory by typing &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; and then the address of the chosen directory.&lt;br /&gt;
: For example: &amp;lt;code&amp;gt;cd C:\Program Files\Reprise\RlmServer&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. Type &amp;lt;code&amp;gt;rlm -dlog &amp;quot;address&amp;quot; -install_service&amp;lt;/code&amp;gt; where address is the path to the log file. For example:&lt;br /&gt;
:&amp;lt;code&amp;gt;rlm -dlog &amp;quot;c:\Program Files (x86)\Reprise\RlmServer\rlm.log&amp;quot; -install_service&amp;lt;/code&amp;gt;&lt;br /&gt;
:If you are running RLM v14BL5 or later, use&lt;br /&gt;
:&amp;lt;code&amp;gt;rlm -dlog &amp;quot;c:\Program Files (x86)\Reprise\RlmServer\rlm.log&amp;quot; -z -install_service&amp;lt;/code&amp;gt;&lt;br /&gt;
:if you want to allow a blank password in Step 4. Without the -z, you'll have 10 minutes after it starts running to set a password from the console.&lt;br /&gt;
&lt;br /&gt;
* You must include the full path to the log file, without using relative paths.&lt;br /&gt;
* There are additional configuration options, for a listing help type: &amp;lt;code&amp;gt;rlm -?&amp;lt;/code&amp;gt;&lt;br /&gt;
* The local system account (which the RLM service will run under) must have write permissions to the &amp;lt;code&amp;gt;RlmServer&amp;lt;/code&amp;gt; directory, so that it can write activated license files and the log file.&lt;br /&gt;
&lt;br /&gt;
8. Type: &amp;lt;code&amp;gt;net start rlm&amp;lt;/code&amp;gt;&lt;br /&gt;
:The RLM service should now be running.&lt;br /&gt;
&lt;br /&gt;
:[[File:RlmServer_install.png]]&lt;br /&gt;
&lt;br /&gt;
9. Enter the administration panel:&lt;br /&gt;
* Point a browser to [http://localhost:5054 http://localhost:5054].&lt;br /&gt;
* ''Do not use the (now obsolete) Internet Explorer browser.'' The RLM console is not compatible with IE.&lt;br /&gt;
&lt;br /&gt;
10. If you did Step 4 above, a Login will appear at the top left. Enter &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; as the user and leave the password blank.&lt;br /&gt;
* Press [Change Password] and set a password.  Without the -z in Step 7, you need to do this within the first 10 minutes.&lt;br /&gt;
&lt;br /&gt;
11. Install any Analytica or ADE licenses.&lt;br /&gt;
:Lumina should have provided you with Activation keys for your Analytica or [[ADE]]; the keys contain 16 numeric digits, such as &amp;lt;code&amp;gt;1234-5678-9012-3456&amp;lt;/code&amp;gt;&lt;br /&gt;
* Click the '''Activate License''' button&lt;br /&gt;
* Click '''BEGIN License Activation''', then enter these fields:&lt;br /&gt;
** Check ''Other (URL)'' and enter &amp;lt;code&amp;gt;Activation.Analytica.com&amp;lt;/code&amp;gt; into the text-box.&lt;br /&gt;
**:[[Image:ActivationServerUrl.jpg]]&lt;br /&gt;
** ''ISV'': &amp;lt;code&amp;gt;lumina&amp;lt;/code&amp;gt;.&lt;br /&gt;
** ''License activation key'': &amp;lt;code&amp;gt;1234-5678-9012-3456&amp;lt;/code&amp;gt; { Your activation code here }&lt;br /&gt;
**:[[File:ISV_lumina.png]]&lt;br /&gt;
** ''License Server hostid'': { Use the value filled in for you }&lt;br /&gt;
** ''License count'': { The number of seats.  Normally 1. }&lt;br /&gt;
** ''License File to create'': { A &amp;lt;code&amp;gt;*.lic&amp;lt;/code&amp;gt; file in the licenses directory from step 2}&lt;br /&gt;
** Press '''REQUEST LICENSE'''.&lt;br /&gt;
*::If an error occurs, see [[/Solving problems during managed license activation|Solving problems during managed license activation]].&lt;br /&gt;
** When prompted, restart RLM server to reread licenses.&lt;br /&gt;
&lt;br /&gt;
12. Click on '''Status'''&lt;br /&gt;
* Verify that the &amp;lt;code&amp;gt;Lumina ISV&amp;lt;/code&amp;gt; is listed.&lt;br /&gt;
&lt;br /&gt;
13. If you have more than one activation key, repeat steps 9-10 for each.&lt;br /&gt;
&lt;br /&gt;
== Additional Configuration ==&lt;br /&gt;
You, as an IT manager, may want to configure RLM permissions to control who can use the Analytica licenses and who can manage the RLM server.  On the bottom left of the RLM Administration Console, there is a link to the '''RLM Manual...'''  &lt;br /&gt;
&lt;br /&gt;
To control access to the RLM server, and administration of its capabilities, see the section on '''RLM Options File'''.   Among the access control settings you can configure are these (copied from that manual):&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Privilege         &lt;br /&gt;
!Name to use in RLM options file             &lt;br /&gt;
!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|edit_options||edit_options||Allows editing options files for ISV servers&lt;br /&gt;
|-&lt;br /&gt;
|edit_rlm_options||edit_rlm_options||Allows editing options files for the rlm server&lt;br /&gt;
|-&lt;br /&gt;
|edit_transfer||edit_transfer||Allows editing server-server license transfer settings for ISV servers&lt;br /&gt;
|-&lt;br /&gt;
|reread||reread||Allows access to the functions which do reread commands on license servers&lt;br /&gt;
|-&lt;br /&gt;
|shutdown||shutdown||Allows access to the functions which shut down license servers&lt;br /&gt;
|-&lt;br /&gt;
|status||status||Allows display of status and debug log information from the license servers&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
You may also want to restrict which users can checkout licenses, for example, restricting usage to specific users in your department.  For that, see the section '''The ISV Options File''' in the '''RLM Manual'''.  Also consult that section for information on assigning named-user licenses to specific users.&lt;br /&gt;
&lt;br /&gt;
== See Also == &lt;br /&gt;
* [[Installation and licenses]]&lt;br /&gt;
* [[What License do I Purchase?]]&lt;br /&gt;
* [[How to Install Analytica -- Individual License]]&lt;br /&gt;
* [[How to Install Analytica -- Centrally Managed License]]&lt;br /&gt;
* [[License Roaming]]&lt;br /&gt;
* [http://www.reprisesoftware.com Reprise License Manager]&lt;br /&gt;
* [http://WebinarArchive.Analytica.com//2009-06-04-RLM_Install.wmv RLM_Install.wmv]: Video - installing RLM and Activating centrally managed Analytica licenses (22 minutes)&lt;br /&gt;
* [[Configuring an RLM Server/Solving problems during managed license activation|Solving problems during managed license activation]]&lt;br /&gt;
* [[Configuring an RLM Server/Debugging problems with RLM]]&lt;br /&gt;
* [http://www.reprisesoftware.com/admin/software-licensing.php RLM for License Administrators and Users] -- info, downloads, FAQs and troubleshooting tips from Reprise&lt;br /&gt;
* [http://lumina.com/ana/manualActivation.htm Manual Activation]&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Configuring_an_RLM_Server&amp;diff=57165</id>
		<title>Configuring an RLM Server</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Configuring_an_RLM_Server&amp;diff=57165"/>
		<updated>2021-12-01T17:44:37Z</updated>

		<summary type="html">&lt;p&gt;Drice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Analytica installation and licenses]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The [http://www.reprisesoftware.com Reprise License Manager] (RLM) makes it easier to manage and track multiple Analytica and ADE licenses within an organization than having each user manage their own license. If you use Floating licenses (a license shared among multiple users), you require RLM.&lt;br /&gt;
&lt;br /&gt;
This page explains how to install and configure RLM for an IT manager who manages software licenses. Analytica end-users that wish to install the software should see [[How to Install Analytica -- Individual License]] and [[How to Install Analytica -- Centrally Managed License]].&lt;br /&gt;
&lt;br /&gt;
[http://WebinarArchive.Analytica.com/2009-06-04-RLM_Install.wmv This video] shows how to install the RLM server, use the RLM administration console, and activate [http://lumina.com Lumina] codes.&lt;br /&gt;
&lt;br /&gt;
== What you need ==&lt;br /&gt;
;Selecting a computer to run the License Server&lt;br /&gt;
:You'll need to select a server computer that will host the [http://www.reprisesoftware.com Reprise License Manager] (RLM) server.  This server must be on your internal company network, accessible by all the computers in your organization that may need to check out licenses.  &lt;br /&gt;
:'''Note''': RLM must be hosted on a '''physical (non-virtual) server''', and the server must be running a Windows operating system. Licenses will not activate if RLM is hosted on a virtual machine, and Lumina licenses are not honored on Linux (or other non-Windows) installations of RLM.&lt;br /&gt;
:It should also be a server with high availability -- i.e., never turned off.  &lt;br /&gt;
:RLM can serve licenses for software from other vendors that use RLM. &lt;br /&gt;
:Running RLM for Analytica imposes a minimal load on the server, so it certainly need not be dedicated . You can easily use a computer whose primary purpose is for something else.&lt;br /&gt;
:The Server can be nearly any platform supported by Reprise, including Windows or Unix.&lt;br /&gt;
:RLM does support redundant failover servers, but this is seldom required and isn't covered here.&lt;br /&gt;
&lt;br /&gt;
;Generic RLM Server Software&lt;br /&gt;
:If you already run RLM for other applications using RLM 7 or later, you already have what you need. Otherwise, download the end-user bundle from [http://www.reprisesoftware.com/admin/software-licensing.php reprisesoftware.com].  For a windows platform, this is downloaded as a file &amp;lt;code&amp;gt;x86_w1.enduser.zip&amp;lt;/code&amp;gt;. &lt;br /&gt;
:You'll also need the Lumina-specific settings file (right click, select '''Save Target As...''')  [[media:lumina.set|lumina.set]], and save it in your RLM directory.&lt;br /&gt;
&lt;br /&gt;
;Analytica or ADE license(s).  &lt;br /&gt;
:These are provided to you by [http://lumina.com Lumina] when you purchase [[ADE]] or Analytica.&lt;br /&gt;
:They should contain 16 numeric digits, such as: &amp;lt;code&amp;gt;1234-5678-9012-3456&amp;lt;/code&amp;gt;&lt;br /&gt;
:If you have a multi-seat license, then each activation key also has a ''count'' (i.e.''number of seats'') associated with it.  Most commonly, licenses are 1-seat licenses, so if you were not given a count with your activation key, you can assume it is a 1-seat license.&lt;br /&gt;
&lt;br /&gt;
== To Install RLM ==&lt;br /&gt;
These steps are to install RLM on a Windows server -- but it's almost the same on a Unix machine.  For Windows computers, especially Vista, you'll probably need an administrator account.&lt;br /&gt;
&lt;br /&gt;
1. Download the [https://www.reprisesoftware.com/admin/software-licensing-downloads.php RLM License Administration bundle] for Windows.&lt;br /&gt;
&lt;br /&gt;
2. Double click the file and extract it to a directory of your choice, such as:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;C:\Program Files (x86)\Reprise\RlmServer&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:[[File:Extract_screenshot.png]]&lt;br /&gt;
&lt;br /&gt;
3. Copy the [[media:lumina.set|lumina.set]] file to the same directory.&lt;br /&gt;
&lt;br /&gt;
4. (This step is only required starting with RLM v13. Without this step, the '''Activate license''' button won't appear).&lt;br /&gt;
* Run NotePad (or your favorite text editor) as administrator.  You can do this by clicking the Windows start button and typing NotePad. When it appears, right click on it and select ''Run as administrator''&lt;br /&gt;
* Enter the line:  &amp;lt;code&amp;gt;admin::all&amp;lt;/code&amp;gt;&lt;br /&gt;
* Save the file as &amp;lt;code&amp;gt;rlm.pw&amp;lt;/code&amp;gt; in the RLM install folder.&lt;br /&gt;
&lt;br /&gt;
5. Start a command-line window. &lt;br /&gt;
:On Windows Vista and Windows 7, start the command-line window as Administrator:&lt;br /&gt;
# Click on the Start menu on the bottom left.&lt;br /&gt;
# Type in &amp;lt;code&amp;gt;cmd&amp;lt;/code&amp;gt; in the Search box.&lt;br /&gt;
# Press ''Ctrl + Shift + Enter''&lt;br /&gt;
&lt;br /&gt;
6.  Navigate to the chosen directory by typing &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; and then the address of the chosen directory.&lt;br /&gt;
: For example: &amp;lt;code&amp;gt;cd C:\Program Files\Reprise\RlmServer&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. Type &amp;lt;code&amp;gt;rlm -dlog &amp;quot;address&amp;quot; -install_service&amp;lt;/code&amp;gt; where address is the path to the log file. For example:&lt;br /&gt;
:&amp;lt;code&amp;gt;rlm -dlog &amp;quot;c:\Program Files (x86)\Reprise\RlmServer\rlm.log&amp;quot; -install_service&amp;lt;/code&amp;gt;&lt;br /&gt;
:If you are running RLM v14BL5 or later, use&lt;br /&gt;
:&amp;lt;code&amp;gt;rlm -dlog &amp;quot;c:\Program Files (x86)\Reprise\RlmServer\rlm.log&amp;quot; -z -install_service&amp;lt;/code&amp;gt;&lt;br /&gt;
:if you want to allow a blank password in Step 4. Without the -z, you'll have 10 minutes after it starts running to set a password from the console.&lt;br /&gt;
&lt;br /&gt;
* You must include the full path to the log file, without using relative paths.&lt;br /&gt;
* There are additional configuration options, for a listing help type: &amp;lt;code&amp;gt;rlm -?&amp;lt;/code&amp;gt;&lt;br /&gt;
* The local system account (which the RLM service will run under) must have write permissions to the &amp;lt;code&amp;gt;RlmServer&amp;lt;/code&amp;gt; directory, so that it can write activated license files and the log file.&lt;br /&gt;
&lt;br /&gt;
8. Type: &amp;lt;code&amp;gt;net start rlm&amp;lt;/code&amp;gt;&lt;br /&gt;
:The RLM service should now be running.&lt;br /&gt;
&lt;br /&gt;
:[[File:RlmServer_install.png]]&lt;br /&gt;
&lt;br /&gt;
9. Enter the administration panel:&lt;br /&gt;
* Point a browser to [http://localhost:5054 http://localhost:5054].&lt;br /&gt;
* ''Do not use the (now obsolete) Internet Explorer browser.'' The RLM console is not compatible with IE.&lt;br /&gt;
&lt;br /&gt;
10. If you did Step 4 above, a Login will appear at the top left. Enter &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt; as the user and leave the password blank.&lt;br /&gt;
* Press [Change Password] and set a password.  Without the -z in Step 7, you need to do this within the first 10 minutes.&lt;br /&gt;
&lt;br /&gt;
11. Install any Analytica or ADE licenses.&lt;br /&gt;
:Lumina should have provided you with Activation keys for your Analytica or [[ADE]]; the keys contain 16 numeric digits, such as &amp;lt;code&amp;gt;1234-5678-9012-3456&amp;lt;/code&amp;gt;&lt;br /&gt;
* Click the '''Activate License''' button&lt;br /&gt;
* Click '''BEGIN License Activation''', then enter these fields:&lt;br /&gt;
** Check ''Other (URL)'' and enter &amp;lt;code&amp;gt;AnalyticaOnline.com&amp;lt;/code&amp;gt; into the text-box.&lt;br /&gt;
**:[[Image:ActivationServerUrl.jpg]]&lt;br /&gt;
** ''ISV'': &amp;lt;code&amp;gt;lumina&amp;lt;/code&amp;gt;.&lt;br /&gt;
** ''License activation key'': &amp;lt;code&amp;gt;1234-5678-9012-3456&amp;lt;/code&amp;gt; { Your activation code here }&lt;br /&gt;
**:[[File:ISV_lumina.png]]&lt;br /&gt;
** ''License Server hostid'': { Use the value filled in for you }&lt;br /&gt;
** ''License count'': { The number of seats.  Normally 1. }&lt;br /&gt;
** ''License File to create'': { A &amp;lt;code&amp;gt;*.lic&amp;lt;/code&amp;gt; file in the licenses directory from step 2}&lt;br /&gt;
** Press '''REQUEST LICENSE'''.&lt;br /&gt;
*::If an error occurs, see [[/Solving problems during managed license activation|Solving problems during managed license activation]].&lt;br /&gt;
** When prompted, restart RLM server to reread licenses.&lt;br /&gt;
&lt;br /&gt;
12. Click on '''Status'''&lt;br /&gt;
* Verify that the &amp;lt;code&amp;gt;Lumina ISV&amp;lt;/code&amp;gt; is listed.&lt;br /&gt;
&lt;br /&gt;
13. If you have more than one activation key, repeat steps 9-10 for each.&lt;br /&gt;
&lt;br /&gt;
== Additional Configuration ==&lt;br /&gt;
You, as an IT manager, may want to configure RLM permissions to control who can use the Analytica licenses and who can manage the RLM server.  On the bottom left of the RLM Administration Console, there is a link to the '''RLM Manual...'''  &lt;br /&gt;
&lt;br /&gt;
To control access to the RLM server, and administration of its capabilities, see the section on '''RLM Options File'''.   Among the access control settings you can configure are these (copied from that manual):&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Privilege         &lt;br /&gt;
!Name to use in RLM options file             &lt;br /&gt;
!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|edit_options||edit_options||Allows editing options files for ISV servers&lt;br /&gt;
|-&lt;br /&gt;
|edit_rlm_options||edit_rlm_options||Allows editing options files for the rlm server&lt;br /&gt;
|-&lt;br /&gt;
|edit_transfer||edit_transfer||Allows editing server-server license transfer settings for ISV servers&lt;br /&gt;
|-&lt;br /&gt;
|reread||reread||Allows access to the functions which do reread commands on license servers&lt;br /&gt;
|-&lt;br /&gt;
|shutdown||shutdown||Allows access to the functions which shut down license servers&lt;br /&gt;
|-&lt;br /&gt;
|status||status||Allows display of status and debug log information from the license servers&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
You may also want to restrict which users can checkout licenses, for example, restricting usage to specific users in your department.  For that, see the section '''The ISV Options File''' in the '''RLM Manual'''.  Also consult that section for information on assigning named-user licenses to specific users.&lt;br /&gt;
&lt;br /&gt;
== See Also == &lt;br /&gt;
* [[Installation and licenses]]&lt;br /&gt;
* [[What License do I Purchase?]]&lt;br /&gt;
* [[How to Install Analytica -- Individual License]]&lt;br /&gt;
* [[How to Install Analytica -- Centrally Managed License]]&lt;br /&gt;
* [[License Roaming]]&lt;br /&gt;
* [http://www.reprisesoftware.com Reprise License Manager]&lt;br /&gt;
* [http://WebinarArchive.Analytica.com//2009-06-04-RLM_Install.wmv RLM_Install.wmv]: Video - installing RLM and Activating centrally managed Analytica licenses (22 minutes)&lt;br /&gt;
* [[Configuring an RLM Server/Solving problems during managed license activation|Solving problems during managed license activation]]&lt;br /&gt;
* [[Configuring an RLM Server/Debugging problems with RLM]]&lt;br /&gt;
* [http://www.reprisesoftware.com/admin/software-licensing.php RLM for License Administrators and Users] -- info, downloads, FAQs and troubleshooting tips from Reprise&lt;br /&gt;
* [http://lumina.com/ana/manualActivation.htm Manual Activation]&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=File:ActivationServerUrl.jpg&amp;diff=57164</id>
		<title>File:ActivationServerUrl.jpg</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=File:ActivationServerUrl.jpg&amp;diff=57164"/>
		<updated>2021-12-01T17:42:35Z</updated>

		<summary type="html">&lt;p&gt;Drice: Drice uploaded a new version of File:ActivationServerUrl.jpg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=What%27s_new_in_Analytica_6.0%3F&amp;diff=56901</id>
		<title>What's new in Analytica 6.0?</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=What%27s_new_in_Analytica_6.0%3F&amp;diff=56901"/>
		<updated>2021-10-12T18:36:29Z</updated>

		<summary type="html">&lt;p&gt;Drice: /* Number format and Cell-level formats */ link to post on User Forum&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Here's a summary of notable enhancements to Analytica and ADE release 6.0 since the previous [[Analytica 5.4]] release. We don't include numerous bug fixes and minor enhancements, which of course improve the user experience is subtle ways. &lt;br /&gt;
&lt;br /&gt;
To get Analytica or ADE 6.0, go to the [https://analytica.com/support-2/analytica-downloads/ Analytica Downloads] page.&lt;br /&gt;
--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
This page list the  enhancements that are new to Analytica 6.0 since [[Analytica 5.4]]. Analytica 6.0 is currently in beta, so that [[Analytica 5.4]] is still the current official release.  If you have an Analytica subscription, you can use or test drive Analytica 6.0 beta. For information on how, visit the [[Beta Tester Page]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[image:System dynamics diagram with curved arrows.png|600px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Diagrams =&lt;br /&gt;
== Arrows ==&lt;br /&gt;
You can now modify arrows to have multiple line segments or curves, very handy when you want to avoid arrows crossing other arrows or nodes. You can also set arrows' thickness, linestyle and colors. &lt;br /&gt;
&lt;br /&gt;
=== Bends and Curves ===&lt;br /&gt;
Here's how to add segments or spline curves to an arrow:&lt;br /&gt;
* Click a straight arrow to select it (in Edit mode). It will show a square and round handles in the middle of the arrow.&lt;br /&gt;
* For two straight line segments, drag the square handle.&lt;br /&gt;
* For a curved arrow, drag the round handle.&lt;br /&gt;
&lt;br /&gt;
To modify a segmented or curved arrow, click to select it and then:&lt;br /&gt;
* To move the waypoints (dark circles or squares), just drag them.&lt;br /&gt;
* To add more lines or curves, drag a new midpoints handle (open circle or square). &lt;br /&gt;
&lt;br /&gt;
=== Arrow menu styles ===&lt;br /&gt;
For more options, right-click on a multi-segment arrow to see the arrow menu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[image:Arrow menu.png|500px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
* Select '''Curved''' on the context menu to toggle between curved and straight segments.&lt;br /&gt;
* Select '''Remove way point''' to remove a segment.&lt;br /&gt;
* Select '''Remove all way points''' to restore a simple straight arrow.&lt;br /&gt;
* Select '''Dash style''' to change line style t o solid, dashes, dots, dash-dot, or Dash-dot-dot.&lt;br /&gt;
* Select '''Thickness''' to make the arrow thicker or thinner.&lt;br /&gt;
* Select '''double line''&lt;br /&gt;
&amp;lt;!-- * Change either end cap (no anchor, an arrow, square, diamond or circle).--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Colors and line formats ===&lt;br /&gt;
* To change the arrow color, click the arrow to select it, and click a color from the [[Color palette]].&lt;br /&gt;
&lt;br /&gt;
=== Showing and hiding arrows ===&lt;br /&gt;
As before, you can use the [[Diagram Style dialog]] to control whether to show arrows to and from indexes and functions (off by default) or modules (on by default) or use the [[Node Style dialog]] to control whether to show inputs and outputs to a node. Now, you can now show or hide individual arrows using the Arrow menu:&lt;br /&gt;
* Select &amp;quot;'Hide arrow''' to hide an arrow entirely that would otherwise show.&lt;br /&gt;
* Or '''Show arrow''' to show a hidden arrow (but first you'll have to click around to find the arrow and right-click menu:-).&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Analytica's default rules for when to show arrows typically depicts a dependency only once in a given diagram. For example, if you have alias nodes in the same diagram as the original variables, a redundant arrow does not appear between the aliases. It also hides arrows involving Index and Function objects when the Diagram Style preferences have arrows between functions and indexes turned off. You can now show an individual arrow that would not normally be shown as a result of these rules by drawing the arrow between the two objects (e.g., between the 2 alias nodes).&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rounded corners ==&lt;br /&gt;
The borders of Text nodes, Frame nodes, Pictures, and User Inputs and Outputs (when shown) , were formerly rectangles with sharp corners.  They are now have rounded corners for a more modern, less formal, look.&lt;br /&gt;
* There isn't a user interfacee to change the rounding radius for these node types. But you can do it in the [[Typescript]]. For example, if you prefer the old-fashioned rectangle view for all Text nodes, set the 18th field of &amp;lt;code&amp;gt;[[NodeInfo]] of Text&amp;lt;/code&amp;gt; to 0 (instead of the default 12).  The last 0 is the corner radius:&lt;br /&gt;
:&amp;lt;code&amp;gt;NodeInfo of Text:1,0,0,,0,0,,,,,,,0,,,,,0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Proactive calculation of outputs ==&lt;br /&gt;
&lt;br /&gt;
Normally, Analytica computes variables only when you ask to view a result value.  And when you change an input, any user output influenced by the input reverts to the  '''[calc]''' button. So you need to click any results that depend on the input again to recompute them.  In some cases, especially with ACP, it's more user-friendly to have result tables and graphs compute and appear  automatically when you view a Diagram (or ACP Tab).  A new library &amp;lt;code&amp;gt;&amp;quot;Configure Proactive User Outputs&amp;quot;&amp;lt;/code&amp;gt; lets you easily configure your UI's proactive evaluation behavior.  &lt;br /&gt;
*:[[image:Configure proactive configuration.png]]&lt;br /&gt;
&lt;br /&gt;
See [[Proactive Evaluation]] for details.&lt;br /&gt;
&lt;br /&gt;
== Larger default node size ==&lt;br /&gt;
* The default node size for new models has been increased from 96x48 to 128x48 pixels.&lt;br /&gt;
:Note: You can still modify the default node size from the [[Diagram Style dialog]].&lt;br /&gt;
&lt;br /&gt;
= Graphs =&lt;br /&gt;
&lt;br /&gt;
== Custom graph titles==&lt;br /&gt;
*You can now include the title of the graph on the graph image itself, above the grid. To include the title, check the '''Graph title''' check box in Graph setup / Text.&lt;br /&gt;
* From there you can select the font, size and color for the title.&lt;br /&gt;
* You can customize the title, making it different from the variable's own title. &lt;br /&gt;
** To do this, right-click on the title on the graph and select '''Change graph title'''.  This takes you to the [[Graph title expression attribute]], where you can enter a custom title.&lt;br /&gt;
** The [[Graph title expression attribute]] is an expression, so that you can compute your own title (for example, changing the title based on the uncertainty view or current slicer selections). The locals &amp;lt;code&amp;gt;info&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;roles&amp;lt;/code&amp;gt; that are provided to [[OnGraphDraw]] are also provided to your expression here.&lt;br /&gt;
** If you want a simple (non-computed) title, just make sure your text has quotes around it.&lt;br /&gt;
&lt;br /&gt;
== Dash style role ==&lt;br /&gt;
* Using the new dash style (aka stipple) role and key you can depict some information using line color and different information using the line dash style. &lt;br /&gt;
* To enable this option, enable the checkbox for '''''Separate dash style key''''' in the [[Graph_setup_dialog#Chart_Type_tab|Graph setup dialog]] / Chart type / Line style settings.&lt;br /&gt;
* When enabled, a new '''''Dash style''''' pivot control appears in the result window.&lt;br /&gt;
* This works best for depicting short indexes with no more than 5 items.&lt;br /&gt;
&lt;br /&gt;
== Hiding labels for one axis ==&lt;br /&gt;
* People often find the numeric values for the probability density of a continuous variable to be confusing. So you may prefer to hide the labels for the density axis. &lt;br /&gt;
* You can hide labels for any axis from Graph Setup / Axis Ranges, by checking the ''Hide labels'' checkbox.&lt;br /&gt;
* This setting is associated with the specific graph dimension on the axis at the time you select it, So if you pivot or change view mode, other axes aren't hidden.&lt;br /&gt;
&lt;br /&gt;
== OnGraphClick ==&lt;br /&gt;
A new expression attribute, [[OnGraphClick]] has been added, which is evaluated when you mouse-click on a graph.&lt;br /&gt;
Your code can access information about what was clicked on, and set variables in your model based on what was clicked.&lt;br /&gt;
&lt;br /&gt;
== New Grid options ==&lt;br /&gt;
* There are now 3 new grid options: Solid line mesh (in addition to the former &amp;amp; current default, dotted line mesh), x-axis-only and y-axis-only.&lt;br /&gt;
* The default grid has been changed to solid line mesh.&lt;br /&gt;
* The default grid color has been lightened a little, from 0x9c9c9c to 0xe0e0e0.&lt;br /&gt;
&lt;br /&gt;
== New hover icons ==&lt;br /&gt;
* There are new hover icons to switch an axis to log-scale or back to linear-scale in a single click.&lt;br /&gt;
&lt;br /&gt;
== Computed Axis Title ==&lt;br /&gt;
* It is now possible to compute an axis or key title dynamically when the graph is drawn. An example would be to base the title on which item is selected in one of the slicers for the result.&lt;br /&gt;
* This is enabled by the addition of &amp;quot;Title&amp;quot; to the [[GraphFillerInfo]] index.&lt;br /&gt;
* See [[Using a computed axis title in a graph]] for details and an example.&lt;br /&gt;
&lt;br /&gt;
= Copy/Paste =&lt;br /&gt;
* When you copy/paste from an expression attribute (like a Definition) into another application such as a gmail message, it now preserves the fixed-width font, the indentation of each line, and the syntax colors.&lt;br /&gt;
&lt;br /&gt;
= Filed Modules and Libraries =&lt;br /&gt;
&amp;lt;center&amp;gt;[[image:Missing module and library.png]]&amp;lt;/center&amp;gt;&lt;br /&gt;
It now treats the situation differently when you open a model that uses a filed module or filed library that cannot be found.&lt;br /&gt;
* It keeps a placeholder &amp;quot;Missing module&amp;quot; or &amp;quot;Missing library&amp;quot; object in your model. &lt;br /&gt;
* The Missing module/library looks like a module or library with a big crack through it.&lt;br /&gt;
* You don't experience two extra error messages during the file load when you tell it to skip a filed module, because the node location and size attributes that cause these still apply to the missing module object.&lt;br /&gt;
* If you save your model after not loading a filed module or library, the new scheme doesn't forget that it uses the filed module/library.&lt;br /&gt;
* A hover icon on the missing module placeholder allows you to find and load the file to correct the missing module after the model is loaded.&lt;br /&gt;
&lt;br /&gt;
= Expressions =&lt;br /&gt;
* Added [[Formatted Text Literals]] (a.k.a. F-strings).  For example: &lt;br /&gt;
*:&amp;lt;code&amp;gt;F&amp;quot;Golden ratio={(1+sqrt(5))/2}&amp;quot;&amp;lt;/code&amp;gt; &amp;amp;rarr; &amp;quot;Golden ratio=1.618&amp;quot;&lt;br /&gt;
* You can now nest comments in curly braces &amp;quot; {} &amp;quot;.  For example, if you have &amp;lt;code&amp;gt;{ start of comment { interior comment } more comment }&amp;lt;/code&amp;gt;, the comment doesn't end until it gets to the second &amp;quot; } &amp;quot;. This makes it easier to temporarily comment out blocks of code that contain comments. Previously, the first } ended the comment. When loading a legacy model with an unbalanced comments, it automatically adds a balancing &amp;quot; } &amp;quot; so that the comment still ends it the same place it doesn't break the model.&lt;br /&gt;
* You can now omit a capture destination in a multiple-return-value assignment operator. This makes a common pattern more convenient and terse. For example, previously a pattern such as this was common:&amp;lt;code&amp;gt;&lt;br /&gt;
:[[Local]] txt;&lt;br /&gt;
:(txt, Filename) := [[ReadTextFile]](&amp;quot;&amp;quot;);&lt;br /&gt;
:txt&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;Filename&amp;lt;/code&amp;gt; is defined as a [[ComputedBy]]. The third line (txt) was already unnecessary, since the result of the assignment is the first parameter value. Now even the [[Local]] declaration is unnecessary, so that the above becomes just&lt;br /&gt;
:&amp;lt;code&amp;gt;( , Filename) := [[ReadTextFile]](&amp;quot;&amp;quot;)&amp;lt;/code&amp;gt;&lt;br /&gt;
The result of the full expression is the first return value, with the second return value assigned to &amp;lt;code&amp;gt;Filename&amp;lt;/code&amp;gt;.&lt;br /&gt;
* You have long been able to select an item in a [[Choice]] control using the assignment operator. For example, &lt;br /&gt;
::&amp;lt;code&amp;gt;Select_fruit := &amp;quot;apple&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
:But, there was not an easy way to select the All option. Now you can select it by assigning the full index value, assigning an ordered list of all the options, or assigning the text &amp;quot;All&amp;quot; or &amp;quot;«All»&amp;quot; (as long as &amp;quot;All&amp;quot; (or &amp;quot;«All»&amp;quot; respectively) is not one of the choice items.  ([[MultiChoice]] does the same, but that's not new to 6.0).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Built-in functions =&lt;br /&gt;
* There is now a sliding window option for [[CumMin]] and [[CumMax]], which uses an O(n) algorithm, and which also handles the «passNull» and «reset» options.&lt;br /&gt;
* You can list multiple arguments when calling [[ConsolePrint]]. They are printed on the same line, with no separation, and without combining the indexes of the parameters.&lt;br /&gt;
* Added an optional «rollover» index to the [[Dispatch]] function, which you can use to rollover unmet demand or unused capacity to the next time period. &lt;br /&gt;
* Added these new items to [[DatePart]].  &amp;lt;code&amp;gt;DatePart( d, 'Date')&amp;lt;/code&amp;gt; returns the date part of a date time (dropping the time part), and &amp;lt;code&amp;gt;DatePart(d, 'Time')&amp;lt;/code&amp;gt; returns the time part (dropping the date part).  Also, &amp;lt;code&amp;gt;[[Mod]](d,1)&amp;lt;/code&amp;gt; now returns a date-time number when d is a date-time number, and is equivalent to &amp;lt;code&amp;gt;DatePart(d,'Time')&amp;lt;/code&amp;gt; (formerly it returned a float).&lt;br /&gt;
* Null values in «x» or «y» to [[CanvasDrawPolygon]] now cause it to start a new, distinct polygon.&lt;br /&gt;
* Added the ''[[:Category:Cell format functions|Cell formatting functions]]'' system library to the definition menu.&lt;br /&gt;
* A collection of [[:category|File system functions]] were added to the [[Analytica Enterprise|Enterprise edition]] (and higher). These functions are: [[FileFullPath]], [[FilePathPart]], [[FileSystemCopy]], [[FileSystemDelete]], [[FileSystemListing]], [[FileSystemMove]], and [[FileSystemNewFolder]].  &lt;br /&gt;
** These functions are ''enabled'' in the [[Analytica Cloud Platform]], and provide secure ways of viewing and manipulating files within your own ACP project.&lt;br /&gt;
** Similar functionality is also possible using previously functions like [[RunConsoleProcess]] or [[COM Integration]]. But for security reasons, these other methods may be disabled when your model runs on our public [https://acp.analytica.com ACP server]. &lt;br /&gt;
** [[FileFullPath]] and [[FilePathPart]] are available in all editions.&lt;br /&gt;
* You can test whether an array has a specific index using the new built-in functions [[HasImplicitDimension]] or [[HasIndex]].&lt;br /&gt;
* There are a few new advanced math functions, including the [[Airy functions]] and [[Bessel Functions|Bessel zero functions]].&lt;br /&gt;
* A bug fix to [[DbQuery]]() and [[DbWrite]]() -- affects mostly [[DbWrite]]. These have a feature that splits queries on double semi-colons, and sends each part as separate queries. For example &lt;br /&gt;
*:&amp;lt;code&amp;gt;INSERT INTO Tab(X) Value(3);;&amp;lt;/code&amp;gt;&lt;br /&gt;
*:&amp;lt;code&amp;gt;INSERT INTO Tab(Y) Value(2)&amp;lt;/code&amp;gt;&lt;br /&gt;
:Gets sent as two separate queries. Some databases won't process sequential statements in the same query, so this feature provides a way around that. All queries are done in the same context, which is also sometimes relevant. A bug was causing it to split on a single semi-colon, which was a problem, especially in complex queries with SQL variables. With this fix, single semi-colons are part of the same query and don't split them into separate queries. Unfortunately, this could break some SQL queries that used a single semi-colon and depended on them being split. SQL statements in this category would almost always be to [[DbWrite]](), and very unlikely to impact queries that read data.&lt;br /&gt;
&lt;br /&gt;
= Batch processing =&lt;br /&gt;
 You can now [[Running a model in a command line workflow|run a model in a batch process]] from a Windows command line or script.  So, you can run Analytica as part of an automated workflow. You were always about to do this using the  [[ADE User Guide|Analytica Decision Engine (ADE)]] product. Now you can do it with Analytica alone.  See [[Running a model in a command line workflow]].&lt;br /&gt;
&lt;br /&gt;
The key additions that enable this capability include:&lt;br /&gt;
* The parameter &amp;lt;code&amp;gt;/eval&amp;lt;/code&amp;gt; to the [[Analytica Command Line]].&lt;br /&gt;
* The [[Bye]] command, lets you automate the exit of an Analytica process.&lt;br /&gt;
* An option to the [[Bye]] command let's you exit without saving (or asking to save) changes to the model if the model has been modified.&lt;br /&gt;
* The command line option &amp;lt;code&amp;gt;/NoSplash&amp;lt;/code&amp;gt; suppresses the splash screen when starting Analytica, which removes some startup delay.&lt;br /&gt;
&lt;br /&gt;
= Example Models &amp;amp; Libraries =&lt;br /&gt;
== Supply Chain ==&lt;br /&gt;
&amp;lt;center&amp;gt;[[image:brewery_supply_chain.png|600px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;quot;Beer Distribution Supply Chain.ana&amp;quot;&amp;lt;/code&amp;gt; model in the Business Examples folder applies probabilistic supply and production disruptions to evaluate which operational decisions can mitigate order fulfillment disruptions.&lt;br /&gt;
 &lt;br /&gt;
== Boolean circuits ==&lt;br /&gt;
&amp;lt;center&amp;gt;[[image:Boolean circuits.png]]&amp;lt;/center&amp;gt;&lt;br /&gt;
This new example model was developed partially by a 7 year-old who was learning about boolean circuits, and enjoyed drawing and simulating his own circuits in Analytica. You can draw your own boolean circuit using AND gates, OR gates and NOT inverter gates, and toggle input bits to see how the 0s and 1s flow through the circuit.  A nice model to teach young kids about boolean circuits and allow them to build their own simple feed-forward circuits.&lt;br /&gt;
== Power law distribution library ==&lt;br /&gt;
The [[Power law distribution]] is implemented in a library that is now included with Analytica. The [[Power law distribution]] is useful in a number of applications, but perhaps even more important is that this library provides an example template that you can follow for adding other distributions to Analytica when you need one that isn't already built-in.&lt;br /&gt;
&lt;br /&gt;
== New ACP Styles Library ==&lt;br /&gt;
The [[ACP Style Library]] has been completely rewritten, and is tailored to the newest [[Analytica Cloud Platform]] release.&lt;br /&gt;
&lt;br /&gt;
== Other distributions  ==&lt;br /&gt;
* Added the function [[Normal_p1_p2]] to the [[:category:Distribution Variations library functions|Distribution Variations Library]].  This function defines a [[Normal distribution]] given any two percentiles.&lt;br /&gt;
&lt;br /&gt;
=Optimizer=&lt;br /&gt;
* When you have an array constraint has both intrinsic and extrinsic indexes, the positions of Null constraints can now appear at different (intrinsic) coordinates in each extrinsic slice. Formerly, it assumed that Null constraints appear at the same coordinates in every extrinsic slice. For example, in &amp;lt;code&amp;gt;If b Then x&amp;lt;y&amp;lt;/code&amp;gt;, where b is an array of booleans, &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; b can now vary along both intrinsic AND extrinsic indexes. Scalar constraints are not sent to the solver engine for positions where &amp;lt;code&amp;gt;b=0&amp;lt;/code&amp;gt; (hence are not counted in your total number of constraints). &lt;br /&gt;
&lt;br /&gt;
= Attributes and Object window =&lt;br /&gt;
* The attribute that used to be titled &amp;quot;Cloud Player Styles&amp;quot; or &amp;quot;AWP Styles&amp;quot; is now &amp;quot;[[AcpStyles Attribute Values|AcpStyles]]&amp;quot;.&lt;br /&gt;
** In the Object window, it has syntax coloring and expression assist.&lt;br /&gt;
* In the [[Object Window]], you can right-click in the row-header column to select which [[Object Window#Selecting Attributes to Display|attributes to display]] or hide for this object. Applies to this object only, and saves you from having to do it globally in the [[Attributes dialog]].&lt;br /&gt;
* The default text for the [[author]] attribute is improved, using your first and last name and organization if possible (as opposed to your window login name). It is able to find this information if you had entered that information in the installer while installing Analytica.  You can also customize your default author signature, which will then be used as your default text when you create new models.  To do this, edit the author attribute (in the [[Object Window]] or [[Attribute pane]]) to be as you wish, then right-click on it to bring up the context menu. Select the new option '''Save author signature'''. Subsequently, the same context menu will also have a '''Use saved author signature''' option.&lt;br /&gt;
* A right-mouse context menu option makes is easier to set (or unset) the &amp;quot;[[Computed_cell_formats#Edit_Tables|apply computed cell formats to edit table]]&amp;quot; flag.&lt;br /&gt;
* When typing an expression, [[Expression Assist]] can now suggest the names of indexes for a local identifier in appropriate contexts when the dimensionality of the local has been declared.&lt;br /&gt;
&lt;br /&gt;
= Number format and Cell-level formats =&lt;br /&gt;
* In a date template, it now accepts capital letters for  D, DD, YY and YYYY, so MM/DD/YYYY can be used as well as MM/dd/yyyy. Formerly it recognized only lower case dd and yyyy.&lt;br /&gt;
* On the [[Cell format dialog]], the text entry options has been moved from the ''Alignment'' tab to its own ''Entry'' tab.&lt;br /&gt;
** The options for Entry are now split into checkboxes for each data type&lt;br /&gt;
** Added data type options for '''Null''' and '''Identifiers''' (handles)&lt;br /&gt;
* The suffix number format displays (and has always done displayed) a G suffix for Giga (&amp;lt;math&amp;gt;10^9&amp;lt;/math&amp;gt;) and a u suffix for micro (&amp;lt;math&amp;gt;10^{-6}&amp;lt;/math&amp;gt;). We added a «GigaOrMuSuffixChars» field to the [[NumberFormat]] attribute (item 18) that gives you a way to use a B suffix for Giga (B=billion in English) and µ for micro (greek letter mu). If you want to change this, at present you'll have to change the [[Sys_DefaultNumberFmt]] system variable from the [[Typescript window]].  To see the exact syntax, and for Library with a UI for configuring this, see [https://lumina.com/community/models-and-application-examples/displaying-b-for-billion-%c2%b5-for-micro/ Displaying B for billion, µ for micro] on the User Forum.&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
* When a window loses focus, its non-active scrollbars now have a more modern appearance.&lt;br /&gt;
* You can now evaluate an expression when [[Links_or_URL_in_model_attributes|a hyperlink]] is clicked. This might be a call to [[ShowWindow]](), for example, to jump to a particular result or diagram, or a button identifier to &amp;quot;press&amp;quot; an existing button.&lt;br /&gt;
* When it generates an identifier from a title, it uses only a single underscore where multiple successive characters in the title are not valid in the identifier. For example, from the title &amp;quot;Taxes &amp;amp; Depreciation&amp;quot;, the automatically generated identifier will now be &amp;lt;code&amp;gt;Taxes_Depreciation&amp;lt;/code&amp;gt; rather than &amp;lt;code&amp;gt;Taxes___Depreciation&amp;lt;/code&amp;gt;. &lt;br /&gt;
* The option '''Run at load time''' has been added to the right-mouse edit-mode context menu for a button. Sets the 32-bit of [[ProactivelyEvaluate]] for the button, causing it to be run when the model is loaded.&lt;br /&gt;
* Faster saving of model file when you save to a remote drive over a VPN connection.&lt;br /&gt;
* Added the system variable [[Sys_WarningsToIgnore]]. &lt;br /&gt;
* Jump to the [https://lumina/community Analytica User Forum] easily from Analytica using the new '''Analytica Q&amp;amp;A forum''' option on the [[Help menu|'''Help''' menu]]. Have questions about Analytica or suggestions?  Ask them there, and answer questions other people ask.&lt;br /&gt;
* Added ''Copy identifier'' to the right-mouse context menu for a node (in the diagram window).&lt;br /&gt;
* Added a '''Server''' combo box to the [[Publish To Cloud dialog]]. Although rare, if you have access to an ACP server other than [https://Acp.analytica.com|Lumina's public ACP server], you can enter your server domain into the combo and then have an easy way to select which server you are publishing to.&lt;br /&gt;
&lt;br /&gt;
== No more 32-bit application and no &amp;quot;64&amp;quot; bit labels ==&lt;br /&gt;
Long ago, most software including Analytica were 32-bit applications. When we produced a 64-bit version, we used the '64-bit' label win many places. Today,  we only produce a 64-bit, the 32-bit version is obsolete. So we've eliminated the &amp;quot;64-bit&amp;quot; from application file names, including:&lt;br /&gt;
* The installer filename is now &amp;lt;code&amp;gt;AnaSetup«ver».exe&amp;lt;/code&amp;gt;, not &amp;lt;code&amp;gt;Ana64Setup«ver».exe&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The executables are now &amp;lt;code&amp;gt;Analytica.exe&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Ade.exe&amp;lt;/code&amp;gt;, not &amp;lt;code&amp;gt;Analytica64.exe&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Ade64.exe&amp;lt;/code&amp;gt;. Similarly, &amp;lt;code&amp;gt;ADEW.DLL&amp;lt;/code&amp;gt; replaces  &amp;lt;code&amp;gt;ADEW64.DLL&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;AnalyticaUpdateCheck.exe&amp;lt;/code&amp;gt; replaces &amp;lt;code&amp;gt;Analytica64UpdateCheck.exe&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Edition names omit &amp;quot;64-bit&amp;quot;. So it now says &amp;quot;Analytica Enterprise&amp;quot; and not &amp;quot;Analytica Enterprise 64-bit&amp;quot;.&lt;br /&gt;
* The user's registry hive is now &amp;lt;code&amp;gt;HKCU/Software/Lumina Decision Systems/Analytica/6.0&amp;lt;/code&amp;gt;, not &amp;lt;code&amp;gt;.../6.0x64&amp;lt;/code&amp;gt;&lt;br /&gt;
* License names omit the 64, e.g., analytica_enterprise_6_2 instead of analytica64_enterprise_6_2&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Smooth_Fractile&amp;diff=56436</id>
		<title>Smooth Fractile</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Smooth_Fractile&amp;diff=56436"/>
		<updated>2021-06-10T00:32:20Z</updated>

		<summary type="html">&lt;p&gt;Drice: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Distribution Functions]]&lt;br /&gt;
[[Category: Distribution Variations library functions]]&lt;br /&gt;
[[Category:Doc Status C]] &amp;lt;!-- For Lumina use, do not change --&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Smooth_Fractile(fract, F) ==&lt;br /&gt;
Given a set of fractiles, this function returns a smooth distribution with tails having the indicated fractiles.  The fractiles to use must be specified in «F», each value being between 0 and 1, and the fractile values must be in «fract».  &lt;br /&gt;
&lt;br /&gt;
Declaration:&lt;br /&gt;
:[[Smooth_Fractile]](fract: Ascending[F]; F: positive ascending Index)&lt;br /&gt;
&lt;br /&gt;
== Library ==&lt;br /&gt;
Distribution Variations library  ([[media:Distribution Variations.ana|Distribution Variations.ana]])&lt;br /&gt;
:Use [[File menu|File]] &amp;amp;rarr; '''Add Library...''' to add this library&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
To specify a distribution having a ''P10'', ''P50'' and ''P90'' of 7, 13, and 15, set:&lt;br /&gt;
:&amp;lt;code&amp;gt;F := [0.1, 0.5, 0.9]&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;fract := [[Table]](F) (7, 13, 15)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and call &lt;br /&gt;
:&amp;lt;code&amp;gt;Smooth_Fractile(fract, F)&amp;lt;/code&amp;gt; &lt;br /&gt;
:[[image:Smooth_fractile_CDF.png]][[image:Smooth_fractile_PDF.png]]&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[media:Distribution Variations.ana | Distribution Variations.ana]]&lt;br /&gt;
* [[Fractiles]]&lt;br /&gt;
* [[Table]]&lt;br /&gt;
* [[Kernel Density Smoothing]]&lt;br /&gt;
* [[Distribution Densities Library]]&lt;br /&gt;
* [[Keelin (MetaLog) distribution]]&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Smooth_Fractile&amp;diff=56435</id>
		<title>Smooth Fractile</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Smooth_Fractile&amp;diff=56435"/>
		<updated>2021-06-10T00:31:17Z</updated>

		<summary type="html">&lt;p&gt;Drice: /* See Also */ -- Keelin distribution&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Distribution Functions]]&lt;br /&gt;
[[Category: Distribution Variations library functions]]&lt;br /&gt;
[[Category:Doc Status C]] &amp;lt;!-- For Lumina use, do not change --&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Smooth_Fractile(fract, F) ==&lt;br /&gt;
Given a set of fractiles, this function returns a smooth distribution with tails having the indicated fractiles.  The fractiles to use must be specified in «F», each value being between 0 and 1, and the fractile values must be in «fract».  &lt;br /&gt;
&lt;br /&gt;
Declaration:&lt;br /&gt;
:[[Smooth_Fractile]](fract: Ascending[F]; F: positive ascending Index)&lt;br /&gt;
&lt;br /&gt;
== Library ==&lt;br /&gt;
Distribution Variations library  ([[media:Distribution Variations.ana|Distribution Variations.ana]])&lt;br /&gt;
:Use [[File menu|File]] &amp;amp;rarr; '''Add Library...''' to add this library&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
To specify a distribution having a ''P10'', ''P50'' and ''P90'' of 7, 13, and 15, set:&lt;br /&gt;
:&amp;lt;code&amp;gt;F := [0.1, 0.5, 0.9]&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;fract := Tabl(F) (7, 13, 15)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and call &lt;br /&gt;
:&amp;lt;code&amp;gt;Smooth_Fractile(fract, F)&amp;lt;/code&amp;gt; &lt;br /&gt;
:[[image:Smooth_fractile_CDF.png]][[image:Smooth_fractile_PDF.png]]&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[media:Distribution Variations.ana | Distribution Variations.ana]]&lt;br /&gt;
* [[Fractiles]]&lt;br /&gt;
* [[Table]]&lt;br /&gt;
* [[Kernel Density Smoothing]]&lt;br /&gt;
* [[Distribution Densities Library]]&lt;br /&gt;
* [[Keelin (MetaLog) distribution]]&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Normal_p1_p2&amp;diff=56434</id>
		<title>Normal p1 p2</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Normal_p1_p2&amp;diff=56434"/>
		<updated>2021-06-10T00:28:34Z</updated>

		<summary type="html">&lt;p&gt;Drice: /* See Also */ UncertainLMH&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:Distribution Variations library functions]]&lt;br /&gt;
&lt;br /&gt;
''New in [[Analytica 6.0]]''&lt;br /&gt;
&lt;br /&gt;
== Normal_p1_p2( q1, q2, p1, p2 ) ==&lt;br /&gt;
&lt;br /&gt;
This distribution function found in the [[:category:Distribution Variations library functions|Distribution Variations library]] defines a [[Normal distribution]] given any two percentile estimates.  «q1» and «q2» are the percentile estimates, and «p1» and «p2» specify which percentiles these are.  It must be that &amp;lt;math&amp;gt;q1&amp;lt;q2&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;p1&amp;lt;p2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
For example, given that the 5% percentile is 5 and the 25% percentile is 8, the distribution is&lt;br /&gt;
:[[Normal_p1_p2]]( 5, 8, 5%, 25% ) &amp;amp;rarr; [[image:Normal_p1_p2_ex1.png]]&lt;br /&gt;
&lt;br /&gt;
As with other distribution functions, you can also use this distribution in the function [[Random]].&lt;br /&gt;
&lt;br /&gt;
== Library==&lt;br /&gt;
&lt;br /&gt;
To use this function,  you must first use '''[[Filed modules and libraries|Add Library]]''' to add the [[:category:Distribution Variations library functions|Distribution Variations Library]] to your model.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Normal distribution]]&lt;br /&gt;
* [[UncertainLMH]]&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Normal_p1_p2&amp;diff=56433</id>
		<title>Normal p1 p2</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Normal_p1_p2&amp;diff=56433"/>
		<updated>2021-06-10T00:27:38Z</updated>

		<summary type="html">&lt;p&gt;Drice: Library&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:Distribution Variations library functions]]&lt;br /&gt;
&lt;br /&gt;
''New in [[Analytica 6.0]]''&lt;br /&gt;
&lt;br /&gt;
== Normal_p1_p2( q1, q2, p1, p2 ) ==&lt;br /&gt;
&lt;br /&gt;
This distribution function found in the [[:category:Distribution Variations library functions|Distribution Variations library]] defines a [[Normal distribution]] given any two percentile estimates.  «q1» and «q2» are the percentile estimates, and «p1» and «p2» specify which percentiles these are.  It must be that &amp;lt;math&amp;gt;q1&amp;lt;q2&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;p1&amp;lt;p2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
For example, given that the 5% percentile is 5 and the 25% percentile is 8, the distribution is&lt;br /&gt;
:[[Normal_p1_p2]]( 5, 8, 5%, 25% ) &amp;amp;rarr; [[image:Normal_p1_p2_ex1.png]]&lt;br /&gt;
&lt;br /&gt;
As with other distribution functions, you can also use this distribution in the function [[Random]].&lt;br /&gt;
&lt;br /&gt;
== Library==&lt;br /&gt;
&lt;br /&gt;
To use this function,  you must first use '''[[Filed modules and libraries|Add Library]]''' to add the [[:category:Distribution Variations library functions|Distribution Variations Library]] to your model.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Normal distribution]]&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Log-normal_distribution&amp;diff=56432</id>
		<title>Log-normal distribution</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Log-normal_distribution&amp;diff=56432"/>
		<updated>2021-06-10T00:25:57Z</updated>

		<summary type="html">&lt;p&gt;Drice: Balanced parens&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:Continuous distributions]]&lt;br /&gt;
[[category:Semi-bounded distributions]]&lt;br /&gt;
[[category:Unimodal distributions]]&lt;br /&gt;
[[Category:Doc Status C]] &amp;lt;!-- For Lumina use, do not change --&amp;gt;&lt;br /&gt;
[[Category:Ana: Status R]]  &amp;lt;!-- For Lumina use, do not change --&amp;gt;&lt;br /&gt;
{{ReleaseBar}}&lt;br /&gt;
&lt;br /&gt;
A [[Log-normal distribution]] is a [[:category:Continuous distributions|continuous distribution]] whose [[Ln|logarithm]] is [[Normal distribution|normally distributed]]. In other words, &amp;lt;code&amp;gt;[[Ln]](x)&amp;lt;/code&amp;gt; has a [[Normal distribution]] when &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; has a log-normal distribution. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;LogNormal(median:3,stddev:2)&amp;lt;/code&amp;gt; &amp;amp;rarr; [[image:LogNormal(median=3,stddev=2).png]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Log-normal distribution]]s are useful for many quantities that are always positive and have long upper tails, such as concentration of a pollutant, or amount of rainfall.  The distribution is [[:category:Semi-bounded distributions|semi-bounded]] (positive-only) and [[:category:Unimodal distributions|unimodal]], and often has a long right tail.&lt;br /&gt;
&lt;br /&gt;
The central limit theorem says that the product of a long series of independent and identically distributed positive random variables converges to a log-normal distribution for any positive, finite-variance distribution.&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
&lt;br /&gt;
The log-normal is specified by specifying any two of the following four parameters.&lt;br /&gt;
; median&lt;br /&gt;
The [[Median]], must be &amp;gt;0.&lt;br /&gt;
; gsdev&lt;br /&gt;
The geometric standard deviation&amp;gt;=1.&lt;br /&gt;
; mean&lt;br /&gt;
The arithmetic [[Mean]], &amp;gt;0&lt;br /&gt;
; stddev&lt;br /&gt;
The arithmetic [[SDeviation|standard deviation]], &amp;gt;=0.&lt;br /&gt;
&lt;br /&gt;
A named-parameter convention is recommended, such as:&lt;br /&gt;
:&amp;lt;code&amp;gt;LogNormal( gsdev:1.5, mean: 4 )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LogNormal(''median, gsdev, mean, stddev, over'') ===&lt;br /&gt;
The distribution function. Use this to specify that a chance variable or uncertain quantity is log-normally distributed. You must specify exactly two of the core parameters. &lt;br /&gt;
&lt;br /&gt;
To create independent and identically distributed log-normal distributions along one or more indexes, specify those indexes using the optional «over» parameter.&lt;br /&gt;
&lt;br /&gt;
Generates a sample with a lognormal distribution given «median» and «gsdev» (geometric standard deviation),  or «mean» and «stddev» (standard deviation).&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;div id=&amp;quot;DensLogNormal&amp;quot;&amp;gt;Dens{{Release||4.6|_}}LogNormal( x'', median, gsdev, mean, stddev'' )&amp;lt;/div&amp;gt; ===&lt;br /&gt;
{{Release||4.6|To use this, you need to add the [[Distribution Densities Library]] to your model. }}&lt;br /&gt;
&lt;br /&gt;
The analytic probability density function. Returns the probability density at «x». Exactly two of the parameters «median», «gsdev», «mean», or «stddev» must be provided.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;div id=&amp;quot;CumLogNormal&amp;quot;&amp;gt;CumLogNormal( x'', median, gsdev, mean, stddev'' )&amp;lt;/div&amp;gt; ===&lt;br /&gt;
{{Release||4.6|To use this, you need to add the [[Distribution Densities Library]] to your model. }}&lt;br /&gt;
&lt;br /&gt;
The analytic cumulative density function. Returns the probability that the outcome is less than or equal to «x».&lt;br /&gt;
&lt;br /&gt;
Exactly two of the parameters «median», «gsdev», «mean», or «stddev» must be provided.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;div id=&amp;quot;CumLogNormalInv&amp;quot;&amp;gt;CumLogNormalInv( p'', median, gsdev, mean, stddev'' )&amp;lt;/div&amp;gt; ===&lt;br /&gt;
{{Release||4.6|To use this, you need to add the [[Distribution Densities Library]] to your model. }}&lt;br /&gt;
&lt;br /&gt;
The inverse cumulative density function (aka quantile function). Returns the «p»&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; fractile/quantile/percentile.&lt;br /&gt;
&lt;br /&gt;
Exactly two of the parameters «median», «gsdev», «mean», or «stddev» must be provided.&lt;br /&gt;
&lt;br /&gt;
== Statistics ==&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
A [[Normal]] distribution is symmetric around its [[mean]]: &lt;br /&gt;
:If &amp;lt;code&amp;gt;x := Normal(mean, sdev)&amp;lt;/code&amp;gt;, then &amp;lt;code&amp;gt;P(x &amp;lt;= mean - sdev) = P(x &amp;gt;= mean + sdev) = .15&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Analogously, a lognormal distribution is ratio-symmetric around its median: &lt;br /&gt;
:If &amp;lt;code&amp;gt;y := LogNormal(median, gsdev)&amp;lt;/code&amp;gt;, then &amp;lt;code&amp;gt;P(y &amp;lt;= median/gsdev) = P(y &amp;gt;= median*gsdev) = .15&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
If you specify no parameters, it defaults to standard lognormal -- i.e. whose natural logarithm is a unit normal, mean 0 and standard deviation 1. &lt;br /&gt;
&lt;br /&gt;
You can actually specify any two of the four parameters, from which it can compute the other two: &lt;br /&gt;
:&amp;lt;code&amp;gt;LogNormal(median: med, gsdev: gs)&amp;lt;/code&amp;gt;  or just &amp;lt;code&amp;gt;LogNormal(med, gs)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;LogNormal(median: med, stddev: sd)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;LogNormal(median: med, mean: mu)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;LogNormal(mean: mu, stddev: s)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;LogNormal(mean: mu, gsdev: gs)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;LogNormal(gsdev: gs, stddev: sd)&amp;lt;/code&amp;gt;&lt;br /&gt;
If you specify more than two parameters, it will give an error.&lt;br /&gt;
&lt;br /&gt;
Like other distributions, you can also give one or more «Over» indexes. These cause it to generate an array of independent lognormal distributions over the specified index(es). For example,&lt;br /&gt;
:&amp;lt;code&amp;gt;LogNormal(m, gsd, Over: i)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Syntax]]:&lt;br /&gt;
:[[LogNormal]](median, gsdev, mean, stddev: Optional Positive; over: ... Optional Atom)&lt;br /&gt;
&lt;br /&gt;
== Parameter Estimation ==&lt;br /&gt;
Suppose &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; contains sampled historical data indexed by &amp;lt;code&amp;gt;I&amp;lt;/code&amp;gt;, and consisting solely of positive values.  To estimate the parameters of the best-fit [[LogNormal]] distribution, the following parameter estimation formulae can be used:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;«median» := Median(X, I)&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;Exp(Mean(Ln(X), I))&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;«gsdev» := Exp(SDeviation(Ln(X), I))&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A more general form, with one extra degree-of-freedom, is the [[LogNormal]] with an offset, i.e.,:&lt;br /&gt;
:&amp;lt;code&amp;gt;LogNormal(median, gsdev) - offset&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The more general form can be adapted to data sets containing negative numbers.  The offset is constrained so that &lt;br /&gt;
:&amp;lt;code&amp;gt;offset &amp;gt; -Min(X, I)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To my knowledge, a closed form formula for offset does not exist, so that finding the optimal value of offset requires a 1-D search or optimization.  However, I have found that the following heuristic estimation formulae comes extremely close to the best-fit parameters with offset:&lt;br /&gt;
:&amp;lt;code&amp;gt;offset := -Min(X, I) + 2*(Median(X, I) - Min(X, I))/Sum(1, I)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;median := Median(X + offset, I)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;gsdev  := Exp(SDeviation(Ln(X + offset), I))&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== From Median and Percentile ===&lt;br /&gt;
Suppose you have a median (m) and 95th percentile estimate (p95). This is enough to uniquely determine the log normal distribution. In this case the «gsdev» is given by &lt;br /&gt;
:&amp;lt;math&amp;gt;\left( {p95 \over m} \right)^{\left({1 \over {\Phi^{-1}(0.95)}}\right)} = \left( {p95 \over m} \right)^{0.6079568319149189}&amp;lt;/math&amp;gt;&lt;br /&gt;
where &amp;lt;math&amp;gt;\Phi^{-1}(p)&amp;lt;/math&amp;gt; is the [[CumNormalInv]] function.   Hence the distribution expression is&lt;br /&gt;
:&amp;lt;code&amp;gt;[[LogNormal]](m, (p95/m)^0.6079568319149189 )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The general form for the &amp;lt;math&amp;gt;p^{th}&amp;lt;/math&amp;gt; percentile, when &amp;lt;math&amp;gt;p&amp;gt;0.5&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; is the percentile estimate, is &lt;br /&gt;
:&amp;lt;code&amp;gt;[[LogNormal]]( m, (q/m)^(1/[[CumNormalInv]](p)) )&amp;lt;/code&amp;gt;&lt;br /&gt;
For &amp;lt;math&amp;gt;p&amp;lt;0.5&amp;lt;/math&amp;gt;, the expression is&lt;br /&gt;
:&amp;lt;code&amp;gt;[[LogNormal]]( m, (m/q)^(1/[[CumNormalInv]](1-p)) )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Normal distribution]]&lt;br /&gt;
* [[Gamma distribution]]  -- similar shaped distribution &lt;br /&gt;
* [[Parametric continuous distributions]]&lt;br /&gt;
* [[Distribution Functions]]&lt;br /&gt;
* [[Distribution Densities Library]]&lt;br /&gt;
* [[Ln]] -- the natural logarithm&lt;br /&gt;
* [[LogTen]]&lt;br /&gt;
* [[Normal_p1_p2]]&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Log-normal_distribution&amp;diff=56431</id>
		<title>Log-normal distribution</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Log-normal_distribution&amp;diff=56431"/>
		<updated>2021-06-10T00:24:30Z</updated>

		<summary type="html">&lt;p&gt;Drice: /* See Also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:Continuous distributions]]&lt;br /&gt;
[[category:Semi-bounded distributions]]&lt;br /&gt;
[[category:Unimodal distributions]]&lt;br /&gt;
[[Category:Doc Status C]] &amp;lt;!-- For Lumina use, do not change --&amp;gt;&lt;br /&gt;
[[Category:Ana: Status R]]  &amp;lt;!-- For Lumina use, do not change --&amp;gt;&lt;br /&gt;
{{ReleaseBar}}&lt;br /&gt;
&lt;br /&gt;
A [[Log-normal distribution]] is a [[:category:Continuous distributions|continuous distribution]] whose [[Ln|logarithm]] is [[Normal distribution|normally distributed]]. In other words, &amp;lt;code&amp;gt;[[Ln]](x)&amp;lt;/code&amp;gt; has a [[Normal distribution]] when &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; has a log-normal distribution. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;LogNormal(median:3,stddev:2)&amp;lt;/code&amp;gt; &amp;amp;rarr; [[image:LogNormal(median=3,stddev=2).png]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Log-normal distribution]]s are useful for many quantities that are always positive and have long upper tails, such as concentration of a pollutant, or amount of rainfall.  The distribution is [[:category:Semi-bounded distributions|semi-bounded]] (positive-only) and [[:category:Unimodal distributions|unimodal]], and often has a long right tail.&lt;br /&gt;
&lt;br /&gt;
The central limit theorem says that the product of a long series of independent and identically distributed positive random variables converges to a log-normal distribution for any positive, finite-variance distribution.&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
&lt;br /&gt;
The log-normal is specified by specifying any two of the following four parameters.&lt;br /&gt;
; median&lt;br /&gt;
The [[Median]], must be &amp;gt;0.&lt;br /&gt;
; gsdev&lt;br /&gt;
The geometric standard deviation&amp;gt;=1.&lt;br /&gt;
; mean&lt;br /&gt;
The arithmetic [[Mean]], &amp;gt;0&lt;br /&gt;
; stddev&lt;br /&gt;
The arithmetic [[SDeviation|standard deviation]], &amp;gt;=0.&lt;br /&gt;
&lt;br /&gt;
A named-parameter convention is recommended, such as:&lt;br /&gt;
:&amp;lt;code&amp;gt;LogNormal( gsdev:1.5, mean: 4 )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LogNormal(''median, gsdev, mean, stddev, over'') ===&lt;br /&gt;
The distribution function. Use this to specify that a chance variable or uncertain quantity is log-normally distributed. You must specify exactly two of the core parameters. &lt;br /&gt;
&lt;br /&gt;
To create independent and identically distributed log-normal distributions along one or more indexes, specify those indexes using the optional «over» parameter.&lt;br /&gt;
&lt;br /&gt;
Generates a sample with a lognormal distribution given «median» and «gsdev» (geometric standard deviation),  or «mean» and «stddev» (standard deviation).&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;div id=&amp;quot;DensLogNormal&amp;quot;&amp;gt;Dens{{Release||4.6|_}}LogNormal( x'', median, gsdev, mean, stddev'' )&amp;lt;/div&amp;gt; ===&lt;br /&gt;
{{Release||4.6|To use this, you need to add the [[Distribution Densities Library]] to your model. }}&lt;br /&gt;
&lt;br /&gt;
The analytic probability density function. Returns the probability density at «x». Exactly two of the parameters «median», «gsdev», «mean», or «stddev» must be provided.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;div id=&amp;quot;CumLogNormal&amp;quot;&amp;gt;CumLogNormal( x'', median, gsdev, mean, stddev'' )&amp;lt;/div&amp;gt; ===&lt;br /&gt;
{{Release||4.6|To use this, you need to add the [[Distribution Densities Library]] to your model. }}&lt;br /&gt;
&lt;br /&gt;
The analytic cumulative density function. Returns the probability that the outcome is less than or equal to «x».&lt;br /&gt;
&lt;br /&gt;
Exactly two of the parameters «median», «gsdev», «mean», or «stddev» must be provided.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;div id=&amp;quot;CumLogNormalInv&amp;quot;&amp;gt;CumLogNormalInv( p'', median, gsdev, mean, stddev'' )&amp;lt;/div&amp;gt; ===&lt;br /&gt;
{{Release||4.6|To use this, you need to add the [[Distribution Densities Library]] to your model. }}&lt;br /&gt;
&lt;br /&gt;
The inverse cumulative density function (aka quantile function). Returns the «p»&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; fractile/quantile/percentile.&lt;br /&gt;
&lt;br /&gt;
Exactly two of the parameters «median», «gsdev», «mean», or «stddev» must be provided.&lt;br /&gt;
&lt;br /&gt;
== Statistics ==&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
A [[Normal]] distribution is symmetric around its [[mean]]: &lt;br /&gt;
:If &amp;lt;code&amp;gt;x := Normal(mean, sdev)&amp;lt;/code&amp;gt;, then &amp;lt;code&amp;gt;P(x &amp;lt;= mean - sdev) = P(x &amp;gt;= mean + sdev) = .15&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Analogously, a lognormal distribution is ratio-symmetric around its median: &lt;br /&gt;
:If &amp;lt;code&amp;gt;y := LogNormal(median, gsdev)&amp;lt;/code&amp;gt;, then &amp;lt;code&amp;gt;P(y &amp;lt;= median/gsdev) = P(y &amp;gt;= median*gsdev) = .15&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
If you specify no parameters, it defaults to standard lognormal -- i.e. whose natural logarithm is a unit normal, mean 0 and standard deviation 1. &lt;br /&gt;
&lt;br /&gt;
You can actually specify any two of the four parameters, from which it can compute the other two: &lt;br /&gt;
:&amp;lt;code&amp;gt;LogNormal(median: med, gsdev: gs)&amp;lt;/code&amp;gt;  or just &amp;lt;code&amp;gt;LogNormal(med, gs)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;LogNormal(median: med, stddev: sd)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;LogNormal(median: med, mean: mu)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;LogNormal(mean: mu, stddev: s)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;LogNormal(mean: mu, gsdev: gs)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;LogNormal(gsdev: gs, stddev: sd)&amp;lt;/code&amp;gt;&lt;br /&gt;
If you specify more than two parameters, it will give an error.&lt;br /&gt;
&lt;br /&gt;
Like other distributions, you can also give one or more «Over» indexes. These cause it to generate an array of independent lognormal distributions over the specified index(es). For example,&lt;br /&gt;
:&amp;lt;code&amp;gt;LogNormal(m, gsd, Over: i)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Syntax]]:&lt;br /&gt;
:[[LogNormal]](median, gsdev, mean, stddev: Optional Positive; over: ... Optional Atom)&lt;br /&gt;
&lt;br /&gt;
== Parameter Estimation ==&lt;br /&gt;
Suppose &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; contains sampled historical data indexed by &amp;lt;code&amp;gt;I&amp;lt;/code&amp;gt;, and consisting solely of positive values.  To estimate the parameters of the best-fit [[LogNormal]] distribution, the following parameter estimation formulae can be used:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;«median» := Median(X, I)&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;Exp(Mean(Ln(X), I))&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;«gsdev» := Exp(SDeviation(Ln(X), I))&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A more general form, with one extra degree-of-freedom, is the [[LogNormal]] with an offset, i.e.,:&lt;br /&gt;
:&amp;lt;code&amp;gt;LogNormal(median, gsdev) - offset&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The more general form can be adapted to data sets containing negative numbers.  The offset is constrained so that &lt;br /&gt;
:&amp;lt;code&amp;gt;offset &amp;gt; -Min(X, I)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To my knowledge, a closed form formula for offset does not exist, so that finding the optimal value of offset requires a 1-D search or optimization.  However, I have found that the following heuristic estimation formulae comes extremely close to the best-fit parameters with offset:&lt;br /&gt;
:&amp;lt;code&amp;gt;offset := -Min(X, I) + 2*(Median(X, I) - Min(X, I))/Sum(1, I)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;median := Median(X + offset, I)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;gsdev  := Exp(SDeviation(Ln(X + offset), I))&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== From Median and Percentile ===&lt;br /&gt;
Suppose you have a median (m) and 95th percentile estimate (p95). This is enough to uniquely determine the log normal distribution. In this case the «gsdev» is given by &lt;br /&gt;
:&amp;lt;math&amp;gt;\left( {p95 \over m} \right)^{\left({1 \over {\Phi^{-1}(0.95)}}\right)} = \left( {p95 \over m} \right)^{0.6079568319149189}&amp;lt;/math&amp;gt;&lt;br /&gt;
where &amp;lt;math&amp;gt;\Phi^{-1}(p)&amp;lt;/math&amp;gt; is the [[CumNormalInv]] function.   Hence the distribution expression is&lt;br /&gt;
:&amp;lt;code&amp;gt;[[LogNormal]](m, (p95/m)^0.6079568319149189 )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The general form for the &amp;lt;math&amp;gt;p^{th}&amp;lt;/math&amp;gt; percentile, when &amp;lt;math&amp;gt;p&amp;gt;0.5&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; is the percentile estimate, is &lt;br /&gt;
:&amp;lt;code&amp;gt;[[LogNormal]]( m, (q/m)^(1/[[CumNormalInv]](p) )&amp;lt;/code&amp;gt;&lt;br /&gt;
For &amp;lt;math&amp;gt;p&amp;lt;0.5&amp;lt;/math&amp;gt;, the expression is&lt;br /&gt;
:&amp;lt;code&amp;gt;[[LogNormal]]( m, (m/q)^(1/[[CumNormalInv]](1-p) )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Normal distribution]]&lt;br /&gt;
* [[Gamma distribution]]  -- similar shaped distribution &lt;br /&gt;
* [[Parametric continuous distributions]]&lt;br /&gt;
* [[Distribution Functions]]&lt;br /&gt;
* [[Distribution Densities Library]]&lt;br /&gt;
* [[Ln]] -- the natural logarithm&lt;br /&gt;
* [[LogTen]]&lt;br /&gt;
* [[Normal_p1_p2]]&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Alphabetical_Function_List&amp;diff=56430</id>
		<title>Alphabetical Function List</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Alphabetical_Function_List&amp;diff=56430"/>
		<updated>2021-06-10T00:22:26Z</updated>

		<summary type="html">&lt;p&gt;Drice: Airy functions, Bessel zeros, Normal_p1_p2, PowerMod, FileSystem*, DownloadFileToClient, HasImplicitDimension, HasIndex&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Functions]]&lt;br /&gt;
(Back to [[Analytica Reference]])&lt;br /&gt;
&lt;br /&gt;
See also [[:Category: Functions]] and [[Functions by category]].&lt;br /&gt;
&lt;br /&gt;
* [[Comparison Operators|=,&amp;lt;,&amp;gt;,&amp;lt;&amp;gt;,&amp;lt;=,&amp;gt;=]] : Comparison operators&lt;br /&gt;
* [[Subscript/Slice Operator| [I=x] ]] : Subscript operator &lt;br /&gt;
* [[Subscript/Slice Operator| [@I=x] ]] : Slice operator &lt;br /&gt;
* [[Using References|\]] : Reference operator&lt;br /&gt;
* [[Dereference Operator|#]] : Dereference operator&lt;br /&gt;
* [[Index Position Operator::@|@]] : Index Position operator&lt;br /&gt;
* [[Assignment Operator:: ::=|:=]] : Assignment operator&lt;br /&gt;
* [[Text Concatenation Operator: &amp;amp;|&amp;amp;]] : Text concatenation operator&lt;br /&gt;
* [[Dot operator::A.I|A.I]] : Dot operator, to access a local index of an array&lt;br /&gt;
* [[Repeated Parameter Forwarding|...]] : Repeated parameter forwarding&lt;br /&gt;
* [[Exponentiation of negative numbers|x^y]] : Exponentiation&lt;br /&gt;
* [[Abs]]&lt;br /&gt;
* [[AddIndex]]&lt;br /&gt;
* [[Aggregate]]&lt;br /&gt;
* [[Airy_Ai]]&lt;br /&gt;
* [[Airy_Ai_deriv]]&lt;br /&gt;
* [[Airy_Ai_zero]]&lt;br /&gt;
* [[Airy_Bi]]&lt;br /&gt;
* [[Airy_Bi_deriv]]&lt;br /&gt;
* [[Airy_Bi_zero]]&lt;br /&gt;
* [[AnalyticaLicenseInfo]]&lt;br /&gt;
* [[And]]&lt;br /&gt;
* [[Apply_slicers_to_val]]                ([[:Category:OnGraphDraw annotations library functions|OnGraphDraw annotations library]])&lt;br /&gt;
* [[ArcCos]]&lt;br /&gt;
* [[ArcCosH]]&lt;br /&gt;
* [[ArcSin]]&lt;br /&gt;
* [[ArcSinH]]&lt;br /&gt;
* [[ArcTan]]&lt;br /&gt;
* [[ArcTan2]]&lt;br /&gt;
* [[ArcTanH]]&lt;br /&gt;
* [[Area]]&lt;br /&gt;
* [[ArgMin_and_ArgMax| Argmax]]&lt;br /&gt;
* [[ArgMin_and_ArgMax| Argmin]]&lt;br /&gt;
* [[Array]]&lt;br /&gt;
* [[Asc]]&lt;br /&gt;
* [[AskMsgChoice]]&lt;br /&gt;
* [[AskMsgNumber]]&lt;br /&gt;
* [[AskMsgText]]&lt;br /&gt;
* [[Assignment Operator:: ::=]] : Assignment operator&lt;br /&gt;
* [[AttribGet]]&lt;br /&gt;
* [[Attrib of Obj]]&lt;br /&gt;
* [[Average]]&lt;br /&gt;
* [[Bernoulli]]&lt;br /&gt;
* [[BesselJ]], [[BesselY]], [[BesselI]], [[BesselK]]&lt;br /&gt;
* [[BesselJzero]], [[BesselYzero]]&lt;br /&gt;
* [[Beta]]&lt;br /&gt;
* [[Beta_m_sd|Beta_m_sd]]    (Distribution variations.ana)&lt;br /&gt;
* [[Betafn]]&lt;br /&gt;
* [[BetaI]]&lt;br /&gt;
* [[BetaIaInv]]&lt;br /&gt;
* [[BetaIInv]]&lt;br /&gt;
* [[Binomial]]&lt;br /&gt;
* [[BiNormal]]     (Multivariate distributions.ana)&lt;br /&gt;
* [[BitAnd]]&lt;br /&gt;
* [[BitCount]]&lt;br /&gt;
* [[BitNot]]&lt;br /&gt;
* [[BitOr]]&lt;br /&gt;
* [[BitShift]]&lt;br /&gt;
* [[BitXOr]]&lt;br /&gt;
* [[Boolean]]&lt;br /&gt;
* [[CAbs]]         (Complex Library.ana)&lt;br /&gt;
* [[CAdjoint]]     (Complex Library.ana)&lt;br /&gt;
* [[Calloption]]   (Financial Library.ana)&lt;br /&gt;
* [[Canvas]]&lt;br /&gt;
* [[CanvasContext]]&lt;br /&gt;
* [[CanvasDrawEllipse]]&lt;br /&gt;
* [[CanvasDrawImage]]&lt;br /&gt;
* [[CanvasDrawLine]]&lt;br /&gt;
* [[CanvasDrawPixel]]&lt;br /&gt;
* [[CanvasDrawPolygon]]&lt;br /&gt;
* [[CanvasDrawRectangle]]&lt;br /&gt;
* [[CanvasDrawText]]&lt;br /&gt;
* [[CanvasImage]]&lt;br /&gt;
* [[Capm]]         (Financial Library.ana)&lt;br /&gt;
* [[CArcCos]]      (Complex Library.ana)&lt;br /&gt;
* [[CArcSin]]      (Complex Library.ana)&lt;br /&gt;
* [[CArcTan]]      (Complex Library.ana)&lt;br /&gt;
* [[CCos]]         (Complex Library.ana)&lt;br /&gt;
* [[CDeterminant]] (Complex Library.ana)&lt;br /&gt;
* [[Cdf]]&lt;br /&gt;
* [[CDiv]]         (Complex Library.ana)&lt;br /&gt;
* [[Ceil]]&lt;br /&gt;
* [[CellAlignment]]&lt;br /&gt;
* [[CellBar]]&lt;br /&gt;
* [[CellBorder]]&lt;br /&gt;
* [[CellDefaults]]&lt;br /&gt;
* [[CellEntry]]&lt;br /&gt;
* [[CellFill]]&lt;br /&gt;
* [[CellFont]]&lt;br /&gt;
* [[CellFormats]]&lt;br /&gt;
* [[CellIcon]]&lt;br /&gt;
* [[CellNumberFormat]]&lt;br /&gt;
* [[CellOnClick]]&lt;br /&gt;
* [[CellSpan]]&lt;br /&gt;
* [[Certain]]&lt;br /&gt;
* [[CExp]]         (Complex Library.ana)&lt;br /&gt;
* [[ChanceDist]]&lt;br /&gt;
* [[ChangeArraySparsity]]&lt;br /&gt;
* [[Change_index]]        (Expand Index.ana)&lt;br /&gt;
* [[ChangeNodeVisibility]]&lt;br /&gt;
* [[ChiSquared]]&lt;br /&gt;
* [[Choice| Choice]]&lt;br /&gt;
* [[CInverse]]     (Complex Library.ana)&lt;br /&gt;
* [[Chr]]&lt;br /&gt;
* [[Clip_to_PlotArea]]                ([[:Category:OnGraphDraw annotations library functions|OnGraphDraw annotations library]])&lt;br /&gt;
* [[CLn]]          (Complex Library.ana)&lt;br /&gt;
* [[CloneObjects]]&lt;br /&gt;
* [[CloseWindow]]&lt;br /&gt;
* [[CMatMult]]     (Complex Library.ana)&lt;br /&gt;
* [[CMult]]        (Complex Library.ana)&lt;br /&gt;
* [[Coerce_to_Numeric]]     (Flat file library.ana)&lt;br /&gt;
* [[COMArray]]&lt;br /&gt;
* [[Combinations]]&lt;br /&gt;
* [[COMCallMethod]]&lt;br /&gt;
* [[COMCreateObject]]&lt;br /&gt;
* [[COMEnumerate]]&lt;br /&gt;
* [[COMGetProperty]]&lt;br /&gt;
* [[Comparison Operators]]: =, &amp;lt;, &amp;gt;, &amp;lt;&amp;gt;, &amp;lt;=, &amp;gt;=&lt;br /&gt;
* [[ComparisonPart]]&lt;br /&gt;
* [[Complex]]      (Complex Library.ana)&lt;br /&gt;
* [[ComplexDegrees]]&lt;br /&gt;
* [[ComplexRadians]]&lt;br /&gt;
* [[CompressMemoryUsedBy]]&lt;br /&gt;
* [[ComputedBy]]&lt;br /&gt;
* [[COMPutProperty]]&lt;br /&gt;
* [[Concat]]&lt;br /&gt;
* [[ConcatN|Concat&amp;lt;N&amp;gt;]]    (Concatenation UDFs.ana&lt;br /&gt;
* [[ConcatRows]]            (Concatenation UDFs.ana)&lt;br /&gt;
* [[ConsolePrint]]&lt;br /&gt;
* [[Functions_Min_and_Max| Condmax]]&lt;br /&gt;
* [[Functions_Min_and_Max| Condmin]]&lt;br /&gt;
* [[ConsolePrint]]&lt;br /&gt;
* [[Continuous]]&lt;br /&gt;
* [[CopyIndex]]&lt;br /&gt;
* [[Correlate_Dists]]     (Multivariate Distributions.ana)&lt;br /&gt;
* [[Correlate_With]]      (Multivariate Distributions.ana)&lt;br /&gt;
* [[Correlation]]&lt;br /&gt;
* [[Trig Functions| Cos]]&lt;br /&gt;
* [[Trig Functions| Cosh]]&lt;br /&gt;
* [[CostCapme]]     (Financial Library.ana)&lt;br /&gt;
* [[CostCapmm]]     (Financial library.ana)&lt;br /&gt;
* [[CreateNewObject]]&lt;br /&gt;
* [[CRoots]]              (Complex Library.ana)&lt;br /&gt;
* [[CSin]]                (Complex Library.ana)&lt;br /&gt;
* [[CSqrt]]               (Complex Library.ana)&lt;br /&gt;
* [[CTan]]                (Complex Library.ana)&lt;br /&gt;
* [[CTheta]]              (Complex Library.ana)&lt;br /&gt;
* [[CToPolar]]            (Complex Library.ana)&lt;br /&gt;
* [[CubicInterp]]&lt;br /&gt;
* [[CumBinomial]]         ([[Distribution Densities Library]])&lt;br /&gt;
* [[CumBinomialInv]]      ([[Distribution Densities Library]])&lt;br /&gt;
* [[CumChiSquared]]       ([[Distribution Densities Library]])&lt;br /&gt;
* [[CumChiSquaredInv]]    ([[Distribution Densities Library]])&lt;br /&gt;
* [[CumDist]]&lt;br /&gt;
* [[CumExponential]]      ([[Distribution Densities Library]])&lt;br /&gt;
* [[CumExponentialInv]]   ([[Distribution Densities Library]])&lt;br /&gt;
* [[CumFDist]]            ([[Distribution Densities Library]])&lt;br /&gt;
* [[CumFDistInv]]         ([[Distribution Densities Library]])&lt;br /&gt;
* [[CumGeometric]]        ([[Distribution Densities Library]])&lt;br /&gt;
* [[CumGeometricInv]]     ([[Distribution Densities Library]])&lt;br /&gt;
* [[CumIPmt]]&lt;br /&gt;
* [[CumKeelin]]&lt;br /&gt;
* [[CumKeelinInv]]&lt;br /&gt;
* [[CumLogistic]]         ([[Distribution Densities Library]])&lt;br /&gt;
* [[CumLogisticInv]]      ([[Distribution Densities Library]])&lt;br /&gt;
* [[CumLogNormal]]        ([[Distribution Densities Library]])&lt;br /&gt;
* [[CumLogNormalInv]]     ([[Distribution Densities Library]])&lt;br /&gt;
* [[CumMax]]&lt;br /&gt;
* [[CumMin]]&lt;br /&gt;
* [[CumNegativeBinomial]] ([[Distribution Densities Library]])&lt;br /&gt;
* [[CumNegativeBinomInv]] ([[Distribution Densities Library]])&lt;br /&gt;
* [[CumNormal]]&lt;br /&gt;
* [[CumNormalInv]]&lt;br /&gt;
* [[CumPoisson]]          ([[Distribution Densities Library]])&lt;br /&gt;
* [[CumPoissonInv]]&lt;br /&gt;
* [[CumPrinc]]&lt;br /&gt;
* [[CumProduct]]&lt;br /&gt;
* [[CumStudentT]]         ([[Distribution Densities Library]])&lt;br /&gt;
* [[CumStudentTInv]]      ([[Distribution Densities Library]])&lt;br /&gt;
* [[CumTriangular]]       ([[Distribution Densities Library]])&lt;br /&gt;
* [[CumTriangularInv]]    ([[Distribution Densities Library]])&lt;br /&gt;
* [[CumUncertainLMH]]&lt;br /&gt;
* [[CumUncertainLMHInv]]&lt;br /&gt;
* [[CumWilcoxon]]&lt;br /&gt;
* [[CumWilcoxonInv]]&lt;br /&gt;
* [[Cumulate]]&lt;br /&gt;
* [[CumUniform]]          ([[Distribution Densities Library]])&lt;br /&gt;
* [[CumUniformInv]]       ([[Distribution Densities Library]])&lt;br /&gt;
* [[CumWeibull]]          ([[Distribution Densities Library]])&lt;br /&gt;
* [[CumWeibullInv]]       ([[Distribution Densities Library]])&lt;br /&gt;
* [[CurrentDataDirectory]]        (''Replaced with [[CurrentDataFolder]] as of [[Analytica 4.6]]'')&lt;br /&gt;
* [[CurrentDataFolder]]&lt;br /&gt;
* [[CurrentModelDirector]]        (''Replaced with [[CurrentDataFolder]] as of [[Analytica 4.6]]'')&lt;br /&gt;
* [[CurrentModelFolder]]&lt;br /&gt;
* [[DateAdd]]&lt;br /&gt;
* [[DatePart]]&lt;br /&gt;
* [[Dawson]]&lt;br /&gt;
* [[DbLabels]]&lt;br /&gt;
* [[DbQuery]]&lt;br /&gt;
* [[DbTable]]&lt;br /&gt;
* [[DbTablenames]]&lt;br /&gt;
* [[DbWrite]]&lt;br /&gt;
* [[Decompose]]&lt;br /&gt;
* [[Degrees]]&lt;br /&gt;
* [[DensBeta]]&lt;br /&gt;
* [[Dens_Beta]]         ([[Distribution Densities Library]])&lt;br /&gt;
* [[DensChiSquared]]&lt;br /&gt;
* [[Dens_ChiSquared]]         ([[Distribution Densities Library]])&lt;br /&gt;
* [[DensCumDist]]&lt;br /&gt;
* [[Dens_CumDist]]         ([[Distribution Densities Library]])&lt;br /&gt;
* [[DensExponential]]&lt;br /&gt;
* [[Dens_Exponential]]         ([[Distribution Densities Library]])&lt;br /&gt;
* [[Dens_FDist]]         ([[Distribution Densities Library]])&lt;br /&gt;
* [[DensGamma]&lt;br /&gt;
* [[Dens_Gamma]]         ([[Distribution Densities Library]])&lt;br /&gt;
* [[DensGaussian]]&lt;br /&gt;
* [[Dens_Gaussian]]         ([[Distribution Densities Library]])&lt;br /&gt;
* [[DensKeelin]]&lt;br /&gt;
* [[DensLogistic]]&lt;br /&gt;
* [[Dens_Logistic]]         ([[Distribution Densities Library]])&lt;br /&gt;
* [[DensLogNormal]]&lt;br /&gt;
* [[Dens_LogNormal]]         ([[Distribution Densities Library]])&lt;br /&gt;
* [[DensNormal]]&lt;br /&gt;
* [[Dens_Normal]]         ([[Distribution Densities Library]])&lt;br /&gt;
* [[DensProbDist]]&lt;br /&gt;
* [[Dens_ProbDist]]         ([[Distribution Densities Library]])&lt;br /&gt;
* [[DensStudentT]]&lt;br /&gt;
* [[Dens_StudentT]]         ([[Distribution Densities Library]])&lt;br /&gt;
* [[DensTriangular]]&lt;br /&gt;
* [[Dens_Triangular]]         ([[Distribution Densities Library]])&lt;br /&gt;
* [[DensUncertainLMH]]&lt;br /&gt;
* [[DensUniform]]&lt;br /&gt;
* [[Dens_Uniform]]         ([[Distribution Densities Library]])&lt;br /&gt;
* [[DensWeibull]]&lt;br /&gt;
* [[Dens_Weibull]]         ([[Distribution Densities Library]])&lt;br /&gt;
* [[Dereference Operator::#|Dereference Operator: #R]] : Return the value pointed to by a reference R.&lt;br /&gt;
* [[Determinant]]&lt;br /&gt;
* [[DetermTable]]&lt;br /&gt;
* [[Dirichlet]]             (Multivariate distributions.ana)&lt;br /&gt;
* [[Discrete]]&lt;br /&gt;
* [[Dispatch]]&lt;br /&gt;
* [[Dist_additive_growth]]  (Multivariate distributions.ana)&lt;br /&gt;
* [[Dist_compound_growth]]  (Multivariate distributions.ana)&lt;br /&gt;
* [[Dist_reshape]]          (Multivariate distributions.ana)&lt;br /&gt;
* [[Dist_serial_correl]]     (Multivariate distributions.ana)&lt;br /&gt;
* [[DomainAllowed]]&lt;br /&gt;
* [[DomainIntegerGroup]]&lt;br /&gt;
* [[DomainLowerBound]]&lt;br /&gt;
* [[DomainNullOk]]&lt;br /&gt;
* [[DomainType]]&lt;br /&gt;
* [[DomainUpperBound]]&lt;br /&gt;
* [[DotProduct]]&lt;br /&gt;
* [[DownloadFileToClient]]&lt;br /&gt;
* [[Dydx]]&lt;br /&gt;
* [[Dynamic]]&lt;br /&gt;
* [[EigenDecomp]]&lt;br /&gt;
* [[Elasticity]]&lt;br /&gt;
* [[Erf]]&lt;br /&gt;
* [[ErfInv]]&lt;br /&gt;
* [[Erlang]]          (Distribution variations.ana)&lt;br /&gt;
* [[Error]]&lt;br /&gt;
* [[Evaluate]]&lt;br /&gt;
* [[EvaluateScript]]&lt;br /&gt;
* [[Exp]]&lt;br /&gt;
* [[Exponential]]&lt;br /&gt;
* [[expr1 ; expr2]] : Expression Sequence Operator&lt;br /&gt;
* [[Factorial]]&lt;br /&gt;
* [[Faddeeva]]&lt;br /&gt;
* [[FFT]]&lt;br /&gt;
* [[FFTInv]]&lt;br /&gt;
* [[FileFullPath]]&lt;br /&gt;
* [[FilePathPart]]&lt;br /&gt;
* [[FileSystemCopy]]&lt;br /&gt;
* [[FileSystemDelete]]&lt;br /&gt;
* [[FileSystemListing]]&lt;br /&gt;
* [[FileSystemMove]]&lt;br /&gt;
* [[FileSystemNewFolder]]&lt;br /&gt;
* [[FindInText]]&lt;br /&gt;
* [[FindObjects]]&lt;br /&gt;
* [[FindPolynomialZeroes]]&lt;br /&gt;
* [[Flatten]]&lt;br /&gt;
* [[Floor]]&lt;br /&gt;
* [[For..Do]]&lt;br /&gt;
* [[Fractiles]]&lt;br /&gt;
* [[Frequency]]&lt;br /&gt;
* [[FunctionOf]]&lt;br /&gt;
* [[Fv]]&lt;br /&gt;
* [[Gamma]]&lt;br /&gt;
* [[Gamma_m_sd|Gamma_m_sd]]                (Distribution Variations.ana)&lt;br /&gt;
* [[GammaFn]]&lt;br /&gt;
* [[GammaI]]&lt;br /&gt;
* [[GammaIInv]]&lt;br /&gt;
* [[Gauss_Quadrature_Pts]]   ([[Legendre Library]])&lt;br /&gt;
* [[Gaussian]]&lt;br /&gt;
* [[GCD]]                   ([[media:GCD function library.ana|GCD function library.ana]])&lt;br /&gt;
* [[Geometric]]&lt;br /&gt;
* [[GetArrowsOnDiagram]]&lt;br /&gt;
* [[GetEvaluationContext]]&lt;br /&gt;
* [[GetFract]]&lt;br /&gt;
* [[GetProcessInfo]]&lt;br /&gt;
* [[GetRegistryValue]]&lt;br /&gt;
* [[VarTerm Functions#Function_GetVariableByName| GetVariableByName]]&lt;br /&gt;
* [[GoalSeek]]              (Optimization Functions.ana)&lt;br /&gt;
* [[Gradient]]              (Optimization Functions.ana)&lt;br /&gt;
* [[GroupedInteger]]&lt;br /&gt;
* [[HasImplicitDimension]]&lt;br /&gt;
* [[HasIndex]]&lt;br /&gt;
* [[HyperGeometric]]&lt;br /&gt;
* [[IdentPred]]&lt;br /&gt;
* [[If-Then-Else]]&lt;br /&gt;
* [[Ifall-Then-Else]]&lt;br /&gt;
* [[Ifonly-Then-Else]]&lt;br /&gt;
* [[If0]]&lt;br /&gt;
* [[Ifpos]]&lt;br /&gt;
* [[IgnoreWarnings]]&lt;br /&gt;
* [[Im]]                     (Complex Library.ana)&lt;br /&gt;
* [[ImageFromHex]]&lt;br /&gt;
* [[ImageInfo]]&lt;br /&gt;
* [[ImPart]]&lt;br /&gt;
* [[Implied_volatility_c]]   (Financial library.ana)&lt;br /&gt;
* [[Implied_volatility_p]]   (Financial library.ana)&lt;br /&gt;
* [[Index Position Operator::@|Index Position Operator: @I, @[I=x] ]] : Get the numeric position of index elements&lt;br /&gt;
* [[VarTerm Functions#Function_IndexesOf| IndexesOf]]&lt;br /&gt;
* [[Index..Do]]&lt;br /&gt;
* [[IndexLength]]&lt;br /&gt;
* [[IndexNames]]&lt;br /&gt;
* [[IndexValue]]&lt;br /&gt;
* [[InsertRecSql]]       (ODBC Library.ana)&lt;br /&gt;
* [[Integer]]&lt;br /&gt;
* [[Integrate]]&lt;br /&gt;
* [[InvalidateResult]]&lt;br /&gt;
* [[InverseGaussian]]   (Distribution Variations.ana)&lt;br /&gt;
* [[Invert]]&lt;br /&gt;
* [[InvertedWishart]]   (Distribution Variations.ana)&lt;br /&gt;
* [[InvLogit]]           (Generalized Regression.ana)&lt;br /&gt;
* [[IPmt]]&lt;br /&gt;
* [[Irr]]&lt;br /&gt;
* [[IsDateTime]]&lt;br /&gt;
* [[IsHandle]]&lt;br /&gt;
* [[Data_Type_Functions#Function_IsNaN| IsNaN]]&lt;br /&gt;
* [[Data_Type_Functions#Function_IsNotSpecified| IsNotSpecified]]&lt;br /&gt;
* [[IsNull]]&lt;br /&gt;
* [[Data_Type_Functions#Function_IsNumber| IsNumber]]&lt;br /&gt;
* [[IsRealNumber]]&lt;br /&gt;
* [[Data_Type_Functions#Function_IsReference| IsReference]]&lt;br /&gt;
* [[IsResultComputed]]&lt;br /&gt;
* [[Data_Type_Functions#Function_IsText| IsText]]&lt;br /&gt;
* [[Data_Type_Functions#Function_IsUndef| IsUndef]]&lt;br /&gt;
* [[Iterate]]&lt;br /&gt;
* [[Join]]&lt;br /&gt;
* [[JoinText]]&lt;br /&gt;
* [[Keelin]]&lt;br /&gt;
* [[KeelinCoefficients]]&lt;br /&gt;
* [[Kurtosis]]&lt;br /&gt;
* [[LDens_InvertedWishart]] (Distribution Densities.ana)&lt;br /&gt;
* [[LDens_Wishart]]       (Distribution Densities.ana)&lt;br /&gt;
* [[Legendre_kth_root]]     ([[Legendre Library]])&lt;br /&gt;
* [[LegendreP]]     ([[Legendre Library]])&lt;br /&gt;
* [[LegendreP_coefs]]     ([[Legendre Library]])&lt;br /&gt;
* [[LegendreP_deriv]]     ([[Legendre Library]])&lt;br /&gt;
* [[LGamma]]&lt;br /&gt;
* [[LinearInterp]]&lt;br /&gt;
* [[ListOfHandles]]&lt;br /&gt;
* [[LL_First]]            (Linked List Library.ana)&lt;br /&gt;
* [[LL_Length]]           (Linked List Library.ana)&lt;br /&gt;
* [[LL_Nth]]              (Linked List Library.ana)&lt;br /&gt;
* [[LL_Push]]             (Linked List Library.ana)&lt;br /&gt;
* [[LL_Remove_First]]     (Linked List Library.ana)&lt;br /&gt;
* [[LL_To_Array]]         (Linked List Library.ana)&lt;br /&gt;
* [[LL_to_RArray]]        (Linked List Library.ana)&lt;br /&gt;
* [[Ln]]&lt;br /&gt;
* [[Local Index Operator::A.I]] : Get an index (usually a local index) of an array&lt;br /&gt;
* [[Logistic]]&lt;br /&gt;
* [[Logistic_Regression]]  (Generalized Regression.ana)&lt;br /&gt;
* [[Logit]]                (Generalized Regression.ana)&lt;br /&gt;
* [[LogNormal]]&lt;br /&gt;
* [[Lognormal_m_sd]]       (Distribution variations.ana) - obsolete, use [[LogNormal]] (mean:m,stddev:sd)&lt;br /&gt;
* [[LogTen]]&lt;br /&gt;
* [[Lorenzian]]            (Distribution variations.ana)&lt;br /&gt;
* [[LpDefine]]&lt;br /&gt;
* [[LpFindIIS]]&lt;br /&gt;
* [[LpObjSa]]&lt;br /&gt;
* [[LpOpt]]&lt;br /&gt;
* [[LpRead]]&lt;br /&gt;
* [[LpReducedCost]]&lt;br /&gt;
* [[LpRhsSa]]&lt;br /&gt;
* [[LpShadow]]&lt;br /&gt;
* [[LpSlack]]&lt;br /&gt;
* [[LpSolution]]&lt;br /&gt;
* [[LpStatusNum]]&lt;br /&gt;
* [[LpStatusText]]&lt;br /&gt;
* [[LpWrite]]&lt;br /&gt;
* [[LpWriteIIS]]&lt;br /&gt;
* [[MakeCSV]]&lt;br /&gt;
* [[Date_Functions#MakeDate.28year.2C_month.2C_day.29| MakeDate]]&lt;br /&gt;
* [[MakeJSON]]&lt;br /&gt;
* [[MantissaAndExponent]]&lt;br /&gt;
* [[MatrixMultiply]]&lt;br /&gt;
* [[Functions_Min_and_Max| Max]]&lt;br /&gt;
* [[MdArrayToTable]]&lt;br /&gt;
* [[MdTable]]&lt;br /&gt;
* [[MdxQuery]]&lt;br /&gt;
* [[Mean]]&lt;br /&gt;
* [[Median]] &lt;br /&gt;
* [[MemoryInUseBy]]&lt;br /&gt;
* [[Mid]]&lt;br /&gt;
* [[Functions_Min_and_Max| Min]]&lt;br /&gt;
* [[Mod]]&lt;br /&gt;
* [[MonoCubicInterp]]&lt;br /&gt;
* [[Move]]&lt;br /&gt;
* [[MsgBox]]&lt;br /&gt;
* [[MultiChoice]]&lt;br /&gt;
* [[Multinomial]]              (Multivariate Distributions.ana)&lt;br /&gt;
* [[MultiNormal]]              (Multivariate Distributions.ana)&lt;br /&gt;
* [[MultiTable]]&lt;br /&gt;
* [[MultiUniform]]             (Multivariate Distributions.ana)&lt;br /&gt;
* [[NegBinomial]]              (Distribution Variations.ana)&lt;br /&gt;
* [[NegativeBinomial]]&lt;br /&gt;
* [[NlpDefine]]&lt;br /&gt;
* [[Normal]]&lt;br /&gt;
* [[Normal_additive_gro]]      (Multivariate Distributions.ana)&lt;br /&gt;
* [[Normal_compound_gro]]      (Multivariate Distributions.ana)&lt;br /&gt;
* [[Normal_correl]]            (Multivariate Distributions.ana)&lt;br /&gt;
* [[Normal_p1_p2]]                ([[:category:Distribution Variations library functions|Distribution Variations.ana]])&lt;br /&gt;
* [[Normal_serial_correl]]     (Multivariate Distributions.ana)&lt;br /&gt;
* [[Normalize]]&lt;br /&gt;
* [[Not]]&lt;br /&gt;
* [[NPer]]&lt;br /&gt;
* [[Npv]]&lt;br /&gt;
* [[NumberToText]]&lt;br /&gt;
* [[OnDraw_Google_map]]         ( [[:Category:Google Maps from OnGraphDraw library functions|Google Maps from OnGraphDraw library]] )&lt;br /&gt;
* [[OpenExcelFile]]  -- deprecated: use [[SpreadsheetOpen]]&lt;br /&gt;
* [[OpenModelFile]]&lt;br /&gt;
* [[OpenURL]]&lt;br /&gt;
* [[OptEngineInfo]]&lt;br /&gt;
* [[OptFindIIS]]&lt;br /&gt;
* [[OptGuess]]&lt;br /&gt;
* [[OptInfo]]&lt;br /&gt;
* [[OptObjective]]&lt;br /&gt;
* [[OptObjectiveSa]]&lt;br /&gt;
* [[OptRead]]&lt;br /&gt;
* [[OptReducedCost]]&lt;br /&gt;
* [[OptRhsSa]]&lt;br /&gt;
* [[OptScalarToConstraint]]&lt;br /&gt;
* [[OptScalarToDecision]]&lt;br /&gt;
* [[OptShadow]]&lt;br /&gt;
* [[OptSlack]]&lt;br /&gt;
* [[OptSolution]]&lt;br /&gt;
* [[OptStatusNum]]&lt;br /&gt;
* [[OptStatusText]]&lt;br /&gt;
* [[OptWrite]]&lt;br /&gt;
* [[OptWriteIIS]]&lt;br /&gt;
* [[Or]]&lt;br /&gt;
* [[Pareto]]                    (Distribution Variations.ana)&lt;br /&gt;
* [[ParseCSV]]&lt;br /&gt;
* [[ParseDate]]&lt;br /&gt;
* [[ParseExpression]]&lt;br /&gt;
* [[ParsedExprFunction]]&lt;br /&gt;
* [[ParsedExprParameters]]&lt;br /&gt;
* [[ParseJSON]]&lt;br /&gt;
* [[ParseNum]]                  (Flat file library.ana - for Analytica 4.1)&lt;br /&gt;
* [[ParseNumber]]&lt;br /&gt;
* [[Partitions]]&lt;br /&gt;
* [[Pdf]]&lt;br /&gt;
* [[Permutations]]&lt;br /&gt;
* [[Pert]]                      (Distribution Variations.ana)&lt;br /&gt;
* [[Plot_error_bars]]                      ([[:Category:OnGraphDraw annotations library functions|OnGraphDraw annotations library]])&lt;br /&gt;
* [[Plot_point_labels]]                   ([[:Category:OnGraphDraw annotations library functions|OnGraphDraw annotations library]])&lt;br /&gt;
* [[Plot_solid_band]]                     ([[:Category:OnGraphDraw annotations library functions|OnGraphDraw annotations library]])&lt;br /&gt;
* [[Plot_solid_prob_bands]]         ([[:Category:OnGraphDraw annotations library functions|OnGraphDraw annotations library]])&lt;br /&gt;
* [[Plot_Tukey_bars]]                     ([[:Category:OnGraphDraw annotations library functions|OnGraphDraw annotations library]])&lt;br /&gt;
* [[Pmt]]&lt;br /&gt;
* [[Poisson]]&lt;br /&gt;
* [[PolarToC]]                  (Complex Library.ana)&lt;br /&gt;
* [[Index Position Operator::@|Position Operator: @I, @[I=x] ]] : Get the numeric position of index elements&lt;br /&gt;
* [[PositionInIndex]]&lt;br /&gt;
* [[PowerMod]]&lt;br /&gt;
* [[PPmt]]&lt;br /&gt;
* [[Probability]]&lt;br /&gt;
* [[ProbBands]]&lt;br /&gt;
* [[ProbDist]]&lt;br /&gt;
* [[Probit_Regression]] (Generalized Regression.ana)&lt;br /&gt;
* [[ProbTable]]&lt;br /&gt;
* [[Prob_Bernoulli]]        ([[Distribution Densities Library]])&lt;br /&gt;
* [[Prob_Binomial]]         ([[Distribution Densities Library]])&lt;br /&gt;
* [[Prob_ChanceDist]]       ([[Distribution Densities Library]])&lt;br /&gt;
* [[Prob_Geometric]]        ([[Distribution Densities Library]])&lt;br /&gt;
* [[Prob_HyperGeometric]]   ([[Distribution Densities Library]])&lt;br /&gt;
* [[Prob_NegativeBinomia]]  ([[Distribution Densities Library]])&lt;br /&gt;
* [[Prob_Poisson]]          ([[Distribution Densities Library]])&lt;br /&gt;
* [[ProbWilcoxon]]&lt;br /&gt;
* [[Product]]&lt;br /&gt;
* [[ProductLog]]&lt;br /&gt;
* [[Putoption]]        (Financial Library.ana)&lt;br /&gt;
* [[Pv]]&lt;br /&gt;
* [[Pvgperp]]          (Financial Library.ana)&lt;br /&gt;
* [[Pvperp]]           (Financial Library.ana)&lt;br /&gt;
* [[QpDefine]]&lt;br /&gt;
* [[Q_infromrec]]&lt;br /&gt;
* [[Q_makerect]]&lt;br /&gt;
* [[Q_squareinterp]]&lt;br /&gt;
* [[Radians]]&lt;br /&gt;
* [[Random]]&lt;br /&gt;
* [[Rank]]&lt;br /&gt;
* [[RankCorrel]]&lt;br /&gt;
* [[Rate]]&lt;br /&gt;
* [[Rayleigh]]         (Distribution variations.ana)&lt;br /&gt;
* [[Re]]               (Complex Library.ana)&lt;br /&gt;
* [[ReadBinaryFile]]&lt;br /&gt;
* [[ReadCsvFile]]&lt;br /&gt;
* [[ReadExportFile]]&lt;br /&gt;
* [[ReadFromUrl]]&lt;br /&gt;
* [[ReadImageFile]]&lt;br /&gt;
* [[ReadTextFile]]&lt;br /&gt;
* [[RealPart]]&lt;br /&gt;
* [[Reference Operator::\|Reference Operator: \X]] : Return a reference to X&lt;br /&gt;
* [[Reform]]&lt;br /&gt;
* [[Regression]]&lt;br /&gt;
* [[RegressionDist]]       (Multivariate Distributions.ana)&lt;br /&gt;
* [[RegressionFitProb]]    (Multivariate Distributions.ana)&lt;br /&gt;
* [[RegressionNoise]]      (Multivariate Distributions.ana)&lt;br /&gt;
* [[ReThrow]]&lt;br /&gt;
* [[Reverse]]&lt;br /&gt;
* [[Round]]&lt;br /&gt;
* [[RunConsoleProcess]]&lt;br /&gt;
* [[Sample]]&lt;br /&gt;
* [[SampleCorrelation]]    (Multivariate Distributions.ana)&lt;br /&gt;
* [[SampleCovariance]]     (Multivariate Distributions.ana)&lt;br /&gt;
* [[SaveExcelWorkbook]]  -- deprecated: use [[SpreadsheetSave]]&lt;br /&gt;
* [[ScanAttFromModelFile]]&lt;br /&gt;
* [[SchedulePublish]]&lt;br /&gt;
* [[SDeviation]]&lt;br /&gt;
* [[SelectText]]&lt;br /&gt;
* [[Sequence]]&lt;br /&gt;
* [[Sequence Operator|Sequence Operator: first..last]]&lt;br /&gt;
* [[SetContains]]&lt;br /&gt;
* [[SetDifference]]&lt;br /&gt;
* [[SetEvaluationFlag]]&lt;br /&gt;
* [[SetIntersection]]&lt;br /&gt;
* [[SetUnion]]&lt;br /&gt;
* [[ShowAskAttribute]]&lt;br /&gt;
* [[ShowPdfFile]]&lt;br /&gt;
* [[ShowProgressBar]]&lt;br /&gt;
* [[ShowWindow]]&lt;br /&gt;
* [[Shuffle]]&lt;br /&gt;
* [[Sign]]&lt;br /&gt;
* [[Trig Functions| Sin]]&lt;br /&gt;
* [[SingularValueDecomp]]&lt;br /&gt;
* [[Trig Functions| Sinh]]&lt;br /&gt;
* [[SipDecode]]&lt;br /&gt;
* [[SipEncode]]&lt;br /&gt;
* [[Size]]&lt;br /&gt;
* [[Skewness]]&lt;br /&gt;
* [[Sleep]]&lt;br /&gt;
* [[Slice]]&lt;br /&gt;
* [[Subscript/Slice Operator| Slice Operator: [@I=n] ]]&lt;br /&gt;
* [[Smooth_Fractile]]     (Distribution variations.ana)&lt;br /&gt;
* [[SobolSequence]]&lt;br /&gt;
* [[Solve]]               (Optimization Functions.ana)&lt;br /&gt;
* [[SolverInfo]]&lt;br /&gt;
* [[Sort]]&lt;br /&gt;
* [[SortIndex]]&lt;br /&gt;
* [[Split]]&lt;br /&gt;
* [[SplitText]]&lt;br /&gt;
* [[SpreadsheetCell]]&lt;br /&gt;
* [[SpreadsheetInfo]]&lt;br /&gt;
* [[SpreadsheetOpen]]&lt;br /&gt;
* [[SpreadsheetRange]]&lt;br /&gt;
* [[SpreadsheetSave]]&lt;br /&gt;
* [[SpreadsheetSetCell]]&lt;br /&gt;
* [[SpreadsheetSetInfo]]&lt;br /&gt;
* [[SpreadsheetSetRange]]&lt;br /&gt;
* [[SqlDriverInfo]]&lt;br /&gt;
* [[Sqr]]&lt;br /&gt;
* [[Sqrt]]&lt;br /&gt;
* [[Statistics]]&lt;br /&gt;
* [[StepInterp]]&lt;br /&gt;
* [[StringLength]]&lt;br /&gt;
* [[StringLowercase]]&lt;br /&gt;
* [[StringMixedCase]]&lt;br /&gt;
* [[StringReplace]]&lt;br /&gt;
* [[StringUpperCase]]&lt;br /&gt;
* [[StudentT]]&lt;br /&gt;
* [[SubFindString]]&lt;br /&gt;
* [[SubIndex]]&lt;br /&gt;
* [[Subscript]]&lt;br /&gt;
* [[Subscript/Slice Operator| Subscript Operator: [I=x] ]] &lt;br /&gt;
* [[Subset]]&lt;br /&gt;
* [[SubString]]&lt;br /&gt;
* [[SubTable]]&lt;br /&gt;
* [[Sum]]&lt;br /&gt;
* [[Sys_coordindex]]&lt;br /&gt;
* [[Sys_localindex]]&lt;br /&gt;
* [[Table]]&lt;br /&gt;
* [[TableJoin]]&lt;br /&gt;
* [[Trig Functions| Tan]]&lt;br /&gt;
* [[Trig Functions| Tanh]]&lt;br /&gt;
* [[Test_map_pivot_slice]]         ( [[:Category:Google Maps from OnGraphDraw library functions|Google Maps from OnGraphDraw library]] )&lt;br /&gt;
* [[Test_map_pivot_vars]]         ( [[:Category:Google Maps from OnGraphDraw library functions|Google Maps from OnGraphDraw library]] )&lt;br /&gt;
* [[TestHeapConsistency]]&lt;br /&gt;
* [[TextCharacterEncode]]&lt;br /&gt;
* [[Text Concatenation Operator: &amp;amp;|Text Concatenation Operator: A&amp;amp;B]] : Concatenate two text strings&lt;br /&gt;
* [[TextDistance]]&lt;br /&gt;
* [[TextLength]]&lt;br /&gt;
* [[TextLowerCase]]&lt;br /&gt;
* [[TextReplace]]&lt;br /&gt;
* [[TextSentenceCase]]&lt;br /&gt;
* [[TextTrim]]&lt;br /&gt;
* [[TextUpperCase]]&lt;br /&gt;
* [[Today]]&lt;br /&gt;
* [[Transpose]]&lt;br /&gt;
* [[Triangular]]&lt;br /&gt;
* [[Triangular_10_50_90]]  (Distribution Variations.ana)&lt;br /&gt;
* [[Triangular_10_mode_90]] (Distribution Variations.ana)&lt;br /&gt;
* [[Truncate]]&lt;br /&gt;
* [[Try]]&lt;br /&gt;
* [[Data_Type_Functions#Function_TypeOf| TypeOf]]&lt;br /&gt;
* [[UncertainLMH]]&lt;br /&gt;
* [[Uncumulate]]&lt;br /&gt;
* [[Unflatten]]&lt;br /&gt;
* [[Uniform]]&lt;br /&gt;
* [[UniformSpherical]]    (Multivariate distributions.ana)&lt;br /&gt;
* [[Unique]]&lt;br /&gt;
* [[Using..Do]]&lt;br /&gt;
* [[Var..Do]]&lt;br /&gt;
* [[Variance]]&lt;br /&gt;
* [[VarTerm]]&lt;br /&gt;
* [[VectorCrossProduct]]&lt;br /&gt;
* [[Wacc]]               (Financial Library.ana)&lt;br /&gt;
* [[Wald]]               (Distribution Variations.ana)&lt;br /&gt;
* [[Warp_Dist]]          (Distribution variations.ana)&lt;br /&gt;
* [[Weibull]]&lt;br /&gt;
* [[WhatIf]]&lt;br /&gt;
* [[WhatIfAll]]&lt;br /&gt;
* [[While..Do]]&lt;br /&gt;
* [[Wilcoxon]]&lt;br /&gt;
* [[Wishart]]            (Distribution variations.ana)&lt;br /&gt;
* [[WorksheetCell]]  -- deprecated: use [[SpreadsheetCell]]&lt;br /&gt;
* [[WorksheetRange]] -- deprecated: use [[SpreadsheetRange]]&lt;br /&gt;
* [[WriteBinaryFile]]&lt;br /&gt;
* [[WriteCsvFile]]&lt;br /&gt;
* [[WriteImageFile]]&lt;br /&gt;
* [[WriteTableSql]]      (ODBC Library.ana)&lt;br /&gt;
* [[WriteTextFile]]&lt;br /&gt;
* [[WriteWorksheetCell]] -- deprecated: use [[SpreadsheetSetCell]]&lt;br /&gt;
* [[WriteWorksheetRange]] -- deprecated: use [[SpreadsheetSetRange]]&lt;br /&gt;
* [[XIrr]]&lt;br /&gt;
* [[XNpv]]&lt;br /&gt;
* [[YearFrac]]&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=BesselYzero&amp;diff=56429</id>
		<title>BesselYzero</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=BesselYzero&amp;diff=56429"/>
		<updated>2021-06-10T00:15:13Z</updated>

		<summary type="html">&lt;p&gt;Drice: Redirected page to Bessel Functions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Bessel Functions]]&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=BesselJzero&amp;diff=56428</id>
		<title>BesselJzero</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=BesselJzero&amp;diff=56428"/>
		<updated>2021-06-10T00:15:04Z</updated>

		<summary type="html">&lt;p&gt;Drice: Redirected page to Bessel Functions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Bessel Functions]]&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Airy_Bi_zero&amp;diff=56427</id>
		<title>Airy Bi zero</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Airy_Bi_zero&amp;diff=56427"/>
		<updated>2021-06-10T00:14:32Z</updated>

		<summary type="html">&lt;p&gt;Drice: Redirected page to Airy functions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#Redirect [[Airy functions]]&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Airy_Bi_deriv&amp;diff=56426</id>
		<title>Airy Bi deriv</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Airy_Bi_deriv&amp;diff=56426"/>
		<updated>2021-06-10T00:14:24Z</updated>

		<summary type="html">&lt;p&gt;Drice: Redirected page to Airy functions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#Redirect [[Airy functions]]&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Airy_Bi&amp;diff=56425</id>
		<title>Airy Bi</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Airy_Bi&amp;diff=56425"/>
		<updated>2021-06-10T00:14:15Z</updated>

		<summary type="html">&lt;p&gt;Drice: Redirected page to Airy functions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#Redirect [[Airy functions]]&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Airy_Ai_zero&amp;diff=56424</id>
		<title>Airy Ai zero</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Airy_Ai_zero&amp;diff=56424"/>
		<updated>2021-06-10T00:14:06Z</updated>

		<summary type="html">&lt;p&gt;Drice: Redirected page to Airy functions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#Redirect [[Airy functions]]&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Airy_Ai_deriv&amp;diff=56423</id>
		<title>Airy Ai deriv</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Airy_Ai_deriv&amp;diff=56423"/>
		<updated>2021-06-10T00:13:55Z</updated>

		<summary type="html">&lt;p&gt;Drice: Redirected page to Airy functions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#Redirect [[Airy functions]]&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Airy_Ai&amp;diff=56422</id>
		<title>Airy Ai</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Airy_Ai&amp;diff=56422"/>
		<updated>2021-06-10T00:13:43Z</updated>

		<summary type="html">&lt;p&gt;Drice: Redirected page to Airy functions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#Redirect [[Airy functions]]&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=What%27s_new_in_Analytica_6.0%3F&amp;diff=56421</id>
		<title>What's new in Analytica 6.0?</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=What%27s_new_in_Analytica_6.0%3F&amp;diff=56421"/>
		<updated>2021-06-10T00:08:02Z</updated>

		<summary type="html">&lt;p&gt;Drice: Normal_p1_p2, EW 20246&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Here's a summary of notable enhancements to Analytica and ADE release 6.0 since the previous [[Analytica 5.4]] release. We don't include numerous bug fixes and minor enhancements, which of course improve the user experience is subtle ways. &lt;br /&gt;
&lt;br /&gt;
To get Analytica or ADE 6.0, go to the [https://analytica.com/support-2/analytica-downloads/ Analytica Downloads] page.&lt;br /&gt;
--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
This page list the  enhancements that are new to Analytica 6.0 since [[Analytica 5.4]]. Analytica 6.0 is currently in beta, so that [[Analytica 5.4]] is still the current official release.  If you have an Analytica subscription, you can use or test drive Analytica 6.0 beta. For information on how, visit the [[Beta Tester Page]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[image:System dynamics diagram with curved arrows.png|600px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Diagrams =&lt;br /&gt;
== Arrows ==&lt;br /&gt;
You can now modify arrows to have multiple line segments or curves, very handy when you want to avoid arrows crossing other arrows or nodes. You can also set arrows' thickness, linestyle and colors. &lt;br /&gt;
&lt;br /&gt;
=== Bends and Curves ===&lt;br /&gt;
Here's how to add segments or spline curves to an arrow:&lt;br /&gt;
* Click a straight arrow to select it (in Edit mode). It will show a square and round handles in the middle of the arrow.&lt;br /&gt;
* For two straight line segments, drag the square handle.&lt;br /&gt;
* For a curved arrow, drag the round handle.&lt;br /&gt;
&lt;br /&gt;
To modify a segmented or curved arrow, click to select it and then:&lt;br /&gt;
* To move the waypoints (dark circles or squares), just drag them.&lt;br /&gt;
* To add more lines or curves, drag a new midpoints handle (open circle or square). &lt;br /&gt;
&lt;br /&gt;
=== Arrow menu styles ===&lt;br /&gt;
For more options, right-click on a multi-segment arrow to see the arrow menu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[image:Arrow menu.png|500px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
* Select '''Curved''' on the context menu to toggle between curved and straight segments.&lt;br /&gt;
* Select '''Remove way point''' to remove a segment.&lt;br /&gt;
* Select '''Remove all way points''' to restore a simple straight arrow.&lt;br /&gt;
* Select '''Dash style''' to change line style t o solid, dashes, dots, dash-dot, or Dash-dot-dot.&lt;br /&gt;
* Select '''Thickness''' to make the arrow thicker or thinner.&lt;br /&gt;
* Select '''double line''&lt;br /&gt;
&amp;lt;!-- * Change either end cap (no anchor, an arrow, square, diamond or circle).--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Colors and line formats ===&lt;br /&gt;
* To change the arrow color, click the arrow to select it, and click a color from the [[Color palette]].&lt;br /&gt;
&lt;br /&gt;
=== Showing and hiding arrows ===&lt;br /&gt;
As before, you can use the [[Diagram Style dialog]] to control whether to show arrows to and from indexes and functions (off by default) or modules (on by default) or use the [[Node Style dialog]] to control whether to show inputs and outputs to a node. Now, you can now show or hide individual arrows using the Arrow menu:&lt;br /&gt;
* Select &amp;quot;'Hide arrow''' to hide an arrow entirely that would otherwise show.&lt;br /&gt;
* Or '''Show arrow''' to show a hidden arrow (but first you'll have to click around to find the arrow and right-click menu:-).&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Analytica's default rules for when to show arrows typically depicts a dependency only once in a given diagram. For example, if you have alias nodes in the same diagram as the original variables, a redundant arrow does not appear between the aliases. It also hides arrows involving Index and Function objects when the Diagram Style preferences have arrows between functions and indexes turned off. You can now show an individual arrow that would not normally be shown as a result of these rules by drawing the arrow between the two objects (e.g., between the 2 alias nodes).&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rounded corners ==&lt;br /&gt;
The borders of Text nodes, Frame nodes, Pictures, and User Inputs and Outputs (when shown) , were formerly rectangles with sharp corners.  They are now have rounded corners for a more modern, less formal, look.&lt;br /&gt;
* There isn't a user interfacee to change the rounding radius for these node types. But you can do it in the [[Typescript]]. For example, if you prefer the old-fashioned rectangle view for all Text nodes, set the 18th field of &amp;lt;code&amp;gt;[[NodeInfo]] of Text&amp;lt;/code&amp;gt; to 0 (instead of the default 12).  The last 0 is the corner radius:&lt;br /&gt;
:&amp;lt;code&amp;gt;NodeInfo of Text:1,0,0,,0,0,,,,,,,0,,,,,0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Proactive calculation of outputs ==&lt;br /&gt;
&lt;br /&gt;
Normally, Analytica computes variables only when you ask to view a result value.  And when you change an input, any user output influenced by the input reverts to the  '''[calc]''' button. So you need to click any results that depend on the input again to recompute them.  In some cases, especially with ACP, it's more user-friendly to have result tables and graphs compute and appear  automatically when you view a Diagram (or ACP Tab).  A new library &amp;lt;code&amp;gt;&amp;quot;Configure Proactive User Outputs&amp;quot;&amp;lt;/code&amp;gt; lets you easily configure your UI's proactive evaluation behavior.  &lt;br /&gt;
*:[[image:Configure proactive configuration.png]]&lt;br /&gt;
&lt;br /&gt;
See [[Proactive Evaluation]] for details.&lt;br /&gt;
&lt;br /&gt;
== Larger default node size ==&lt;br /&gt;
* The default node size for new models has been increased from 96x48 to 128x48 pixels.&lt;br /&gt;
:Note: You can still modify the default node size from the [[Diagram Style dialog]].&lt;br /&gt;
&lt;br /&gt;
= Graphs =&lt;br /&gt;
&lt;br /&gt;
== Custom graph titles==&lt;br /&gt;
*You can now include the title of the graph on the graph image itself, above the grid. To include the title, check the '''Graph title''' check box in Graph setup / Text.&lt;br /&gt;
* From there you can select the font, size and color for the title.&lt;br /&gt;
* You can customize the title, making it different from the variable's own title. &lt;br /&gt;
** To do this, right-click on the title on the graph and select '''Change graph title'''.  This takes you to the [[Graph title expression attribute]], where you can enter a custom title.&lt;br /&gt;
** The [[Graph title expression attribute]] is an expression, so that you can compute your own title (for example, changing the title based on the uncertainty view or current slicer selections). The locals &amp;lt;code&amp;gt;info&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;roles&amp;lt;/code&amp;gt; that are provided to [[OnGraphDraw]] are also provided to your expression here.&lt;br /&gt;
** If you want a simple (non-computed) title, just make sure your text has quotes around it.&lt;br /&gt;
&lt;br /&gt;
== Dash style role ==&lt;br /&gt;
* Using the new dash style (aka stipple) role and key you can depict some information using line color and different information using the line dash style. &lt;br /&gt;
* To enable this option, enable the checkbox for '''''Separate dash style key''''' in the [[Graph_setup_dialog#Chart_Type_tab|Graph setup dialog]] / Chart type / Line style settings.&lt;br /&gt;
* When enabled, a new '''''Dash style''''' pivot control appears in the result window.&lt;br /&gt;
* This works best for depicting short indexes with no more than 5 items.&lt;br /&gt;
&lt;br /&gt;
== Hiding labels for one axis ==&lt;br /&gt;
* People often find the numeric values for the probability density of a continuous variable to be confusing. So you may prefer to hide the labels for the density axis. &lt;br /&gt;
* You can hide labels for any axis from Graph Setup / Axis Ranges, by checking the ''Hide labels'' checkbox.&lt;br /&gt;
* This setting is associated with the specific graph dimension on the axis at the time you select it, So if you pivot or change view mode, other axes aren't hidden.&lt;br /&gt;
&lt;br /&gt;
== OnGraphClick ==&lt;br /&gt;
A new expression attribute, [[OnGraphClick]] has been added, which is evaluated when you mouse-click on a graph.&lt;br /&gt;
Your code can access information about what was clicked on, and set variables in your model based on what was clicked.&lt;br /&gt;
&lt;br /&gt;
== New Grid options ==&lt;br /&gt;
* There are now 3 new grid options: Solid line mesh (in addition to the former &amp;amp; current default, dotted line mesh), x-axis-only and y-axis-only.&lt;br /&gt;
* The default grid has been changed to solid line mesh.&lt;br /&gt;
* The default grid color has been lightened a little, from 0x9c9c9c to 0xe0e0e0.&lt;br /&gt;
&lt;br /&gt;
== New hover icons ==&lt;br /&gt;
* There are new hover icons to switch an axis to log-scale or back to linear-scale in a single click.&lt;br /&gt;
&lt;br /&gt;
= Copy/Paste =&lt;br /&gt;
* When you copy/paste from an expression attribute (like a Definition) into another application such as a gmail message, it now preserves the fixed-width font, the indentation of each line, and the syntax colors.&lt;br /&gt;
&lt;br /&gt;
= Filed Modules and Libraries =&lt;br /&gt;
&amp;lt;center&amp;gt;[[image:Missing module and library.png]]&amp;lt;/center&amp;gt;&lt;br /&gt;
It now treats the situation differently when you open a model that uses a filed module or filed library that cannot be found.&lt;br /&gt;
* It keeps a placeholder &amp;quot;Missing module&amp;quot; or &amp;quot;Missing library&amp;quot; object in your model. &lt;br /&gt;
* The Missing module/library looks like a module or library with a big crack through it.&lt;br /&gt;
* You don't experience two extra error messages during the file load when you tell it to skip a filed module, because the node location and size attributes that cause these still apply to the missing module object.&lt;br /&gt;
* If you save your model after not loading a filed module or library, the new scheme doesn't forget that it uses the filed module/library.&lt;br /&gt;
* A hover icon on the missing module placeholder allows you to find and load the file to correct the missing module after the model is loaded.&lt;br /&gt;
&lt;br /&gt;
= Built-in functions =&lt;br /&gt;
* There is now a sliding window option for [[CumMin]] and [[CumMax]], which uses an O(n) algorithm, and which also handles the «passNull» and «reset» options.&lt;br /&gt;
* You can list multiple arguments when calling [[ConsolePrint]]. They are printed on the same line, with no separation, and without combining the indexes of the parameters.&lt;br /&gt;
* Added an optional «rollover» index to the [[Dispatch]] function, which you can use to rollover unmet demand or unused capacity to the next time period. &lt;br /&gt;
* Null values in «x» or «y» to [[CanvasDrawPolygon]] now cause it to start a new, distinct polygon.&lt;br /&gt;
* Added the ''[[:Category:Cell format functions|Cell formatting functions]]'' system library to the definition menu.&lt;br /&gt;
* A collection of [[:category|File system functions]] were added to the [[Analytica Enterprise|Enterprise edition]] (and higher). These functions are: [[FileFullPath]], [[FilePathPart]], [[FileSystemCopy]], [[FileSystemDelete]], [[FileSystemListing]], [[FileSystemMove]], and [[FileSystemNewFolder]].  &lt;br /&gt;
** These functions are ''enabled'' in the [[Analytica Cloud Platform]], and provide secure ways of viewing and manipulating files within your own ACP project.&lt;br /&gt;
** Similar functionality is also possible using previously functions like [[RunConsoleProcess]] or [[COM Integration]]. But for security reasons, these other methods may be disabled when your model runs on our public [https://acp.analytica.com ACP server]. &lt;br /&gt;
** [[FileFullPath]] and [[FilePathPart]] are available in all editions.&lt;br /&gt;
* You can test whether an array has a specific index using the new built-in functions [[HasImplicitDimension]] or [[HasIndex]].&lt;br /&gt;
* There are a few new advanced math functions, including the [[Airy functions]] and [[Bessel Functions|Bessel zero functions]].&lt;br /&gt;
* A bug fix to [[DbQuery]]() and [[DbWrite]]() -- affects mostly [[DbWrite]]. These have a feature that splits queries on double semi-colons, and sends each part as separate queries. For example &lt;br /&gt;
*:&amp;lt;code&amp;gt;INSERT INTO Tab(X) Value(3);;&amp;lt;/code&amp;gt;&lt;br /&gt;
*:&amp;lt;code&amp;gt;INSERT INTO Tab(Y) Value(2)&amp;lt;/code&amp;gt;&lt;br /&gt;
:Gets sent as two separate queries. Some databases won't process sequential statements in the same query, so this feature provides a way around that. All queries are done in the same context, which is also sometimes relevant. A bug was causing it to split on a single semi-colon, which was a problem, especially in complex queries with SQL variables. With this fix, single semi-colons are part of the same query and don't split them into separate queries. Unfortunately, this could break some SQL queries that used a single semi-colon and depended on them being split. SQL statements in this category would almost always be to [[DbWrite]](), and very unlikely to impact queries that read data.&lt;br /&gt;
&lt;br /&gt;
= Batch processing =&lt;br /&gt;
 You can now [[Running a model in a command line workflow|run a model in a batch process]] from a Windows command line or script.  So, you can run Analytica as part of an automated workflow. You were always about to do this using the  [[ADE User Guide|Analytica Decision Engine (ADE)]] product. Now you can do it with Analytica alone.  See [[Running a model in a command line workflow]].&lt;br /&gt;
&lt;br /&gt;
The key additions that enable this capability include:&lt;br /&gt;
* The parameter &amp;lt;code&amp;gt;/eval&amp;lt;/code&amp;gt; to the [[Analytica Command Line]].&lt;br /&gt;
* The [[Bye]] command, lets you automate the exit of an Analytica process.&lt;br /&gt;
* An option to the [[Bye]] command let's you exit without saving (or asking to save) changes to the model if the model has been modified.&lt;br /&gt;
* The command line option &amp;lt;code&amp;gt;/NoSplash&amp;lt;/code&amp;gt; suppresses the splash screen when starting Analytica, which removes some startup delay.&lt;br /&gt;
&lt;br /&gt;
= Example Models &amp;amp; Libraries =&lt;br /&gt;
== Supply Chain ==&lt;br /&gt;
&amp;lt;center&amp;gt;[[image:brewery_supply_chain.png|600px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;quot;Beer Distribution Supply Chain.ana&amp;quot;&amp;lt;/code&amp;gt; model in the Business Examples folder applies probabilistic supply and production disruptions to evaluate which operational decisions can mitigate order fulfillment disruptions.&lt;br /&gt;
 &lt;br /&gt;
== Boolean circuits ==&lt;br /&gt;
&amp;lt;center&amp;gt;[[image:Boolean circuits.png]]&amp;lt;/center&amp;gt;&lt;br /&gt;
This new example model was developed partially by a 7 year-old who was learning about boolean circuits, and enjoyed drawing and simulating his own circuits in Analytica. You can draw your own boolean circuit using AND gates, OR gates and NOT inverter gates, and toggle input bits to see how the 0s and 1s flow through the circuit.  A nice model to teach young kids about boolean circuits and allow them to build their own simple feed-forward circuits.&lt;br /&gt;
== Power law distribution library ==&lt;br /&gt;
The [[Power law distribution]] is implemented in a library that is now included with Analytica. The [[Power law distribution]] is useful in a number of applications, but perhaps even more important is that this library provides an example template that you can follow for adding other distributions to Analytica when you need one that isn't already built-in.&lt;br /&gt;
&lt;br /&gt;
== Other distributions  ==&lt;br /&gt;
* Added the function [[Normal_p1_p2]] to the [[:category:Distribution Variations library functions|Distribution Variations Library]].  This function defines a [[Normal distribution]] given any two percentiles.&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
* The attribute that used to be titled &amp;quot;Cloud Player Styles&amp;quot; or &amp;quot;AWP Styles&amp;quot; is now &amp;quot;AcpStyles&amp;quot;.&lt;br /&gt;
* Added [[Formatted Text Literals]] (a.k.a. F-strings).  For example: &lt;br /&gt;
*:&amp;lt;code&amp;gt;F&amp;quot;Golden ratio={(1+sqrt(5))/2}&amp;quot;&amp;lt;/code&amp;gt; &amp;amp;rarr; &amp;quot;Golden ratio=1.618&amp;quot;&lt;br /&gt;
* You can now omit a capture destination in a multiple-return-value assignment operator. This makes a common pattern more convenient and terse. For example, previously a pattern such as this was common:&amp;lt;code&amp;gt;&lt;br /&gt;
:[[Local]] txt;&lt;br /&gt;
:(txt, Filename) := [[ReadTextFile]](&amp;quot;&amp;quot;);&lt;br /&gt;
:txt&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;Filename&amp;lt;/code&amp;gt; is defined as a [[ComputedBy]]. The third line (txt) was already unnecessary, since the result of the assignment is the first parameter value. Now even the [[Local]] declaration is unnecessary, so that the above becomes just&lt;br /&gt;
:&amp;lt;code&amp;gt;( , Filename) := [[ReadTextFile]](&amp;quot;&amp;quot;)&amp;lt;/code&amp;gt;&lt;br /&gt;
The result of the full expression is the first return value, with the second return value assigned to &amp;lt;code&amp;gt;Filename&amp;lt;/code&amp;gt;.&lt;br /&gt;
* In a date template, it now accepts capital letters for  D, DD, YY and YYYY, so MM/DD/YYYY can be used as well as MM/dd/yyyy. Formerly it recognized only lower case dd and yyyy.&lt;br /&gt;
* You have long been able to select an item in a [[Choice]] control using the assignment operator. For example, &lt;br /&gt;
::&amp;lt;code&amp;gt;Select_fruit := &amp;quot;apple&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
:But, there was not an easy way to select the All option. Now you can select it by assigning the full index value, assigning an ordered list of all the options, or assigning the text &amp;quot;All&amp;quot; or &amp;quot;«All»&amp;quot; (as long as &amp;quot;All&amp;quot; (or &amp;quot;«All»&amp;quot; respectively) is not one of the choice items.  ([[MultiChoice]] does the same, butthat's not new to 6.0).&lt;br /&gt;
* When a window loses focus, its non-active scrollbars now have a more modern appearance.&lt;br /&gt;
* You can now nest comments in curly braces &amp;quot; {} &amp;quot;.  For example, if you have &amp;lt;code&amp;gt;{ start of comment { interior comment } more comment }&amp;lt;/code&amp;gt;, the comment doesn't end until it gets to the second &amp;quot; } &amp;quot;. This makes it easier to temporarily comment out blocks of code that contain comments. Previously, the first } ended the comment. When loading a legacy model with an unbalanced comments, it automatically adds a balancing &amp;quot; } &amp;quot; so that the comment still ends it the same place it doesn't break the model.&lt;br /&gt;
* You can now evaluate an expression when [[Links_or_URL_in_model_attributes|a hyperlink]] is clicked. This might be a call to [[ShowWindow]](), for example, to jump to a particular result or diagram, or a button identifier to &amp;quot;press&amp;quot; an existing button.&lt;br /&gt;
* When it generates an identifier from a title, it uses only a single underscore where multiple successive characters in the title are not valid in the identifier. For example, from the title &amp;quot;Taxes &amp;amp; Depreciation&amp;quot;, the automatically generated identifier will now be &amp;lt;code&amp;gt;Taxes_Depreciation&amp;lt;/code&amp;gt; rather than &amp;lt;code&amp;gt;Taxes___Depreciation&amp;lt;/code&amp;gt;. &lt;br /&gt;
* The option '''Run at load time''' has been added to the right-mouse edit-mode context menu for a button. Sets the 32-bit of [[ProactivelyEvaluate]] for the button, causing it to be run when the model is loaded.&lt;br /&gt;
* Faster saving of model file when you save to a remote drive over a VPN connection.&lt;br /&gt;
&lt;br /&gt;
== No more 32-bit application and no &amp;quot;64&amp;quot; bit labels ==&lt;br /&gt;
Long ago, most software including Analytica were 32-bit applications. When we produced a 64-bit version, we used the '64-bit' label win many places. Today,  we only produce a 64-bit, the 32-bit version is obsolete. So we've eliminated the &amp;quot;64-bit&amp;quot; from application file names, including:&lt;br /&gt;
* The installer filename is now &amp;lt;code&amp;gt;AnaSetup«ver».exe&amp;lt;/code&amp;gt;, not &amp;lt;code&amp;gt;Ana64Setup«ver».exe&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The executables are now &amp;lt;code&amp;gt;Analytica.exe&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Ade.exe&amp;lt;/code&amp;gt;, not &amp;lt;code&amp;gt;Analytica64.exe&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Ade64.exe&amp;lt;/code&amp;gt;. Similarly, &amp;lt;code&amp;gt;ADEW.DLL&amp;lt;/code&amp;gt; replaces  &amp;lt;code&amp;gt;ADEW64.DLL&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;AnalyticaUpdateCheck.exe&amp;lt;/code&amp;gt; replaces &amp;lt;code&amp;gt;Analytica64UpdateCheck.exe&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Edition names omit &amp;quot;64-bit&amp;quot;. So it now says &amp;quot;Analytica Enterprise&amp;quot; and not &amp;quot;Analytica Enterprise 64-bit&amp;quot;.&lt;br /&gt;
* The user's registry hive is now &amp;lt;code&amp;gt;HKCU/Software/Lumina Decision Systems/Analytica/6.0&amp;lt;/code&amp;gt;, not &amp;lt;code&amp;gt;.../6.0x64&amp;lt;/code&amp;gt;&lt;br /&gt;
* License names omit the 64, e.g., analytica_enterprise_6_2 instead of analytica64_enterprise_6_2&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Normal_p1_p2&amp;diff=56420</id>
		<title>Normal p1 p2</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Normal_p1_p2&amp;diff=56420"/>
		<updated>2021-06-10T00:06:14Z</updated>

		<summary type="html">&lt;p&gt;Drice: New in Analytica 6.0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:Distribution Variations library functions]]&lt;br /&gt;
&lt;br /&gt;
''New in [[Analytica 6.0]]''&lt;br /&gt;
&lt;br /&gt;
== Normal_p1_p2( q1, q2, p1, p2 ) ==&lt;br /&gt;
&lt;br /&gt;
This distribution function found in the [[:category:Distribution Variations library functions|Distribution Variations library]] defines a [[Normal distribution]] given any two percentile estimates.  «q1» and «q2» are the percentile estimates, and «p1» and «p2» specify which percentiles these are.  It must be that &amp;lt;math&amp;gt;q1&amp;lt;q2&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;p1&amp;lt;p2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
For example, given that the 5% percentile is 5 and the 25% percentile is 8, the distribution is&lt;br /&gt;
:[[Normal_p1_p2]]( 5, 8, 5%, 25% ) &amp;amp;rarr; [[image:Normal_p1_p2_ex1.png]]&lt;br /&gt;
&lt;br /&gt;
As with other distribution functions, you can also use this distribution in the function [[Random]].&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Normal distribution]]&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Normal_p1_p2&amp;diff=56419</id>
		<title>Normal p1 p2</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Normal_p1_p2&amp;diff=56419"/>
		<updated>2021-06-10T00:05:45Z</updated>

		<summary type="html">&lt;p&gt;Drice: EW 20246&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:Distribution Variations library functions]]&lt;br /&gt;
&lt;br /&gt;
== Normal_p1_p2( q1, q2, p1, p2 ) ==&lt;br /&gt;
&lt;br /&gt;
This distribution function found in the [[:category:Distribution Variations library functions|Distribution Variations library]] defines a [[Normal distribution]] given any two percentile estimates.  «q1» and «q2» are the percentile estimates, and «p1» and «p2» specify which percentiles these are.  It must be that &amp;lt;math&amp;gt;q1&amp;lt;q2&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;p1&amp;lt;p2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
For example, given that the 5% percentile is 5 and the 25% percentile is 8, the distribution is&lt;br /&gt;
:[[Normal_p1_p2]]( 5, 8, 5%, 25% ) &amp;amp;rarr; [[image:Normal_p1_p2_ex1.png]]&lt;br /&gt;
&lt;br /&gt;
As with other distribution functions, you can also use this distribution in the function [[Random]].&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Normal distribution]]&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=File:Normal_p1_p2_ex1.png&amp;diff=56418</id>
		<title>File:Normal p1 p2 ex1.png</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=File:Normal_p1_p2_ex1.png&amp;diff=56418"/>
		<updated>2021-06-10T00:04:15Z</updated>

		<summary type="html">&lt;p&gt;Drice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Normal_distribution&amp;diff=56417</id>
		<title>Normal distribution</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Normal_distribution&amp;diff=56417"/>
		<updated>2021-06-09T23:57:34Z</updated>

		<summary type="html">&lt;p&gt;Drice: Normal_p1_p2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:Continuous distributions]]&lt;br /&gt;
[[category:Unbounded distributions]]&lt;br /&gt;
[[category:Unimodal distributions]]&lt;br /&gt;
[[category:Symmetric distributions]]&lt;br /&gt;
[[category:Univariate distributions]]&lt;br /&gt;
{{ReleaseBar}}&lt;br /&gt;
&lt;br /&gt;
The normal distribution is a [[:category:Continuous distributions|continuous]], [[:category:Univariate distributions|univariate]], [[:category:Symmetric distributions|symmetric]], [[:category:Unbounded distributions|unbounded]], [[:category:Unimodal distributions|unimodal]] and bell-shaped probability distribution. It is a widely applicable distribution, specified by its mean and standard deviation. The central limit theorem states that the sum or average of a sufficiently long series of independent and identically distributed random numbers is approximately normally distributed when those numbers are sampled from any distribution with a finite mean and variance.&lt;br /&gt;
&lt;br /&gt;
The range [''mean - stddev, mean + stddev''] encloses about 68% of the probability.&lt;br /&gt;
&lt;br /&gt;
The [[:category:Multivariate distributions|multivariate]] generalization of the [[Normal distribution]] is the [[Gaussian distribution]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[image:Normal(0,1).png]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
=== &amp;lt;div id=&amp;quot;Normal&amp;quot;&amp;gt;Normal(mean, stddev'', over'')&amp;lt;/div&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
The distribution function. Use this to describe a quantity that has a normal normal distribution with the given «mean» and standard deviation «stddev». The «stddev» must be 0 or greater.&lt;br /&gt;
&lt;br /&gt;
As with all distribution functions in Analytica, [[Normal]] allows you to specify an optional parameter «over».  Without this parameter, with scalar «mean» and «stddev» parameters, a single random normal variate is generated.  If you want the random variate to vary independently across one or more indexes, then those indexes can be specified in «over».  If the «mean» or «stddev» parameters are array-valued, then [[Normal]] returns an array of random values that are statistically independent across the indexes of the parameters.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;div id=&amp;quot;DensNormal&amp;quot;&amp;gt;Dens{{Release||5.1|_}}Normal(x, mean, stddev)&amp;lt;/div&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
The probability density at «x», given by&lt;br /&gt;
:&amp;lt;math&amp;gt;p(x) = {1\over{\sigma\sqrt{2\pi}}} e^{ - {1\over 2} \left( {{x-\mu}\over \sigma} \right)^2 }&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;div id=&amp;quot;CumNormal&amp;quot;&amp;gt;CumNormal(x, mean, stddev)&amp;lt;/div&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Returns the cumulative probability up to «x», given by&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;p = Pr[x \le X] = {1\over{\sigma \sqrt{2\pi}}} \int_{-\infty}^x e^{- {1\over 2} {{(X-\mu)^2}\over\sigma^2} } dX = \frac12\left[1 + \mbox{erf}\left( \frac{x-\mu}{\sqrt{2\sigma^2}}\right)\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
for a [[Normal|normal distribution]] with a mean &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt; and standard deviation &amp;lt;math&amp;gt;\sigma&amp;lt;/math&amp;gt;.  «Mean» and «stddev» are optional and default to ''Mean = 0'', ''stddev = 1''.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;CumNormal(1) - CumNormal(-1) &amp;amp;rarr; .683&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
i.e., 68.3% of the area under a normal distribution is contained within one standard deviation of the mean.&lt;br /&gt;
&lt;br /&gt;
:[[image:CumNormalGraph.png]]&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;div id=&amp;quot;CumNormalInv&amp;quot;&amp;gt;CumNormalInv(p, mean, stddev)&amp;lt;/div&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
The inverse cumulative density function, also called the quantile function. Returns the value x where &amp;lt;code&amp;gt;CumNormal(x, mean, stddev)&amp;lt;/code&amp;gt; equals «p». The value that has a «p» probability of being greater than or equal to the true outcome.&lt;br /&gt;
&lt;br /&gt;
== When to use ==&lt;br /&gt;
Use a normal distribution if the uncertain quantity is unimodal and symmetric and the upper and lower bounds are unknown, possibly&lt;br /&gt;
very large or very small (unbounded). This distribution is particularly appropriate if you believe that the uncertain quantity is the sum or average of a large number of independent, random quantities.&lt;br /&gt;
&lt;br /&gt;
== Statistics ==&lt;br /&gt;
The theoretical statistics (i.e., in the absence of sampling error) are&lt;br /&gt;
* [[Mean]] = «m»&lt;br /&gt;
* Mode = «m»&lt;br /&gt;
* [[Median]] = «m»&lt;br /&gt;
* [[Variance]] = «stddev»^2&lt;br /&gt;
* [[SDeviation]] = «stddev»&lt;br /&gt;
* [[Skewness]] = 0&lt;br /&gt;
* [[Kurtosis]] = 0&lt;br /&gt;
&lt;br /&gt;
== Parameter Estimation ==&lt;br /&gt;
Suppose you want to fit a Normal distribution to historical data.  Assume your data is in an array, &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; indexed by &amp;lt;code&amp;gt;I&amp;lt;/code&amp;gt;.  The parameters of the Normal distribution as obtained using:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;«mean» :=  [[Mean]](x, I)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;«stddev» := [[SDeviation]](x, I)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Central Limit Theorem&lt;br /&gt;
: The CLT states that under non-degenerate conditions, the sum of a large number of independent random variables is approximately normally distributed.  This holds even when the individual random variables are not normally distributed, and requires just that their distributions have finite variance.  This property makes Normal distributions highly ubiquitous in statistics and in nature.  Most common distributions end up being approximated by normal distributions in certain extremes.&lt;br /&gt;
&lt;br /&gt;
; Approximations by Normal Distribution&lt;br /&gt;
: These are examples of distributions that are approximated by the Normal distribution:&lt;br /&gt;
* The [[Binomial]](n, p) approaches &amp;lt;code&amp;gt;Normal(n*p, n*p*(1 - p))&amp;lt;/code&amp;gt; when ''n'' is large.&lt;br /&gt;
* The [[Poisson]](mean) distribution approaches &amp;lt;code&amp;gt;Normal(mean, Sqrt(mean))&amp;lt;/code&amp;gt; as ''mean'' gets large.&lt;br /&gt;
* The [[ChiSquared]](dof) distribution approaches &amp;lt;code&amp;gt;Normal(dof, Sqrt(2*dof))&amp;lt;/code&amp;gt; as ''dof'' gets large.&lt;br /&gt;
* The [[StudentT]](dof) distribution approaches &amp;lt;code&amp;gt;Normal(0, 1)&amp;lt;/code&amp;gt; when ''dof'' gets large.&lt;br /&gt;
* The [[Wilcoxon]] and Mann-Whitney-Wilcoxon tests (for whether two distributions are equal in hypothesis testing) use the so-called Wilcoxon distribution(s), which is/are quickly approximated by a Normal distribution. &lt;br /&gt;
&lt;br /&gt;
; Combination properties&lt;br /&gt;
* When &amp;lt;math&amp;gt;X \sim Normal(\mu,\sigma)&amp;lt;/math&amp;gt;, then &lt;br /&gt;
::&amp;lt;math&amp;gt;a*X+b \sim Normal\left(a*\mu+b, a*\sigma\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* When &amp;lt;math&amp;gt;X_1 \sim Normal(\mu_1,\sigma_1)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;X_2 \sim Normal(\mu_2,\sigma_2)&amp;lt;/math&amp;gt;, then &lt;br /&gt;
::&amp;lt;math&amp;gt;a*X_1+b*X_2 \sim Normal\left(a*\mu_1+b*\mu_2, \sqrt{a^2 \sigma_1^2 + b^2 \sigma_2^2} \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* When a Bayesian Prior is normally distributed as &amp;lt;math&amp;gt;Normal(\mu,\sigma)&amp;lt;/math&amp;gt;, the posterior after observing a random value, ''x'', drawn from the distribution, is also normally distributed as is given by&lt;br /&gt;
::&amp;lt;math&amp;gt;Normal\left({{\mu+x}\over 2}, {\sigma\over\sqrt{2}}\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The [[Ln|Logarithm]] of a normally distributed variable obeys the [[LogNormal]] distribution.&lt;br /&gt;
&lt;br /&gt;
* The multivariate generalization of the [[Normal]] is the [[Gaussian]] distribution, parameterized by a mean vector an a [[Covariance]] matrix.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
:&amp;lt;code&amp;gt;Normal(30, 5) &amp;amp;rarr;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
:[[image:Normal.png]]&lt;br /&gt;
&lt;br /&gt;
=== Brownian Motion ===&lt;br /&gt;
A discrete-time Brownian process in time can be encoded as:&lt;br /&gt;
:&amp;lt;code&amp;gt;[[Dynamic]](0, [[Self]][Time - 1] + [[Normal]](0, 1))&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or as &lt;br /&gt;
:&amp;lt;code&amp;gt;[[Cumulate]]([[Normal]](0, 1, over: Time), Time)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please take note of several subtleties with these examples.  First, these two are not quite equivalent -- they treat the &amp;lt;code&amp;gt;@Time = 1&amp;lt;/code&amp;gt; case differently.  Either can be adjusted to treat the first time point as fixed or random - this is left as an exercise for the reader (solution is in the discussion tab).  Second, notice that the «over» parameter was necessary in the [[Cumulate]] example.  Without it, the expression:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;[[Cumulate]]([[Normal]](0, 1), Time)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
would select a single delta value that would apply to all time periods, resulting in a straight line with a random slope, rather than a random walk.  The «over» parameter is not required in the [[Dynamic]] example since the recurrence expression is re-evaluated at each time step, causing the random variates to be independent automatically.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;column-count:2;-moz-column-count:2;-webkit-column-count:2&amp;quot;&amp;gt;&lt;br /&gt;
* [[SDeviation]]&lt;br /&gt;
* [[Dens_Normal]]&lt;br /&gt;
* [[Normal_p1_p2]]&lt;br /&gt;
* [[Gaussian]] -- multi-variate Normal distributions&lt;br /&gt;
* [[BiNormal]]&lt;br /&gt;
* [[Pareto]]&lt;br /&gt;
* [[Binomial]]&lt;br /&gt;
* [[Poisson]]&lt;br /&gt;
* [[ChiSquared]]&lt;br /&gt;
* [[StudentT]]&lt;br /&gt;
* [[Wilcoxon]]&lt;br /&gt;
* [[Parametric continuous distributions]]&lt;br /&gt;
* [[Erf]] -- The closely related error function&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Lognormal_m_sd&amp;diff=56416</id>
		<title>Lognormal m sd</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Lognormal_m_sd&amp;diff=56416"/>
		<updated>2021-06-09T23:56:47Z</updated>

		<summary type="html">&lt;p&gt;Drice: correct redirect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[LogNormal distribution]]&lt;br /&gt;
[[category:Distribution Variations library functions]]&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Lognormal_m_sd&amp;diff=56415</id>
		<title>Lognormal m sd</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Lognormal_m_sd&amp;diff=56415"/>
		<updated>2021-06-09T23:56:16Z</updated>

		<summary type="html">&lt;p&gt;Drice: Redirected page to LogNormal&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[LogNormal]]&lt;br /&gt;
[[category:Distribution Variations library functions]]&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Lognormal_m_sd&amp;diff=56414</id>
		<title>Lognormal m sd</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Lognormal_m_sd&amp;diff=56414"/>
		<updated>2021-06-09T23:55:54Z</updated>

		<summary type="html">&lt;p&gt;Drice: Added a redirect and category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:Distribution Variations library functions]]&lt;br /&gt;
#REDIRECT [[LogNormal]]&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Log-normal_distribution&amp;diff=56413</id>
		<title>Log-normal distribution</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Log-normal_distribution&amp;diff=56413"/>
		<updated>2021-06-09T15:59:29Z</updated>

		<summary type="html">&lt;p&gt;Drice: LogNormal given median and one percentile&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:Continuous distributions]]&lt;br /&gt;
[[category:Semi-bounded distributions]]&lt;br /&gt;
[[category:Unimodal distributions]]&lt;br /&gt;
[[Category:Doc Status C]] &amp;lt;!-- For Lumina use, do not change --&amp;gt;&lt;br /&gt;
[[Category:Ana: Status R]]  &amp;lt;!-- For Lumina use, do not change --&amp;gt;&lt;br /&gt;
{{ReleaseBar}}&lt;br /&gt;
&lt;br /&gt;
A [[Log-normal distribution]] is a [[:category:Continuous distributions|continuous distribution]] whose [[Ln|logarithm]] is [[Normal distribution|normally distributed]]. In other words, &amp;lt;code&amp;gt;[[Ln]](x)&amp;lt;/code&amp;gt; has a [[Normal distribution]] when &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; has a log-normal distribution. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;code&amp;gt;LogNormal(median:3,stddev:2)&amp;lt;/code&amp;gt; &amp;amp;rarr; [[image:LogNormal(median=3,stddev=2).png]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Log-normal distribution]]s are useful for many quantities that are always positive and have long upper tails, such as concentration of a pollutant, or amount of rainfall.  The distribution is [[:category:Semi-bounded distributions|semi-bounded]] (positive-only) and [[:category:Unimodal distributions|unimodal]], and often has a long right tail.&lt;br /&gt;
&lt;br /&gt;
The central limit theorem says that the product of a long series of independent and identically distributed positive random variables converges to a log-normal distribution for any positive, finite-variance distribution.&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
&lt;br /&gt;
The log-normal is specified by specifying any two of the following four parameters.&lt;br /&gt;
; median&lt;br /&gt;
The [[Median]], must be &amp;gt;0.&lt;br /&gt;
; gsdev&lt;br /&gt;
The geometric standard deviation&amp;gt;=1.&lt;br /&gt;
; mean&lt;br /&gt;
The arithmetic [[Mean]], &amp;gt;0&lt;br /&gt;
; stddev&lt;br /&gt;
The arithmetic [[SDeviation|standard deviation]], &amp;gt;=0.&lt;br /&gt;
&lt;br /&gt;
A named-parameter convention is recommended, such as:&lt;br /&gt;
:&amp;lt;code&amp;gt;LogNormal( gsdev:1.5, mean: 4 )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LogNormal(''median, gsdev, mean, stddev, over'') ===&lt;br /&gt;
The distribution function. Use this to specify that a chance variable or uncertain quantity is log-normally distributed. You must specify exactly two of the core parameters. &lt;br /&gt;
&lt;br /&gt;
To create independent and identically distributed log-normal distributions along one or more indexes, specify those indexes using the optional «over» parameter.&lt;br /&gt;
&lt;br /&gt;
Generates a sample with a lognormal distribution given «median» and «gsdev» (geometric standard deviation),  or «mean» and «stddev» (standard deviation).&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;div id=&amp;quot;DensLogNormal&amp;quot;&amp;gt;Dens{{Release||4.6|_}}LogNormal( x'', median, gsdev, mean, stddev'' )&amp;lt;/div&amp;gt; ===&lt;br /&gt;
{{Release||4.6|To use this, you need to add the [[Distribution Densities Library]] to your model. }}&lt;br /&gt;
&lt;br /&gt;
The analytic probability density function. Returns the probability density at «x». Exactly two of the parameters «median», «gsdev», «mean», or «stddev» must be provided.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;div id=&amp;quot;CumLogNormal&amp;quot;&amp;gt;CumLogNormal( x'', median, gsdev, mean, stddev'' )&amp;lt;/div&amp;gt; ===&lt;br /&gt;
{{Release||4.6|To use this, you need to add the [[Distribution Densities Library]] to your model. }}&lt;br /&gt;
&lt;br /&gt;
The analytic cumulative density function. Returns the probability that the outcome is less than or equal to «x».&lt;br /&gt;
&lt;br /&gt;
Exactly two of the parameters «median», «gsdev», «mean», or «stddev» must be provided.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;div id=&amp;quot;CumLogNormalInv&amp;quot;&amp;gt;CumLogNormalInv( p'', median, gsdev, mean, stddev'' )&amp;lt;/div&amp;gt; ===&lt;br /&gt;
{{Release||4.6|To use this, you need to add the [[Distribution Densities Library]] to your model. }}&lt;br /&gt;
&lt;br /&gt;
The inverse cumulative density function (aka quantile function). Returns the «p»&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; fractile/quantile/percentile.&lt;br /&gt;
&lt;br /&gt;
Exactly two of the parameters «median», «gsdev», «mean», or «stddev» must be provided.&lt;br /&gt;
&lt;br /&gt;
== Statistics ==&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
A [[Normal]] distribution is symmetric around its [[mean]]: &lt;br /&gt;
:If &amp;lt;code&amp;gt;x := Normal(mean, sdev)&amp;lt;/code&amp;gt;, then &amp;lt;code&amp;gt;P(x &amp;lt;= mean - sdev) = P(x &amp;gt;= mean + sdev) = .15&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Analogously, a lognormal distribution is ratio-symmetric around its median: &lt;br /&gt;
:If &amp;lt;code&amp;gt;y := LogNormal(median, gsdev)&amp;lt;/code&amp;gt;, then &amp;lt;code&amp;gt;P(y &amp;lt;= median/gsdev) = P(y &amp;gt;= median*gsdev) = .15&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
If you specify no parameters, it defaults to standard lognormal -- i.e. whose natural logarithm is a unit normal, mean 0 and standard deviation 1. &lt;br /&gt;
&lt;br /&gt;
You can actually specify any two of the four parameters, from which it can compute the other two: &lt;br /&gt;
:&amp;lt;code&amp;gt;LogNormal(median: med, gsdev: gs)&amp;lt;/code&amp;gt;  or just &amp;lt;code&amp;gt;LogNormal(med, gs)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;LogNormal(median: med, stddev: sd)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;LogNormal(median: med, mean: mu)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;LogNormal(mean: mu, stddev: s)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;LogNormal(mean: mu, gsdev: gs)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;LogNormal(gsdev: gs, stddev: sd)&amp;lt;/code&amp;gt;&lt;br /&gt;
If you specify more than two parameters, it will give an error.&lt;br /&gt;
&lt;br /&gt;
Like other distributions, you can also give one or more «Over» indexes. These cause it to generate an array of independent lognormal distributions over the specified index(es). For example,&lt;br /&gt;
:&amp;lt;code&amp;gt;LogNormal(m, gsd, Over: i)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Syntax]]:&lt;br /&gt;
:[[LogNormal]](median, gsdev, mean, stddev: Optional Positive; over: ... Optional Atom)&lt;br /&gt;
&lt;br /&gt;
== Parameter Estimation ==&lt;br /&gt;
Suppose &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; contains sampled historical data indexed by &amp;lt;code&amp;gt;I&amp;lt;/code&amp;gt;, and consisting solely of positive values.  To estimate the parameters of the best-fit [[LogNormal]] distribution, the following parameter estimation formulae can be used:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;«median» := Median(X, I)&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;Exp(Mean(Ln(X), I))&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;«gsdev» := Exp(SDeviation(Ln(X), I))&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A more general form, with one extra degree-of-freedom, is the [[LogNormal]] with an offset, i.e.,:&lt;br /&gt;
:&amp;lt;code&amp;gt;LogNormal(median, gsdev) - offset&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The more general form can be adapted to data sets containing negative numbers.  The offset is constrained so that &lt;br /&gt;
:&amp;lt;code&amp;gt;offset &amp;gt; -Min(X, I)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To my knowledge, a closed form formula for offset does not exist, so that finding the optimal value of offset requires a 1-D search or optimization.  However, I have found that the following heuristic estimation formulae comes extremely close to the best-fit parameters with offset:&lt;br /&gt;
:&amp;lt;code&amp;gt;offset := -Min(X, I) + 2*(Median(X, I) - Min(X, I))/Sum(1, I)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;median := Median(X + offset, I)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;gsdev  := Exp(SDeviation(Ln(X + offset), I))&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== From Median and Percentile ===&lt;br /&gt;
Suppose you have a median (m) and 95th percentile estimate (p95). This is enough to uniquely determine the log normal distribution. In this case the «gsdev» is given by &lt;br /&gt;
:&amp;lt;math&amp;gt;\left( {p95 \over m} \right)^{\left({1 \over {\Phi^{-1}(0.95)}}\right)} = \left( {p95 \over m} \right)^{0.6079568319149189}&amp;lt;/math&amp;gt;&lt;br /&gt;
where &amp;lt;math&amp;gt;\Phi^{-1}(p)&amp;lt;/math&amp;gt; is the [[CumNormalInv]] function.   Hence the distribution expression is&lt;br /&gt;
:&amp;lt;code&amp;gt;[[LogNormal]](m, (p95/m)^0.6079568319149189 )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The general form for the &amp;lt;math&amp;gt;p^{th}&amp;lt;/math&amp;gt; percentile, when &amp;lt;math&amp;gt;p&amp;gt;0.5&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; is the percentile estimate, is &lt;br /&gt;
:&amp;lt;code&amp;gt;[[LogNormal]]( m, (q/m)^(1/[[CumNormalInv]](p) )&amp;lt;/code&amp;gt;&lt;br /&gt;
For &amp;lt;math&amp;gt;p&amp;lt;0.5&amp;lt;/math&amp;gt;, the expression is&lt;br /&gt;
:&amp;lt;code&amp;gt;[[LogNormal]]( m, (m/q)^(1/[[CumNormalInv]](1-p) )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Normal distribution]]&lt;br /&gt;
* [[Gamma distribution]]  -- similar shaped distribution &lt;br /&gt;
* [[Parametric continuous distributions]]&lt;br /&gt;
* [[Distribution Functions]]&lt;br /&gt;
* [[Distribution Densities Library]]&lt;br /&gt;
* [[Ln]] -- the natural logarithm&lt;br /&gt;
* [[LogTen]]&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=ParseCSV&amp;diff=56378</id>
		<title>ParseCSV</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=ParseCSV&amp;diff=56378"/>
		<updated>2021-05-27T16:04:21Z</updated>

		<summary type="html">&lt;p&gt;Drice: /* See Also */ -- Parsing and formatting data&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:Text Functions]]&lt;br /&gt;
&lt;br /&gt;
Converts a text value read in from a file with CSV (Comma-Separated Values) format into a 2D array.&lt;br /&gt;
By default, it converts numbers and dates into Analytica numbers and dates. It offers lots of optional parameters to control the column and row indexes, and handle the many variants of the CSV format -- for example, nonstandard characters that separate columns, rows, and for the quotes around text. &lt;br /&gt;
&lt;br /&gt;
== ParseCSV( csvText'', columnIndex, rowIndex, separator, firstLineIsHeader, trimCells, columnsToKeep, rowIndexLabelColumn, parseFlags, dateTemplate, decimal, quote '' ) ==&lt;br /&gt;
&lt;br /&gt;
Converts text «csvText» in a CSV (Comma-Separated Values) format into a two-dimensional array. You usually use it with [[ReadTextFile]]() to read the file:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;ParseCSV(ReadTextFile( filename ))&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It assumes these defaults: &lt;br /&gt;
* The usual conventions for CSV files (like Excel):  Comma to separate fields, newline to separate rows, and double quotes (&amp;lt;code&amp;gt;&amp;quot;&amp;lt;/code&amp;gt;) to enclose elements that may contain commas or newlines.  &lt;br /&gt;
* It returns a 2D array with local indexes, &amp;lt;code&amp;gt;.Column&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.Row&amp;lt;/code&amp;gt;.  &lt;br /&gt;
* Local index &amp;lt;code&amp;gt;.Column&amp;lt;/code&amp;gt; gets the column headers from the first row. &lt;br /&gt;
* Local index &amp;lt;code&amp;gt;.Row&amp;lt;/code&amp;gt; is numbered 1 to n-1, where n is the number of rows. &lt;br /&gt;
&lt;br /&gt;
You can override any of these defaults with these optional parameters:&lt;br /&gt;
&lt;br /&gt;
=== «columnIndex» and «rowIndex» ===&lt;br /&gt;
&lt;br /&gt;
Specify «columnIndex» or «rowIndex» to use an existing index instead of the default local indexes &amp;lt;code&amp;gt;.Column&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;.Row&amp;lt;/code&amp;gt;. If you specify a «columnIndex» it treats the first row as data and assumes that the columns are in the correct order. If the first row contains column headers that you want to ignore, perhaps because you want to rename some or all with «columnIndex»,  set «firstLineIsHeader» to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;.  If «columnIndex»  (or «rowIndex») is shorter than the number of columns (rows) in the original, it ignores the extra columns or rows. If it is longer, it pads the result with NULL for the extra columns (rows.)&lt;br /&gt;
&lt;br /&gt;
You can use ParseCSV to update indexes «columnIndex» and/or «rowIndex» with values from the column or row headers from the CSV.  To do this, you define the global «columnIndex» and/or «rowIndex» as [[ComputedBy]] the variable or function containing the ParseCSV() call. For example, suppose you define, a variable TableFromCSV as:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Variable TableFromCSV := ParseCSV(ReadTextFile('data.csv'),  Cols,  Rows,  firstLineIsHeader: True,  rowIndexLabelColumn: 1)&lt;br /&gt;
Index Cols := ComputedBy(TableFromCSV)&lt;br /&gt;
Index Rows := ComputedBy(TableFromCSV)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
It automatically updates &amp;lt;code&amp;gt;Cols&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;rows&amp;lt;/code&amp;gt; with the header values from the csv table, when one of those indexes or &amp;lt;code&amp;gt;TableFromCSV&amp;lt;/code&amp;gt; is first computed.&lt;br /&gt;
&lt;br /&gt;
=== «firstLineIsHeader» ===&lt;br /&gt;
&lt;br /&gt;
If the CSV has no column headers, set «firstLineIsHeader» to &amp;lt;code&amp;gt;False&amp;lt;/code&amp;gt;, so that it treats the first row as data.  If you don't specify a «columnIndex», it uses local index &amp;lt;code&amp;gt;.Column&amp;lt;/code&amp;gt; containing numbers 1 to M (the number of columns).  &lt;br /&gt;
&lt;br /&gt;
=== «columnsToKeep» to select, reorder, or rename columns ===&lt;br /&gt;
&lt;br /&gt;
You can select just a single column from «csvText» by specifying «columnsToKeep» as a column name from the first line of the csv file, or as the column number. You should then omit «columnIndex».  It returns a vector (1D table) with no column index.&lt;br /&gt;
&lt;br /&gt;
You can also select several columns and/or reorder columns by setting «columnIndex» to an existing index containing only the headers you want in the order you want. If it contains column names from the CSV (in any order), you can specify it also to «columnsToKeep», e.g., &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[[ParseCSV]](Csv, Col, columnsToKeep: Col)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to rename the columns, you can pass «columnsToKeep» a 1D array containing the column names or numbers from the CSV text indexed by «columnIndex» that contains the new names. (Some could be the same and some different.)&lt;br /&gt;
&lt;br /&gt;
If you pass a list or array to «columnsToKeep» it's best to also specify «columnIndex». Without a «columnIndex» it will still extract the specified columns, but less efficiently because array abstraction repeats the call for each element in the array passed to «columnsToKeep», and it parses the «csvText» anew each time.&lt;br /&gt;
&lt;br /&gt;
===  «rowIndexLabelsColumn» for row labels ===&lt;br /&gt;
&lt;br /&gt;
By default, the local index &amp;lt;code&amp;gt;.Row&amp;lt;/code&amp;gt; contains numbers 1 to the number of rows. But, you can also use a column to use for the labels for the local row index by setting «rowIndexLabelsColumn» to the number or label of that column.  For example, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ParseCSV(CsvText, rowIndexLabelsColumn: 1)&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
treats the first column as row index labels rather than as array cells. It removes the selected column from the result array unless you  include that column in «columnIndex» or «columnsToKeep».&lt;br /&gt;
&lt;br /&gt;
=== Non-comma separator: «separator» ===&lt;br /&gt;
&lt;br /&gt;
You might expect that CSV (&amp;quot;comma-separated value&amp;quot;) format would ''always'' use commas to separate values! But, sometimes &amp;quot;CSV&amp;quot; files use another separator character, such as code&amp;gt;'|'&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;'[[Chr]](9)'&amp;lt;/code&amp;gt; (tab), or &amp;lt;code&amp;gt;';'&amp;lt;/code&amp;gt;.  It is convenient to choose a separator that never appears within a value, as &amp;lt;code&amp;gt;','&amp;lt;/code&amp;gt; often does.  If the CSV ''does'' use comma separators, you must put the «quote»  character (default double quote) around the value to avoid confusing the parser.&lt;br /&gt;
&lt;br /&gt;
=== Spaces around values: «trimCells» ===&lt;br /&gt;
&lt;br /&gt;
By default it trims away any leading or trailing spaces around each value. Set «trimCells» to False if you want to retain those spaces. It never trims spaces inside quotes.&lt;br /&gt;
&lt;br /&gt;
=== «parseFlags» to interpret numbers and dates ===&lt;br /&gt;
&lt;br /&gt;
By default ParseCSV converts each number, whether enclosed in quotes or not,  into a number or date, following Excel conventions. It treats any cell that starts with &amp;quot;=&amp;quot; (e.g. an Excel formula) as text. You can change these defaults with «parseFlags».  This parameter is a bit-field of flags, which means that you can add flags together to combine their effects:  &lt;br /&gt;
* 0 = (default) Return quoted (&amp;quot;52&amp;quot;) and unquoted (52) numbers as numbers, and cells that look like dates ('&amp;lt;code&amp;gt;6-May-2016&amp;lt;/code&amp;gt;' or '9/4/2020 15:04') as dates. &lt;br /&gt;
* 1 = Don't parse any cells -- e.g.  return &amp;lt;code&amp;gt;=&amp;quot;52&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;quot;52&amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;52&amp;lt;/code&amp;gt; as text.&lt;br /&gt;
* 2 = Don't parse quoted cells -- e.g.  treat &amp;lt;code&amp;gt;&amp;quot;52&amp;quot;&amp;lt;/code&amp;gt; as text, but &amp;lt;code&amp;gt;52&amp;lt;/code&amp;gt; as a number.&lt;br /&gt;
* 4 = Disable the '=' prefix (&amp;lt;code&amp;gt;=&amp;quot;0042&amp;quot;&amp;lt;/code&amp;gt; normally suppresses parsing).&lt;br /&gt;
* 8 = Recognize backslash-escaped quotes to allow quotes inside a quote (in addition to the doubling of quotes, which is the usual CSV standard). For example &amp;quot;He said \&amp;quot;Hello\&amp;quot;.&amp;quot; would return the text &amp;quot;He said &amp;quot;Hello&amp;quot;.&amp;quot;&lt;br /&gt;
* 16 = Disable generalized date parsing.  When you do this, it still recognizes format &amp;lt;code&amp;gt;6-May-2016&amp;lt;/code&amp;gt; as a date but not other formats. This flag dramatically speeds up parsing times for data with no other date formats.&lt;br /&gt;
&lt;br /&gt;
=== «dateTemplate» Date Formats ===&lt;br /&gt;
&lt;br /&gt;
Use the «dateTemplate» parameter to specify the ordering for international dates. Use the letters &amp;quot;d&amp;quot;, &amp;quot;M&amp;quot; and &amp;quot;y&amp;quot; to specify the ordering of these components. For example, with «dateTemplate» of &amp;quot;d/M/y&amp;quot;, parses &amp;quot;11/10/9&amp;quot; as 11-Oct-2009, but with «dateTemplate» of &amp;quot;y/M/d&amp;quot; it parses it as 9-Oct-2011, and with &amp;quot;M/d/y&amp;quot; it would be 10-Nov-2009. &lt;br /&gt;
&lt;br /&gt;
This parameter uses the same conventions used in the Custom date formats template in the [[Number Format Dialog]], but only the relative ordering of the day, month and year patterns matter. Hence, all these work equivalently: &amp;quot;dMy&amp;quot;, &amp;quot;dd/MM/yyyy&amp;quot;, &amp;quot;d-M-yy&amp;quot;, &amp;quot;d M yyyy&amp;quot;. Also, upper/lower case matters!  &amp;quot;M&amp;quot; must be uppercase (because &amp;quot;m&amp;quot; means minutes&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
=== «decimal» point and thousands separators ===&lt;br /&gt;
 &lt;br /&gt;
By default, it assumes that numbers look like &amp;lt;code&amp;gt;&amp;quot;2,525,948.77&amp;quot;&amp;lt;/code&amp;gt; with a decimal point &amp;lt;code&amp;gt;'.'&amp;lt;/code&amp;gt; (dot) to separate the whole and decimal part, and commas &amp;lt;code&amp;gt;','&amp;lt;/code&amp;gt; to group digits into threes (thousands, millions, billions, etc.). That is the convention in English-speaking countries. To use the opposite convention -- e.g.  &amp;lt;code&amp;gt;&amp;quot;2.525.948,77&amp;quot;&amp;lt;/code&amp;gt; -- common in the rest of the World, set the «decimal» parameter to  &amp;lt;code&amp;gt;','&amp;lt;/code&amp;gt; (comma) instead of the default &amp;lt;code&amp;gt;'.'&amp;lt;/code&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
When using comma for «decimal», it's usual to specify «separator» as semi-colon &amp;lt;code&amp;gt;';'&amp;lt;/code&amp;gt; or something else other than comma. If «decimal» and «separator» are both commas, you need to use quotes around any numbers containing decimals.&lt;br /&gt;
&lt;br /&gt;
=== «quote» character ===&lt;br /&gt;
&lt;br /&gt;
The default quote character to enclose numbers or text that may contain commas, new lines, or other separators is double quote (&amp;lt;code&amp;gt;&amp;quot;&amp;lt;/code&amp;gt;). You can specify a different character or text to the «quote» parameter.  The most common other quote character is the single quote ('). To type a single quote in Analytica, you can type doubleQuote SingleQuote doubleQuote (&amp;lt;code&amp;gt;&amp;quot;'&amp;quot;&amp;lt;/code&amp;gt;). Analytica lets you use either matching single quotes or matching double quotes to enclose a text string.&lt;br /&gt;
&lt;br /&gt;
== The CSV format ==&lt;br /&gt;
&lt;br /&gt;
There is no single well-defined CSV standard. Undocumented conventions used by Excel are often treated as the &amp;quot;definitive&amp;quot; specification.  The article at [http://edoceo.com/utilitas/csv-file-format Comma Separated Values (CSV) Standard File Format] is a good overview, but not comprehensive.&lt;br /&gt;
&lt;br /&gt;
Analytica's ParseCSV() and MakeCSV() follows these Excel conventions  (which you can override with parseFlags):&lt;br /&gt;
* Each &amp;quot;record&amp;quot; (or row) in a CSV file is delineated by a newline, either CR, LF or CRLF.  &lt;br /&gt;
* Each value within a row is separated from the next field by a separator character, usually comma (hence the name &amp;quot;Comma-separated values&amp;quot;), although other characters or character sequences are also sometimes used, including commonly TAB (&amp;lt;code&amp;gt;[[Chr]](9)&amp;lt;/code&amp;gt;), bar (&amp;lt;code&amp;gt;'|'&amp;lt;/code&amp;gt;), semi-colon (&amp;lt;code&amp;gt;';'&amp;lt;/code&amp;gt;) and even a simple space. &lt;br /&gt;
&lt;br /&gt;
A row of data might look like this:&lt;br /&gt;
:&amp;lt;code&amp;gt;California, CA, &amp;quot;39,144,818&amp;quot;, 163696, Sacramento, &amp;quot;Edmund Gerald &amp;quot;&amp;quot;Jerry&amp;quot;&amp;quot; Brown, Jr.&amp;quot;, =&amp;quot;95814&amp;quot;, 9/9/1850&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Text and numeric values may or may not be surrounded by quotes. Any value containing the separator character or a newline must be surrounded by quotes. &lt;br /&gt;
* Quotes are always the double-quote character (&amp;lt;code&amp;gt;&amp;quot;&amp;lt;/code&amp;gt;). &lt;br /&gt;
* A value may also be a date (e.g., &amp;lt;code&amp;gt;9/9/1850&amp;lt;/code&amp;gt;).  &lt;br /&gt;
* If a value parses as a valid date, ParseCSV() treats it as a date, otherwise it tries to parse it as a number. If that fails, it treats it as text. The «parseFlags» parameter can be used to alter this behavior somewhat. T&lt;br /&gt;
* To force a value to be read as text, even when it would be a valid number, use the equal-quote form, &amp;lt;code&amp;gt;=&amp;quot;95814&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* It trims spaces to the left or right of a value, unless you set «textTrim» to False.&lt;br /&gt;
* A new line can appear within a quoted value, so simply splitting CSV data on newlines does not reliably separate the data into rows. &lt;br /&gt;
* The first line of a CSV file often consists of columns names, with data starting on the second row. But, some CSV files have no column headers and the data starts on the first line.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
The simplest usage is:&lt;br /&gt;
:&amp;lt;code&amp;gt;[[ParseCSV]]( csvText )&amp;lt;/code&amp;gt;&lt;br /&gt;
which follows the most common format and Excel standards. &lt;br /&gt;
&lt;br /&gt;
To read in a CSV file:&lt;br /&gt;
:&amp;lt;code&amp;gt;[[ParseCSV]]( [[ReadTextFile]]( filename ) )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
[[Analytica 5.3]] introduced the ability to update the columns and rows at the same time you parse the CSV, using the [[ComputedBy]] function.&lt;br /&gt;
&lt;br /&gt;
We introduced this function in [[Analytica 5.0]]. For earlier releases, the [[Standard_libraries#Flat_File_Library|Flat-file library]] contains [[ReadCsvFile]] and [[ParseCsvText]] functions. [[ParseCSV]] is a substantial improvement on these.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Parsing and formatting data]]&lt;br /&gt;
* [[ReadTextFile]]&lt;br /&gt;
* [[MakeCSV]]&lt;br /&gt;
* [[SplitText]], [[FindInText]] &lt;br /&gt;
* [[ParseNumber]]&lt;br /&gt;
* [[ParseDate]]&lt;br /&gt;
* [[ReadCsvFile]], [[ParseCsvText]] -- these are made obsolete by [[ParseCSV]], but are of use in [[Analytica 4.7]] and earlier.&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Additional_libraries&amp;diff=54102</id>
		<title>Additional libraries</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Additional_libraries&amp;diff=54102"/>
		<updated>2020-01-06T20:41:36Z</updated>

		<summary type="html">&lt;p&gt;Drice: /* Individual functions with examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Function libraries]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This page describes a set of useful Analytica function libraries.  These are ''additional'' to the [[Standard libraries]] that are automatically installed when you install Analytica.  If you want to use any of these additional libraries, click on its link and it will download onto your computer. Depending on your download settings, it may automatically open it in Analytica. Either way, you should save it into a directory so that you can add it into your models.  It's usually most convenient to save it with your [[Standard libraries]] in directory&lt;br /&gt;
:&amp;lt;code&amp;gt;c: Lumina/Analytica 4.6/Libraries&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can then easily add it into your models using the standard menu option '''Add Library...''' from the [[File menu]].&lt;br /&gt;
&lt;br /&gt;
See [[User-defined Functions and Libraries]] to build your own functions and libraries.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=== Large Sample Library ===&lt;br /&gt;
'''Download:''' [[media:Large_Sample_Library_v10.ana|Large sample library v10.ana]]&lt;br /&gt;
&lt;br /&gt;
:[[image:Large sample library.png]]&lt;br /&gt;
&lt;br /&gt;
The [[Large Sample Library: User Guide|Large Sample Library]] is an Analytica library that lets you run a Monte Carlo simulation for large models or a large sample size that might otherwise exhaust computer memory, including virtual memory. It breaks up a large sample into a series of batch samples, each small enough to run in memory. For selected variables, known as the Large Sample Variables or LSVs, it accumulates the batches into a large sample. You can then view the probability distributions for each LSV using the standard methods — confidence bands, [[PDF]], [[CDF]], etc. — with the full precision of the large sample.&lt;br /&gt;
&lt;br /&gt;
See [[Large Sample Library: User Guide]].&lt;br /&gt;
&lt;br /&gt;
===The Sensitivity Analysis Library===&lt;br /&gt;
[[The Sensitivity Analysis Library]] provides functions for analyzing the sensitivity of an output to each cell of each array-valued chance input, and locating those individual scalar inputs that have the greatest impact on the result.  See [[The Sensitivity Analysis Library]] for documentation on using this library.  &lt;br /&gt;
&lt;br /&gt;
The library itself can be downloaded from [[media:Sensitivity Analysis Library.ana|Sensitivity Analysis Library.ana]], and an example model to demonstrate its usage is at [[media:Sensitivity Functions Examples.ana|Sensitivity Functions Examples.ana]].&lt;br /&gt;
&lt;br /&gt;
=== Model Documentation Library ===&lt;br /&gt;
'''Download: ''' [[media:Model Documentation Library.ana|Model Documentation Library.ana]]&lt;br /&gt;
&lt;br /&gt;
'''Prerequisites:''' [[Analytica 5.0]] or later. The [[Preferences_dialog|Domain acts as self index]] legacy preference must be OFF. You must be using [[Diagram_Style_dialog|ClearType text]] (not the very old non-clearType legacy setting).&lt;br /&gt;
&lt;br /&gt;
Some people like to create a concise report on paper that contains all objects in their model along with descriptions or other selected attributes.  The &amp;quot;Print Report&amp;quot; feature in Analytica can be used for this purpose, but is not at all concise and ends up placing each object window on a separate page.  The ''Model Documentation Library'' allows you to select a module from your model and produce a result table containing every object within that module with its selected attributes such as title, description, units, definition, or user-defined attributes.  This table can then be exported to Excel where you can format it nicely and print it.  Thus, you can end up with a very concise report on paper.&lt;br /&gt;
&lt;br /&gt;
To use this library, load your model and then select '''File &amp;amp;rarr; Add Module...'''.  Add the [[media:Model Documentation Library.ana|Model Documentation Library.ana]] module file using Embed.  In that module, using the pulldown, select the top-level module for the report.  Follow the instructions shown on the diagram.  If you make changes to your model later, press the ''Update Model Documentation'' button to adjust the pulldown content.&lt;br /&gt;
&lt;br /&gt;
=== [[Units Conversion Library]] ===&lt;br /&gt;
'''Download: ''' [[media:Units conversion library.ANA|Units conversion library.ana]]&lt;br /&gt;
&lt;br /&gt;
These functions convert between different units -- for example, from feet to kilometers, or from Btu (British thermal units) to gigajoules of energy.  They  relieve you from having to look up conversion factors. They also make your model more transparent by making it clear where you are converting from one units to another -- instead of just embedding conversion constants in the formulas. &lt;br /&gt;
&lt;br /&gt;
[[File:Units conversion library.png|600px]]&lt;br /&gt;
&lt;br /&gt;
You can use the '''Conversion example''' section to enter a quantity, select its type (dimensions) and units, and convert it to another unit of that type.&lt;br /&gt;
&lt;br /&gt;
====Library functions====&lt;br /&gt;
&lt;br /&gt;
'''Units_factor'''(oldUnits, newUnits) to give a conversion factor between two units.&lt;br /&gt;
If you omit newUnits, it will assume the standard units for that type (dimensions).&lt;br /&gt;
The units parameters text values must match an abbreviation, synonym, or full name (case insensitive) in the Units data table.&lt;br /&gt;
If the units are of different dimensions, e.g. energy and power, or if it doesn't recognize the units, it will give an error.&lt;br /&gt;
&lt;br /&gt;
'''Units_conversion'''(x, oldUnits, newUnits) returns the value of quantity x converted from oldUnits to newUnits. This works for units like temperature, where simple factors don't work.&lt;br /&gt;
&lt;br /&gt;
'''Units_real_dollars'''(yr, baseYr) returns a multiplication factor used to convert nominal dollars in year yr to real (also known as constant) dollars using baseYr as the base year. If you omit baseYr, it uses the &amp;quot;Standard base year for inflation&amp;quot; which you can set in the Units Conversion Library user interface.  It uses consumer price index data provided by the US Energy Information Administration from 1949 to 2017 with projections up to 2040. It gives an error if yr or baseYr are outside that range.&lt;br /&gt;
&lt;br /&gt;
The '''Units_table''' contains the list of units, with abbreviation, full-name, and synonyms, type (dimensions) and conversion factors to the base unit for each type. For example, the base unit for 'Energy' is Joule. The conversion factor for gigajoule (GJ) is 10^9. You can add your own units. Be careful to select the correct type (dimensions).&lt;br /&gt;
&lt;br /&gt;
=== Greatest Common Divisor functions ===&lt;br /&gt;
'''Download: ''' [[media:GCD function library.ana|GCD function library.ana]]&lt;br /&gt;
&lt;br /&gt;
This library contains two [[User-Defined Functions]] for computing the greatest common divisor.&lt;br /&gt;
&lt;br /&gt;
=== DB Conversion Library ===&lt;br /&gt;
'''Download: ''' [[media:Db conversion lib.ana|DB conversion lib.ana]]&lt;br /&gt;
&lt;br /&gt;
Lets you embed data obtained from a database into the Analytica model. This breaks the need to use it with an external database, so -- for example -- you can send to someone (e.g. Lumina tech support) who does not have access to the database or has an edition of Analytica (e.g. Professional) that doesn't support database access.  &lt;br /&gt;
&lt;br /&gt;
Press a button in this library to transform all the variables defined using [[DbQuery]], [[DbLabels]] and [[DbTable]] to literal data.  Variables and indexes defined using [[DbQuery]] or [[DbLabels]] are transformed to list definitions, and those defined using [[DbTable]] are transformed into edit tables.  This breaks the connection to the external database. So, of course, the model will no longer be able to get new or extended data from the database.&lt;br /&gt;
&lt;br /&gt;
The library is limited in its scope.  It only works when all calls to [[DbQuery]], [[DbLabels]] and [[DbTable]] occur at the top level of variable definitions.  Do not try to use it if the calls to these functions are embedded within larger expressions or in [[User-Defined Functions]].  &lt;br /&gt;
&lt;br /&gt;
'''''Use with extreme caution!!''''':  Make a copy of your original model ''before'' adding and executing this module.  After running the transformation, be sure to use '''File &amp;amp;rarr; Save As...''' to save the transformed model under a different filename, so you don't clobber your original model.&lt;br /&gt;
&lt;br /&gt;
=== Spreadsheet Helper Library ===&lt;br /&gt;
'''Download: ''' [[media:Spreadsheet Helper lib.ana|Spreadsheet Helper lib.ana]]&lt;br /&gt;
&lt;br /&gt;
Includes functions that return the list of worksheet names and the Excel filename of the workbook.  It also contains a SpreadsheetOpenEx function that can be used in place of [[SpreadsheetOpen]], but which remembers the filename selected by the user so the next time they don't have to select the file again.&lt;br /&gt;
&lt;br /&gt;
=== Data Standardization Library ===&lt;br /&gt;
'''Download: ''' [[media:Data Standardization Library.ana|Data Standardization Library.ana]]&lt;br /&gt;
&lt;br /&gt;
Imported data is often inconsistent.  This library allows you to choose what the &amp;quot;standard&amp;quot; values should be in a column of data.  You can then map any non-standard value to one of the standard values.  The result is a column of consistent data.&lt;br /&gt;
&lt;br /&gt;
== Additional probability distributions ==&lt;br /&gt;
&lt;br /&gt;
=== Laplacian distribution ===&lt;br /&gt;
&lt;br /&gt;
'''Download: ''' [[media:Laplacian distribution library.ana|Laplacian distribution library.ana]]&lt;br /&gt;
&lt;br /&gt;
'''Description: ''' The Laplacian distribution (or [https://en.wikipedia.org/wiki/Laplace_distribution Laplace distribution]) is a continuous, unbounded distribution that is essentially a double-sided [[Exponential distribution]] with a «mean» parameter. The library contains the distribution function, and the analytica functions for density, cumulative density and inverse cumulative density (the quantile function).&lt;br /&gt;
&lt;br /&gt;
== Individual functions with examples ==&lt;br /&gt;
&lt;br /&gt;
'''Download: '''  [[media:Recumulate example.ana|Recumulate example.ana]] : Like [[Cumulate]], but resets to zero at selected points.&lt;br /&gt;
&lt;br /&gt;
'''Download:''' [[media:Apportion.ana|Apportion.ana]]: Aggregates or disaggregates an array of values from one index to another index, where the second index may be larger or smaller. Does not require the indexes to be index multiples of each other. For example, if you map from a 47-element index to a 13-element index, each 3.62 elements of the original map to an element in the destination, so for example, the first 3 items map to the first item, then the fourth item is shared, with 0.62 apportioned to the first element and 0.38 apportioned to the second element. Supports aggregation types &amp;lt;code&amp;gt;'SUM'&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;'AVERAGE'&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;'MIN'&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;'MAX'&amp;lt;/code&amp;gt;. Contributed by Paul Sanford of EPRI.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[Standard libraries]]: Installed with Analytica&lt;br /&gt;
* [[User Libraries]]: How to create your own Libraries&lt;br /&gt;
* [[Example Models]]&lt;br /&gt;
* [[Large Sample Library: User Guide]]&lt;br /&gt;
* [[Modules and Libraries]]&lt;br /&gt;
* [[Filed modules and libraries]]&lt;br /&gt;
* [[User-defined Functions and Libraries]]&lt;br /&gt;
* [[Example Models and Libraries]]&lt;br /&gt;
* [[Financial library functions]]&lt;br /&gt;
* [[The Sensitivity Analysis Library]] &lt;br /&gt;
* [[Distribution Densities Library]]&lt;br /&gt;
* [[Linked list library]]&lt;br /&gt;
* [[Base Conversion Function Library]]&lt;br /&gt;
* [[Performance Profiler library]]&lt;br /&gt;
* [[List of libraries]]&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=File:Laplacian_distribution_library.ana&amp;diff=54101</id>
		<title>File:Laplacian distribution library.ana</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=File:Laplacian_distribution_library.ana&amp;diff=54101"/>
		<updated>2020-01-06T20:41:26Z</updated>

		<summary type="html">&lt;p&gt;Drice: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Drice</name></author>
	</entry>
</feed>