 <?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=Jdouglas</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=Jdouglas"/>
	<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php/Special:Contributions/Jdouglas"/>
	<updated>2026-05-22T02:22:01Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.9</generator>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Analytica_4.2_beta_Release_Notes/Changes_in_4.2.3&amp;diff=16581</id>
		<title>Analytica 4.2 beta Release Notes/Changes in 4.2.3</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Analytica_4.2_beta_Release_Notes/Changes_in_4.2.3&amp;diff=16581"/>
		<updated>2010-02-09T00:58:33Z</updated>

		<summary type="html">&lt;p&gt;Jdouglas: /* Speed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Patch Release 4.2.3 =&lt;br /&gt;
&lt;br /&gt;
This page describes changes in the patch release 4.2.3 since the previous [[Analytica 4.2 beta Release Notes/Changes in 4.2.3|4.2.2 patch]].&lt;br /&gt;
&lt;br /&gt;
This patch release is predominantly a bug-fix release, but there are a few small enhancements included as well.  There were dozens of bug fixes resulting in application crashes and improvements to error reporting clarity, which are not listed here.  &lt;br /&gt;
&lt;br /&gt;
''No new license or activation key is required'' to install 4.2.3 if you already have a previous release of 4.2 installed.&lt;br /&gt;
&lt;br /&gt;
We see no reason why you would not want to install this patch to upgrade from 4.2.2 to 4.2.3.  The patch does not contain features that might &amp;quot;break&amp;quot; existing models.  The numerous subtle bug fixes certainly justify the upgrade to the patch, which will take only a minute or two, and the additional small enhancements described below should be icing on the cake.&lt;br /&gt;
&lt;br /&gt;
= '''Known Problems with this Patch''' =&lt;br /&gt;
&lt;br /&gt;
* On a small percentage of computers, maximized diagram windows go blank (don't repaint) after performing a variety of operations.  So far this has only been observed on 2 computers that we know about.  Does not occur on those as long as you don't display your windows in maximized mode.  It might depend on where your application window is located on the screen, so that if you move your app to the top-left it goes away.  We're not yet positive that the issue is new to 4.2.3 -- it is starting to look like it may have always been present in earlier releases but just reported immediately following the release.  We are working hard right not to find an in-house reproduction and learn more.  &lt;br /&gt;
&lt;br /&gt;
* After you install, please check the '''Edit&amp;amp;rarr;Maintain Recovery Info''' preference setting and ensure that it is checked.  There is a possibility that this might get turned off when upgrading.&lt;br /&gt;
&lt;br /&gt;
= Download =&lt;br /&gt;
&lt;br /&gt;
The patch can be downloaded from:&lt;br /&gt;
* [http://downloads.AnalyticaOnline.com/ana/AnaSetup4_2_3.exe Analytica 32-bit]&lt;br /&gt;
* [http://downloads.AnalyticaOnline.com/ana/Ana64Setup4_2_3.exe Analytica 64-bit]&lt;br /&gt;
* [http://downloads.AnalyticaOnline.com/ana/AdeSetup4_2_3.exe ADE 32-bit]&lt;br /&gt;
* [http://downloads.AnalyticaOnline.com/ana/Ade64Setup4_2_3.exe ADE 64-bit]&lt;br /&gt;
&lt;br /&gt;
If you've previously activated a 4.2 license, just leave the activation key blank when running the installer.  The previous activation will still be valid.&lt;br /&gt;
&lt;br /&gt;
If all required information is available to the installer, you will be provided with an express install option.&lt;br /&gt;
&lt;br /&gt;
= Analytica Wiki integration =&lt;br /&gt;
&lt;br /&gt;
More and more the [http://lumina.com/wiki Analytica Wiki] is becoming the primary reference for Analytica modelers.  As we progress, Analytica is becoming more and more integrated with this Wiki, and this patch release includes several steps in that direction.&lt;br /&gt;
&lt;br /&gt;
* There is a new item on the '''Help''' menu: '''Wiki login info...'''.  If you didn't enter it during the install, or if you change your Wiki password, you can enter it here.  Then when you click on a Wiki link inside Analytica, Analytica will automatically log you into the Wiki, saving you from having to type and remember your user name and password.  If you've forgotten your user name, a link on that dialog takes you to a page that helps you find it.  If you've forgotten your password, there is a link for that on the [http://lumina.com/wiki Analytica Wiki main page].&lt;br /&gt;
&lt;br /&gt;
* When running the installer, after entering your email address, etc., the installer will communicate with Lumina's system to find your Wiki user name automatically, or to automatically create a new Wiki account for you if you are a new user with active support.  This helps you stay connected to the Analytica Wiki.&lt;br /&gt;
&lt;br /&gt;
* Most error messages will now show a &amp;quot;more information&amp;quot; link on the error dialog.  Clicking that link will jump to a page on the Analytica Wiki dedicated specifically to that error message.  On the Wiki there is plenty of room to provide in-depth information on mistakes or conditions, including non-intuivitive that might cause this particular error.  Since you, as a user of Analytica with active support, can edit the Wiki, we invite you to make notes right on those pages about your own experiences when you solve problems and figure out why an unexpected error was occurring.  We've added content and commentary for most error messages, and hope you help us improve this over time for the benefit of yourself and all other Analytica users.&lt;br /&gt;
&lt;br /&gt;
= User Interface =&lt;br /&gt;
&lt;br /&gt;
== GUI while computation is in-progress ==&lt;br /&gt;
&lt;br /&gt;
Analytica has never previously been very good at preventing you from doing things that could cause cause problems while a computation is in-progress.  Numerous enhancements were made to this patch to adjust the GUI when a computation is in-progress.  In general, you can still browse your model, but cannot make changes until the computation terminates.  Some highlights:&lt;br /&gt;
&lt;br /&gt;
* The ''Result'' button ([[Image:Result button 1.1.jpg]]) changes to a stop-sign button when a computation is in-progress.  This provides a visual indication that a computation is in-progress, and pressing the button aborts the computation, same as Ctrl+Break.&lt;br /&gt;
&lt;br /&gt;
* When in-progress, the '''Result''' menu contains a '''Stop computation''' option.&lt;br /&gt;
&lt;br /&gt;
* Menu items and toolbar buttons that should not be used while a computation is in-progress are disabled during the computation.&lt;br /&gt;
&lt;br /&gt;
* When you close the result window for the result that was requested when a computation was started, while the computation is in-progress, the act of closing the window will abort the computation, as if you pressed Ctrl+Break.  You can close other windows, including result windows, without aborting the computation.&lt;br /&gt;
&lt;br /&gt;
* Several GUI-operations will automatically abort an in-process computation, including exiting Analytica, selecting '''New''', '''Open''', '''Save''', '''Save As...''', '''Save a copy in...''', '''Close Model''', or recent files from the ''File menu'''.&lt;br /&gt;
&lt;br /&gt;
* Manipulations that change the model, including diagram manipulations, are disabled while computing (much like they are in browse mode).&lt;br /&gt;
&lt;br /&gt;
* A small computation in-progress icon in the top-left corner of the typescript window also provides a visual indication.&lt;br /&gt;
&lt;br /&gt;
* Input/Output controls on diagrams appear in a disabled state when computing.&lt;br /&gt;
&lt;br /&gt;
* Attribute entry and controls in the attribute pane or object window are in a disabled state while computing.&lt;br /&gt;
&lt;br /&gt;
* Better handling of choice controls on diagrams when the choice control's index needs to be computed.&lt;br /&gt;
&lt;br /&gt;
::When a choice control on a diagram uses a computed index, the index needs to be computed for the diagram to display.  When that computation is lengthy, this would cause the UI to hang, unable to complete the redraw, but now handles it gracefully by drawing &amp;quot;«computing»&amp;quot; in place of the pulldown.  If the computation results in an error or is aborted by the user, the control displays as a '''Refresh''' button.&lt;br /&gt;
&lt;br /&gt;
* There were several conditions that could lead to application crashes if you did much while a computation was in-progress. Operations that would cause a diagram to &amp;quot;re-synch&amp;quot; to changes, or closing windows when a GUI command was pending, would often cause crashes.  Veteran Analytica users, I think, would often learn not to fool with it too much while the computation was in-progress for this reason.  This patch fixes an underlying architectural flaw in the underlying UI-toolkit used by Analytica that caused these problems, making it now quite stable even if you are doing stuff while the computation is in-progress.&lt;br /&gt;
&lt;br /&gt;
* When you are loading a model and press '''Stop''' (or abort) while it is ''Checking Definitions'', this now aborts the entire checking definitions phase.  Formerly it only aborted the parsing of the variable it was working on when you pressed the button.  Also, if you press '''Stop''' while it is in the reading phase, a warning is displayed about the model being only partially read.&lt;br /&gt;
&lt;br /&gt;
== Hierarchy Stripes ==&lt;br /&gt;
&lt;br /&gt;
On the '''Edit&amp;amp;rarr;[[Preferences]]''' dialog, there is an option '''[[Preferences|Show module hierarchy]]''', which causes a hierarchy stripe to appear along the top of diagram windows.  This hierarchy stripe has been replaced with a much better &amp;quot;crumb-style&amp;quot; stripe, giving you a full view of the path to the current module, and providing drop-down tree-control menus that allow you to easily navigate to any module in your model without having to open extra windows along the way.&lt;br /&gt;
&lt;br /&gt;
If you have a lot of modules, and many hierarchical levels in your model, you will want this turned on.  It is very useful.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
* The time required to display an extremely large edit table (e.g., with millions of cells) the first time has been dramatically sped up.&lt;br /&gt;
&lt;br /&gt;
* The speed to load and save very large models, especially models with large tables, has been dramatically sped up.  &lt;br /&gt;
&lt;br /&gt;
* Edit tables would &amp;quot;hang&amp;quot; (or at least take so long to render that it seemed like they were hanging) when a single cell contained extremely long text (like millions of characters).&lt;br /&gt;
&lt;br /&gt;
== Tables ==&lt;br /&gt;
&lt;br /&gt;
* The selector dropdown box in an index slicer control (in the header area of a table view) is now larger and resizable, and includes hover-tooltips to show the full content of an item that still doesn't fit horizontally in the box's width.&lt;br /&gt;
&lt;br /&gt;
== Attribute View ==&lt;br /&gt;
&lt;br /&gt;
* UI controls now appear for several attributes when viewing these attributes in the object window or attribute pane, whereas previously these attributes showed up as text.  The recursive and meta-only attribute flags display as checkboxes.  The [[CachingMethod]] attribute displays as a pulldown (or dual-pulldowns).&lt;br /&gt;
&lt;br /&gt;
* The Object Window now displays all enabled [[User-Defined Attributes]].  Formerly, only the first five could be displayed on the object window.&lt;br /&gt;
&lt;br /&gt;
* Formerly you could not edit a definition with more than 32000 characters in ''expr'' view.  The only definitions that ever get that long are tables, but big tables often did get that long.  You can now edit long definitions exceeding the 32000 character limit form the attribute pane or object window.&lt;br /&gt;
&lt;br /&gt;
== Icons ==&lt;br /&gt;
&lt;br /&gt;
* This patch contains new application and document icons which include high-fidelity super-large versions that display nicely in Windows 7 very large icon views, or at any size with higher fidelity than previous ones.  You'll note that the .ana document icon has changed -- instead of being just a cube, it is now a piece of paper with an influence diagram on it, with a cube floating in front.&lt;br /&gt;
&lt;br /&gt;
== Copy/Paste ==&lt;br /&gt;
&lt;br /&gt;
* Previously text copy/paste operations would paste only the first 255 characters into an edit table cell.  This limit has been removed.&lt;br /&gt;
&lt;br /&gt;
* Fixed a problem in which some copy/paste operations from Excel to Analytica involving tables with several empty rows would end up not copying the final rows into Analytica. &lt;br /&gt;
&lt;br /&gt;
== Printing ==&lt;br /&gt;
&lt;br /&gt;
* Fixed some problems that often prevented printing from Analytica 64-bit.&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&lt;br /&gt;
* When an evaluation error occurs within a [[User-Defined Function]], the '''Edit Definition'' option on the error dialog will now jump to the position of the error inside the [[User-Defined Functions|UDF]]'s definition.  Previously it would jump to the variable that called the UDF.  It seems that more often, the problem being reported by the error message is in the function's definition itself.  The one exception to this is if you report your own custom error message using the [[Error]] function.  In that case, it will jump to the definition that called the function.&lt;br /&gt;
&lt;br /&gt;
* Show/Hide Definitions are disabled in browse-mode.&lt;br /&gt;
&lt;br /&gt;
* In some cases, in 4.2.2 the text for a row or column header in a table would display over its cell boundaries, partially occluding or overlapping the content in the body of the table.  &lt;br /&gt;
&lt;br /&gt;
* When an expression in a [[User-Defined Function]] contained an assignment to a global variable, such as &amp;quot;Y := X&amp;quot;, Analytica did not previous maintain the dependency between the function and Y.  Thus, when Y was renamed, the &amp;quot;Y&amp;quot; in the definition didn't get changed.  That dependency is now recorded, so rename works, and can even be viewed as a dependency with arrows on the diagram (if your diagram settings preference has function arrows turned on).  The arrow goes from the UDF to Y.&lt;br /&gt;
&lt;br /&gt;
* A variable marked directly with '''Hide Definition(s)''' and also having an input now keeps its definition hidden, while previously its definition would show (because of the input node).  However, as before, if node is not marked directly, but its parent or ancestor module is marked with '''Hide Definition(s)''', its definition will show if it has an input node, so that behavior has not changed.&lt;br /&gt;
&lt;br /&gt;
= Expressions &amp;amp; Built-in functions =&lt;br /&gt;
&lt;br /&gt;
* Top-level functions cannot appear as edit-table cell definitions.  Functions like [[Dynamic]], [[Iterate]], and [[ComputedBy]] can only occur at the top level in a definition.  They cannot appear in an edit-table cell.  However, edit tables were not enforcing that -- allowing them to be entered without an error, and even computing results that didn't make sense without error.  It is now enforcing this restriction.&lt;br /&gt;
&lt;br /&gt;
* Two new functions, [[SipEncode]] and [[SipDecode]], were added to support [http://ProbabilityManagement.org ProbabilityManagement.org] standards for managing uncertainty in an organization.&lt;br /&gt;
&lt;br /&gt;
* Functions [[Floor]] and [[Ceil]] now support an optional «digits» parameter, similar to the parameter supported by [[Round]].&lt;br /&gt;
&lt;br /&gt;
* Functions [[Floor]], [[Ceil]] and [[Round]] now support an optional «dateUnit» parameter that allows you to round a date-time number to the nearest year, quarter, month, weekday, day, hour, minute or second.&lt;br /&gt;
&lt;br /&gt;
* Function [[MakeTime]](h,m,s) now allows h to exceed 23 without an error.  This is useful when encoding hour durations using this function.&lt;br /&gt;
&lt;br /&gt;
* Function [[Product]] accepts an optional «ignoreNonNumbers» parameter (similar to [[Sum]], etc).&lt;br /&gt;
&lt;br /&gt;
* The expression syntax will now recognize and parse a date in the form d-MMM-yyyy, with MMM being one of the 12 three-letter English-language month abbreviations anywhere within an expression, independent of the number format setting.  Thus, you can now write &amp;lt;code&amp;gt;[[Sequence]](1-Jan-2010,1-Dec-2020,dateUnit:&amp;quot;M&amp;quot;)&amp;lt;/code&amp;gt; in an expression.  To avoid ambiguities, or problems when a model is sent to someone else in a different region, this recognition has been limited only to this specific standard syntax.  As before, Analytica will parse dates in a large variety of syntaxes, and respecting regional ordering of fields, when the date is at the top-level of the definition (the only thing in the definition), or in a GUI table cell.&lt;br /&gt;
&lt;br /&gt;
* [[MemoryInUseBy]], and the performance profiler, did not previous include memory consumed by internal record set structures (when [[DbQuery]] is used), or fast associative-lookup indexing structures used with indexes.  These are now tallied as part of that count, providing a more accurate picture of which nodes are using memory.&lt;br /&gt;
&lt;br /&gt;
* [[AskMsgText]] accepts an optional «password» flag.  When set to true, the text typed is hidden (appears as astrisks) as the user types it.&lt;br /&gt;
&lt;br /&gt;
* An index node with the meta-only attribute set to true is useful for defining a list-of-identifiers, which causes the [[IndexValue]] for the index to be a list-of-[[handle]]s.  That is not new.  But previously, in such a configuration, it would only allow you to enter identifiers of variables, not identifiers of other objects like modules, input/output controls, or [[User-Defined Functions]].   Now you can enter those as well.&lt;br /&gt;
&lt;br /&gt;
= Optimizer =&lt;br /&gt;
&lt;br /&gt;
* This patch contains the latest Frontline Systems solver libraries -- SDK 9.0 (compared to 4.2.2 which used SDK 7.0).  It thus contains numerous improvements to optimization functionality incorporated by Frontline.&lt;br /&gt;
&lt;br /&gt;
* The optimizer engine can now be used over Remote Desktop without headaches of having to install a Sentinel license server for the Frontline license.  This was a rare configuration, when when it occurred, it was a pain.  Frontline SDK 9.0 now uses the Reprise license manager, the same that Lumina's products use, and thus doesn't have this limitation any more that was inherent with its previous Sentinel license manager.&lt;br /&gt;
&lt;br /&gt;
= Databases =&lt;br /&gt;
&lt;br /&gt;
* When you import dates, times or date-times from an external database, you can now control whether these are imported as numeric dates or as text.  Formerly they were always imported textually.  You can control this in two ways.  A global preference options controls the default for all [[DbQuery]] calls.  You can set this in typescript by setting [[Sys_DbDatesAsText]] to 1.  Or you can specify an optional parameter «datesAsText» as either true or false to override the global default.  Note that [[Sys_DbDatesAsText]] is set to 1 by default to preserve backward compatibility for existing models.&lt;br /&gt;
&lt;br /&gt;
* A memory leak was identified and fixed that occurred when importing date or date-time fields from an external ODBC data source using [[DbQuery]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Installer =&lt;br /&gt;
&lt;br /&gt;
* As listed above, the installer will look up Wiki account information when provided with your email, and will obtain your Wiki credentials from the Lumina server if you don't know them.  Or, if you are a new user and are eligible to have Wiki access, it will automatically set up a Wiki account for you and record your credentials for easy login later.&lt;br /&gt;
&lt;br /&gt;
* When installing a patch release, the installer offer an express install (if it has all your info already).  The custom option is still there if you really want to review all your previous information.&lt;br /&gt;
&lt;br /&gt;
* Fixed an issue on Windows 7 where Windows 7's compatibility assistant would display a dialog (incorrectly) saying that the application may not have installed correctly.&lt;br /&gt;
&lt;br /&gt;
= ADE =&lt;br /&gt;
&lt;br /&gt;
* The [[CATable::Slice]] and [[CATable::Subscript]] methods, when applied to a [[DefTable]], now automatically act as [[SubTable]]s.  In other words, the sliced [[DefTable]] is itself a [[DefTable]], and changes to cells inside it are automatically inserted into the corresponding slice of the original table.&lt;br /&gt;
&lt;br /&gt;
= Other Misc =&lt;br /&gt;
&lt;br /&gt;
* The ''Embed All linked modules'' works correctly now when your model contained locked or browse-only submodules.  Even though they are embedded, they will remain locked or browse-only in the single-file model copy.&lt;/div&gt;</summary>
		<author><name>Jdouglas</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Analytica_4.2_beta_Release_Notes/Changes_in_4.2.3&amp;diff=16580</id>
		<title>Analytica 4.2 beta Release Notes/Changes in 4.2.3</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Analytica_4.2_beta_Release_Notes/Changes_in_4.2.3&amp;diff=16580"/>
		<updated>2010-02-09T00:57:54Z</updated>

		<summary type="html">&lt;p&gt;Jdouglas: /* Speed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Patch Release 4.2.3 =&lt;br /&gt;
&lt;br /&gt;
This page describes changes in the patch release 4.2.3 since the previous [[Analytica 4.2 beta Release Notes/Changes in 4.2.3|4.2.2 patch]].&lt;br /&gt;
&lt;br /&gt;
This patch release is predominantly a bug-fix release, but there are a few small enhancements included as well.  There were dozens of bug fixes resulting in application crashes and improvements to error reporting clarity, which are not listed here.  &lt;br /&gt;
&lt;br /&gt;
''No new license or activation key is required'' to install 4.2.3 if you already have a previous release of 4.2 installed.&lt;br /&gt;
&lt;br /&gt;
We see no reason why you would not want to install this patch to upgrade from 4.2.2 to 4.2.3.  The patch does not contain features that might &amp;quot;break&amp;quot; existing models.  The numerous subtle bug fixes certainly justify the upgrade to the patch, which will take only a minute or two, and the additional small enhancements described below should be icing on the cake.&lt;br /&gt;
&lt;br /&gt;
= '''Known Problems with this Patch''' =&lt;br /&gt;
&lt;br /&gt;
* On a small percentage of computers, maximized diagram windows go blank (don't repaint) after performing a variety of operations.  So far this has only been observed on 2 computers that we know about.  Does not occur on those as long as you don't display your windows in maximized mode.  It might depend on where your application window is located on the screen, so that if you move your app to the top-left it goes away.  We're not yet positive that the issue is new to 4.2.3 -- it is starting to look like it may have always been present in earlier releases but just reported immediately following the release.  We are working hard right not to find an in-house reproduction and learn more.  &lt;br /&gt;
&lt;br /&gt;
* After you install, please check the '''Edit&amp;amp;rarr;Maintain Recovery Info''' preference setting and ensure that it is checked.  There is a possibility that this might get turned off when upgrading.&lt;br /&gt;
&lt;br /&gt;
= Download =&lt;br /&gt;
&lt;br /&gt;
The patch can be downloaded from:&lt;br /&gt;
* [http://downloads.AnalyticaOnline.com/ana/AnaSetup4_2_3.exe Analytica 32-bit]&lt;br /&gt;
* [http://downloads.AnalyticaOnline.com/ana/Ana64Setup4_2_3.exe Analytica 64-bit]&lt;br /&gt;
* [http://downloads.AnalyticaOnline.com/ana/AdeSetup4_2_3.exe ADE 32-bit]&lt;br /&gt;
* [http://downloads.AnalyticaOnline.com/ana/Ade64Setup4_2_3.exe ADE 64-bit]&lt;br /&gt;
&lt;br /&gt;
If you've previously activated a 4.2 license, just leave the activation key blank when running the installer.  The previous activation will still be valid.&lt;br /&gt;
&lt;br /&gt;
If all required information is available to the installer, you will be provided with an express install option.&lt;br /&gt;
&lt;br /&gt;
= Analytica Wiki integration =&lt;br /&gt;
&lt;br /&gt;
More and more the [http://lumina.com/wiki Analytica Wiki] is becoming the primary reference for Analytica modelers.  As we progress, Analytica is becoming more and more integrated with this Wiki, and this patch release includes several steps in that direction.&lt;br /&gt;
&lt;br /&gt;
* There is a new item on the '''Help''' menu: '''Wiki login info...'''.  If you didn't enter it during the install, or if you change your Wiki password, you can enter it here.  Then when you click on a Wiki link inside Analytica, Analytica will automatically log you into the Wiki, saving you from having to type and remember your user name and password.  If you've forgotten your user name, a link on that dialog takes you to a page that helps you find it.  If you've forgotten your password, there is a link for that on the [http://lumina.com/wiki Analytica Wiki main page].&lt;br /&gt;
&lt;br /&gt;
* When running the installer, after entering your email address, etc., the installer will communicate with Lumina's system to find your Wiki user name automatically, or to automatically create a new Wiki account for you if you are a new user with active support.  This helps you stay connected to the Analytica Wiki.&lt;br /&gt;
&lt;br /&gt;
* Most error messages will now show a &amp;quot;more information&amp;quot; link on the error dialog.  Clicking that link will jump to a page on the Analytica Wiki dedicated specifically to that error message.  On the Wiki there is plenty of room to provide in-depth information on mistakes or conditions, including non-intuivitive that might cause this particular error.  Since you, as a user of Analytica with active support, can edit the Wiki, we invite you to make notes right on those pages about your own experiences when you solve problems and figure out why an unexpected error was occurring.  We've added content and commentary for most error messages, and hope you help us improve this over time for the benefit of yourself and all other Analytica users.&lt;br /&gt;
&lt;br /&gt;
= User Interface =&lt;br /&gt;
&lt;br /&gt;
== GUI while computation is in-progress ==&lt;br /&gt;
&lt;br /&gt;
Analytica has never previously been very good at preventing you from doing things that could cause cause problems while a computation is in-progress.  Numerous enhancements were made to this patch to adjust the GUI when a computation is in-progress.  In general, you can still browse your model, but cannot make changes until the computation terminates.  Some highlights:&lt;br /&gt;
&lt;br /&gt;
* The ''Result'' button ([[Image:Result button 1.1.jpg]]) changes to a stop-sign button when a computation is in-progress.  This provides a visual indication that a computation is in-progress, and pressing the button aborts the computation, same as Ctrl+Break.&lt;br /&gt;
&lt;br /&gt;
* When in-progress, the '''Result''' menu contains a '''Stop computation''' option.&lt;br /&gt;
&lt;br /&gt;
* Menu items and toolbar buttons that should not be used while a computation is in-progress are disabled during the computation.&lt;br /&gt;
&lt;br /&gt;
* When you close the result window for the result that was requested when a computation was started, while the computation is in-progress, the act of closing the window will abort the computation, as if you pressed Ctrl+Break.  You can close other windows, including result windows, without aborting the computation.&lt;br /&gt;
&lt;br /&gt;
* Several GUI-operations will automatically abort an in-process computation, including exiting Analytica, selecting '''New''', '''Open''', '''Save''', '''Save As...''', '''Save a copy in...''', '''Close Model''', or recent files from the ''File menu'''.&lt;br /&gt;
&lt;br /&gt;
* Manipulations that change the model, including diagram manipulations, are disabled while computing (much like they are in browse mode).&lt;br /&gt;
&lt;br /&gt;
* A small computation in-progress icon in the top-left corner of the typescript window also provides a visual indication.&lt;br /&gt;
&lt;br /&gt;
* Input/Output controls on diagrams appear in a disabled state when computing.&lt;br /&gt;
&lt;br /&gt;
* Attribute entry and controls in the attribute pane or object window are in a disabled state while computing.&lt;br /&gt;
&lt;br /&gt;
* Better handling of choice controls on diagrams when the choice control's index needs to be computed.&lt;br /&gt;
&lt;br /&gt;
::When a choice control on a diagram uses a computed index, the index needs to be computed for the diagram to display.  When that computation is lengthy, this would cause the UI to hang, unable to complete the redraw, but now handles it gracefully by drawing &amp;quot;«computing»&amp;quot; in place of the pulldown.  If the computation results in an error or is aborted by the user, the control displays as a '''Refresh''' button.&lt;br /&gt;
&lt;br /&gt;
* There were several conditions that could lead to application crashes if you did much while a computation was in-progress. Operations that would cause a diagram to &amp;quot;re-synch&amp;quot; to changes, or closing windows when a GUI command was pending, would often cause crashes.  Veteran Analytica users, I think, would often learn not to fool with it too much while the computation was in-progress for this reason.  This patch fixes an underlying architectural flaw in the underlying UI-toolkit used by Analytica that caused these problems, making it now quite stable even if you are doing stuff while the computation is in-progress.&lt;br /&gt;
&lt;br /&gt;
* When you are loading a model and press '''Stop''' (or abort) while it is ''Checking Definitions'', this now aborts the entire checking definitions phase.  Formerly it only aborted the parsing of the variable it was working on when you pressed the button.  Also, if you press '''Stop''' while it is in the reading phase, a warning is displayed about the model being only partially read.&lt;br /&gt;
&lt;br /&gt;
== Hierarchy Stripes ==&lt;br /&gt;
&lt;br /&gt;
On the '''Edit&amp;amp;rarr;[[Preferences]]''' dialog, there is an option '''[[Preferences|Show module hierarchy]]''', which causes a hierarchy stripe to appear along the top of diagram windows.  This hierarchy stripe has been replaced with a much better &amp;quot;crumb-style&amp;quot; stripe, giving you a full view of the path to the current module, and providing drop-down tree-control menus that allow you to easily navigate to any module in your model without having to open extra windows along the way.&lt;br /&gt;
&lt;br /&gt;
If you have a lot of modules, and many hierarchical levels in your model, you will want this turned on.  It is very useful.&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
* The time required to display an extremely large edit table (e.g., with millions of cells) the first time has been dramatically speed up.&lt;br /&gt;
&lt;br /&gt;
* The speed to load and save very large models, especially models with large tables, has been dramatically sped up.  &lt;br /&gt;
&lt;br /&gt;
* Edit tables would &amp;quot;hang&amp;quot; (or at least take so long to render that it seemed like they were hanging) when a single cell contained extremely long text (like millions of characters).&lt;br /&gt;
&lt;br /&gt;
== Tables ==&lt;br /&gt;
&lt;br /&gt;
* The selector dropdown box in an index slicer control (in the header area of a table view) is now larger and resizable, and includes hover-tooltips to show the full content of an item that still doesn't fit horizontally in the box's width.&lt;br /&gt;
&lt;br /&gt;
== Attribute View ==&lt;br /&gt;
&lt;br /&gt;
* UI controls now appear for several attributes when viewing these attributes in the object window or attribute pane, whereas previously these attributes showed up as text.  The recursive and meta-only attribute flags display as checkboxes.  The [[CachingMethod]] attribute displays as a pulldown (or dual-pulldowns).&lt;br /&gt;
&lt;br /&gt;
* The Object Window now displays all enabled [[User-Defined Attributes]].  Formerly, only the first five could be displayed on the object window.&lt;br /&gt;
&lt;br /&gt;
* Formerly you could not edit a definition with more than 32000 characters in ''expr'' view.  The only definitions that ever get that long are tables, but big tables often did get that long.  You can now edit long definitions exceeding the 32000 character limit form the attribute pane or object window.&lt;br /&gt;
&lt;br /&gt;
== Icons ==&lt;br /&gt;
&lt;br /&gt;
* This patch contains new application and document icons which include high-fidelity super-large versions that display nicely in Windows 7 very large icon views, or at any size with higher fidelity than previous ones.  You'll note that the .ana document icon has changed -- instead of being just a cube, it is now a piece of paper with an influence diagram on it, with a cube floating in front.&lt;br /&gt;
&lt;br /&gt;
== Copy/Paste ==&lt;br /&gt;
&lt;br /&gt;
* Previously text copy/paste operations would paste only the first 255 characters into an edit table cell.  This limit has been removed.&lt;br /&gt;
&lt;br /&gt;
* Fixed a problem in which some copy/paste operations from Excel to Analytica involving tables with several empty rows would end up not copying the final rows into Analytica. &lt;br /&gt;
&lt;br /&gt;
== Printing ==&lt;br /&gt;
&lt;br /&gt;
* Fixed some problems that often prevented printing from Analytica 64-bit.&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&lt;br /&gt;
* When an evaluation error occurs within a [[User-Defined Function]], the '''Edit Definition'' option on the error dialog will now jump to the position of the error inside the [[User-Defined Functions|UDF]]'s definition.  Previously it would jump to the variable that called the UDF.  It seems that more often, the problem being reported by the error message is in the function's definition itself.  The one exception to this is if you report your own custom error message using the [[Error]] function.  In that case, it will jump to the definition that called the function.&lt;br /&gt;
&lt;br /&gt;
* Show/Hide Definitions are disabled in browse-mode.&lt;br /&gt;
&lt;br /&gt;
* In some cases, in 4.2.2 the text for a row or column header in a table would display over its cell boundaries, partially occluding or overlapping the content in the body of the table.  &lt;br /&gt;
&lt;br /&gt;
* When an expression in a [[User-Defined Function]] contained an assignment to a global variable, such as &amp;quot;Y := X&amp;quot;, Analytica did not previous maintain the dependency between the function and Y.  Thus, when Y was renamed, the &amp;quot;Y&amp;quot; in the definition didn't get changed.  That dependency is now recorded, so rename works, and can even be viewed as a dependency with arrows on the diagram (if your diagram settings preference has function arrows turned on).  The arrow goes from the UDF to Y.&lt;br /&gt;
&lt;br /&gt;
* A variable marked directly with '''Hide Definition(s)''' and also having an input now keeps its definition hidden, while previously its definition would show (because of the input node).  However, as before, if node is not marked directly, but its parent or ancestor module is marked with '''Hide Definition(s)''', its definition will show if it has an input node, so that behavior has not changed.&lt;br /&gt;
&lt;br /&gt;
= Expressions &amp;amp; Built-in functions =&lt;br /&gt;
&lt;br /&gt;
* Top-level functions cannot appear as edit-table cell definitions.  Functions like [[Dynamic]], [[Iterate]], and [[ComputedBy]] can only occur at the top level in a definition.  They cannot appear in an edit-table cell.  However, edit tables were not enforcing that -- allowing them to be entered without an error, and even computing results that didn't make sense without error.  It is now enforcing this restriction.&lt;br /&gt;
&lt;br /&gt;
* Two new functions, [[SipEncode]] and [[SipDecode]], were added to support [http://ProbabilityManagement.org ProbabilityManagement.org] standards for managing uncertainty in an organization.&lt;br /&gt;
&lt;br /&gt;
* Functions [[Floor]] and [[Ceil]] now support an optional «digits» parameter, similar to the parameter supported by [[Round]].&lt;br /&gt;
&lt;br /&gt;
* Functions [[Floor]], [[Ceil]] and [[Round]] now support an optional «dateUnit» parameter that allows you to round a date-time number to the nearest year, quarter, month, weekday, day, hour, minute or second.&lt;br /&gt;
&lt;br /&gt;
* Function [[MakeTime]](h,m,s) now allows h to exceed 23 without an error.  This is useful when encoding hour durations using this function.&lt;br /&gt;
&lt;br /&gt;
* Function [[Product]] accepts an optional «ignoreNonNumbers» parameter (similar to [[Sum]], etc).&lt;br /&gt;
&lt;br /&gt;
* The expression syntax will now recognize and parse a date in the form d-MMM-yyyy, with MMM being one of the 12 three-letter English-language month abbreviations anywhere within an expression, independent of the number format setting.  Thus, you can now write &amp;lt;code&amp;gt;[[Sequence]](1-Jan-2010,1-Dec-2020,dateUnit:&amp;quot;M&amp;quot;)&amp;lt;/code&amp;gt; in an expression.  To avoid ambiguities, or problems when a model is sent to someone else in a different region, this recognition has been limited only to this specific standard syntax.  As before, Analytica will parse dates in a large variety of syntaxes, and respecting regional ordering of fields, when the date is at the top-level of the definition (the only thing in the definition), or in a GUI table cell.&lt;br /&gt;
&lt;br /&gt;
* [[MemoryInUseBy]], and the performance profiler, did not previous include memory consumed by internal record set structures (when [[DbQuery]] is used), or fast associative-lookup indexing structures used with indexes.  These are now tallied as part of that count, providing a more accurate picture of which nodes are using memory.&lt;br /&gt;
&lt;br /&gt;
* [[AskMsgText]] accepts an optional «password» flag.  When set to true, the text typed is hidden (appears as astrisks) as the user types it.&lt;br /&gt;
&lt;br /&gt;
* An index node with the meta-only attribute set to true is useful for defining a list-of-identifiers, which causes the [[IndexValue]] for the index to be a list-of-[[handle]]s.  That is not new.  But previously, in such a configuration, it would only allow you to enter identifiers of variables, not identifiers of other objects like modules, input/output controls, or [[User-Defined Functions]].   Now you can enter those as well.&lt;br /&gt;
&lt;br /&gt;
= Optimizer =&lt;br /&gt;
&lt;br /&gt;
* This patch contains the latest Frontline Systems solver libraries -- SDK 9.0 (compared to 4.2.2 which used SDK 7.0).  It thus contains numerous improvements to optimization functionality incorporated by Frontline.&lt;br /&gt;
&lt;br /&gt;
* The optimizer engine can now be used over Remote Desktop without headaches of having to install a Sentinel license server for the Frontline license.  This was a rare configuration, when when it occurred, it was a pain.  Frontline SDK 9.0 now uses the Reprise license manager, the same that Lumina's products use, and thus doesn't have this limitation any more that was inherent with its previous Sentinel license manager.&lt;br /&gt;
&lt;br /&gt;
= Databases =&lt;br /&gt;
&lt;br /&gt;
* When you import dates, times or date-times from an external database, you can now control whether these are imported as numeric dates or as text.  Formerly they were always imported textually.  You can control this in two ways.  A global preference options controls the default for all [[DbQuery]] calls.  You can set this in typescript by setting [[Sys_DbDatesAsText]] to 1.  Or you can specify an optional parameter «datesAsText» as either true or false to override the global default.  Note that [[Sys_DbDatesAsText]] is set to 1 by default to preserve backward compatibility for existing models.&lt;br /&gt;
&lt;br /&gt;
* A memory leak was identified and fixed that occurred when importing date or date-time fields from an external ODBC data source using [[DbQuery]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Installer =&lt;br /&gt;
&lt;br /&gt;
* As listed above, the installer will look up Wiki account information when provided with your email, and will obtain your Wiki credentials from the Lumina server if you don't know them.  Or, if you are a new user and are eligible to have Wiki access, it will automatically set up a Wiki account for you and record your credentials for easy login later.&lt;br /&gt;
&lt;br /&gt;
* When installing a patch release, the installer offer an express install (if it has all your info already).  The custom option is still there if you really want to review all your previous information.&lt;br /&gt;
&lt;br /&gt;
* Fixed an issue on Windows 7 where Windows 7's compatibility assistant would display a dialog (incorrectly) saying that the application may not have installed correctly.&lt;br /&gt;
&lt;br /&gt;
= ADE =&lt;br /&gt;
&lt;br /&gt;
* The [[CATable::Slice]] and [[CATable::Subscript]] methods, when applied to a [[DefTable]], now automatically act as [[SubTable]]s.  In other words, the sliced [[DefTable]] is itself a [[DefTable]], and changes to cells inside it are automatically inserted into the corresponding slice of the original table.&lt;br /&gt;
&lt;br /&gt;
= Other Misc =&lt;br /&gt;
&lt;br /&gt;
* The ''Embed All linked modules'' works correctly now when your model contained locked or browse-only submodules.  Even though they are embedded, they will remain locked or browse-only in the single-file model copy.&lt;/div&gt;</summary>
		<author><name>Jdouglas</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Regression&amp;diff=8044</id>
		<title>Regression</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Regression&amp;diff=8044"/>
		<updated>2008-03-27T13:33:10Z</updated>

		<summary type="html">&lt;p&gt;Jdouglas: /* Secondary Statistics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:Data Analysis Functions]]&lt;br /&gt;
[[Category:Doc Status C]] &amp;lt;!-- For Lumina use, do not change --&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
= Regression( Y,B,I,K ) =&lt;br /&gt;
&lt;br /&gt;
Generalized Linear Regression.&lt;br /&gt;
&lt;br /&gt;
* Y : Classification value (dependent variable).  Indexed by I.&lt;br /&gt;
* B : Basis values (independent variables).  Indexed by I and K.&lt;br /&gt;
* I : Index for data points.  Each element of I corresponds to a different data point.&lt;br /&gt;
* K : Basis index.  The result has one coefficient for each element of K.&lt;br /&gt;
&lt;br /&gt;
Finds a set of coefficients, C, fitting the data so that Y at each data point is estimated by&lt;br /&gt;
 Sum(C*B,K)&lt;br /&gt;
&lt;br /&gt;
(see user guide for basic usage)&lt;br /&gt;
&lt;br /&gt;
= Details =&lt;br /&gt;
(too detailed for user guide)&lt;br /&gt;
&lt;br /&gt;
== Underconstrained Problems ==&lt;br /&gt;
&lt;br /&gt;
When you do a regression fit, the number of data points, size(I), should be greater than the number of basis terms, size(K).  When the number of data points is less than the number of basis terms, the problem is under-constrained.  Provided that there are no two data points having the same basis values but different Y values, the fit curve in an underconstrained problem will perfectly pass through all data points, however, the co-efficients in that case are not unique.  In the under-constrained case, Analytica will issue a warning, since this most likely indicates that the I and K index parameters were inadvertently swapped.  If you ignore the warning, embed the call within an [[IgnoreWarnings]] function call, or have the &amp;quot;Show Result Warnings&amp;quot; preference disabled, a set of coefficients that passes through the existing data points is arbitrarily chosen and returned.  The algorithm used is computational inefficient in the under-constrained case where size(I) &amp;lt;&amp;lt; size(K) -- i.e., the number of basis terms is much larger than the number of data points.  If you know your problem is highly underconstrained, then you probably do not intend to use a regression.&lt;br /&gt;
&lt;br /&gt;
= Secondary Statistics =&lt;br /&gt;
&lt;br /&gt;
The Regression function computes the coefficients for the best-fit curve, but it does not compute secondary statistics such as parameter covariances, R-value correlation, or goodness-of-fit.&lt;br /&gt;
&lt;br /&gt;
In what follows, we'll assume that Variable C is the computed regression coefficients, e.g.&lt;br /&gt;
 Variable C := Regression(Y,B,I,K)&lt;br /&gt;
&lt;br /&gt;
For each data point, the predicted expected value (from the regression) is given by &lt;br /&gt;
 Sum( C*B, K )&lt;br /&gt;
&lt;br /&gt;
However, this prediction provides only the expected value.  The [[RegressionDist]] function may be used to obtain a distribution over C, and hence a probabilistic estimate of Y.&lt;br /&gt;
&lt;br /&gt;
If you know the measurement noise in advance, then ''S'' is given and may (optionally) be indexed by I if the measurement noise varied by data point.  If you do not know s in advance, then S can be obtained from the [[RegressionNoise]] function as:&lt;br /&gt;
 [[RegressionNoise]](Y,B,I,K,C]]&lt;br /&gt;
&lt;br /&gt;
Alternatively, S may be estimated as&lt;br /&gt;
 var y2 := Sum(C*B,K);&lt;br /&gt;
 Sqrt( Sum( (Y-Y2)^2,I ) / (size(I)-size(K)) )&lt;br /&gt;
 &lt;br /&gt;
Estimating S in either of these ways assumes that the noise level is the same for each data point.&lt;br /&gt;
&lt;br /&gt;
In a generalized linear regression, the goodness of fit, or merit, is often characterized using a Chi-squared statistic, computed as:&lt;br /&gt;
 [[Sum]]( (Y-[[Sum]](C*B,K))^2 / S^2, I )&lt;br /&gt;
&lt;br /&gt;
Denoting the above as chi2, The probability that the data fit as poor as this would occur by chance is given as:&lt;br /&gt;
 [[GammaI]]( [[Size]](I)/2 - 1, chi2 / 2 )&lt;br /&gt;
This metric can be conveniently obtained using the [[RegressionFitProb]] function.&lt;br /&gt;
&lt;br /&gt;
Another set of secondary statistics are the covariances of the fitted parameters.  The covariance is an estimate of the amount of uncertainty in the parameter estimate given the available data.  As the number of data points increases (for a given basis), the variances and covariances tend to decrease.  To compute the covariances, a copy of Index K is required (since the covariance matrix is square in K); hence, you need to create a new index node defined as:&lt;br /&gt;
 [[Index..Do|Index]] K2 := [[CopyIndex]](K)&lt;br /&gt;
&lt;br /&gt;
The co-variances are then computed as:&lt;br /&gt;
 [[Invert]]( [[Sum]](B * B[K=K2] / S^2, I ), K, K2 )&lt;br /&gt;
&lt;br /&gt;
The diagonal elements of this matrix give the variance in each parameter.  Since there is only a finite number of samples, the parameter estimate may be off a bit due to random chance, even if the linear model assumption is correct; this variance indicates how much error exists from random chance at the given data set size.&lt;br /&gt;
&lt;br /&gt;
With S and CV_C (the covariance of parameters C), a distribution on the expected value of Y can be obtained for a given input X (indexded by I), using:&lt;br /&gt;
  Variable Coef := [[Gaussian]]( C, CV_C, K, K2 )&lt;br /&gt;
  Variable Y_predicted := Sum(Coef * X, K ) + Normal(0,S)&lt;br /&gt;
The [[RegressionDist]] returns the uncertain coefficients directly, and is the more convenient function to use when you wish to estimate the uncertainty in your predicted value.&lt;br /&gt;
&lt;br /&gt;
= Numeric Limitations =&lt;br /&gt;
&lt;br /&gt;
The Regression function is highly robust to the presence of redundant basis terms.  For example, if one of the basis functions is a linear combination of a subset of other basis functions, the coefficients are not unique determined.  For many other implementations of Regression (e.g., in other products), this can lead to numeric instabilities, with very large co-efficients and losses of precision from numeric round-off.  Analytica uses an SVD-based method for Regression which is extremely robust to these effects, and guarantees good results even when basis terms are redundant.&lt;br /&gt;
&lt;br /&gt;
Prior to build 4.0.0.59, this method that ensures robustness works for basis values up to about 100M.  If basis values exceed 100M, then they should be scaled prior to using Regression. Starting with build 4.0.0.59, Analytica automatically scales basis values so that large values are handled robustly as well.&lt;br /&gt;
&lt;br /&gt;
= Weighted Regression =&lt;br /&gt;
&lt;br /&gt;
Weighted regression assigns each data point a non-negative weight, where some points that are not to contribute at all are assigned a weight of zero. The weight, w, therefore is indexed by I.&lt;br /&gt;
&lt;br /&gt;
A weighted regression be interpreted as an indication that the noise level is not the same for every point, and that we have information about the relative noise level for each point.  If we assume that each point is drawn from a linear model with zero-mean noise with distribution Normal(0,s / w_i ), where s is an unknown global noise level, and w_i is the noise for the ''i''th data point.  Compare to a non-weighted regression, where we assume all points were measured with the same amount of noise, according to Normal(0,s).  A point with weight 0 has infinite standard deviation, and thus no usable information.&lt;br /&gt;
&lt;br /&gt;
The coefficients for a weighted regression are given by&lt;br /&gt;
 Regression( Y * w, B * w, I, K )&lt;br /&gt;
where Y,B,I, and K are the customary parameters to regression, and w is the relative weighting which is indexed by I.&lt;br /&gt;
&lt;br /&gt;
Using weights of 0 and 1 makes it possible to ignore certain points.  However, to ignore points where a basis term or the Y value might be NaN, you need to test for w:&lt;br /&gt;
 var Y2 := if w=0 then 0 else Y*w;&lt;br /&gt;
 var B2 := if w=0 then 0 else B*w;&lt;br /&gt;
 Regression( Y2, B2, I, K )&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
&lt;br /&gt;
* [[RegressionDist]], [[RegressionNoise]], [RegressionFitProb]]&lt;br /&gt;
* [[Logistic_Regression]], [[Probit_Regression]] : When Y is a 0,1-outcome.&lt;br /&gt;
* [[Poisson_Regression]] : When Y models a count (number of events that occur) with [[Poisson]]-distributed error.&lt;/div&gt;</summary>
		<author><name>Jdouglas</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Regression&amp;diff=8043</id>
		<title>Regression</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Regression&amp;diff=8043"/>
		<updated>2008-03-27T13:32:21Z</updated>

		<summary type="html">&lt;p&gt;Jdouglas: /* Secondary Statistics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:Data Analysis Functions]]&lt;br /&gt;
[[Category:Doc Status C]] &amp;lt;!-- For Lumina use, do not change --&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
= Regression( Y,B,I,K ) =&lt;br /&gt;
&lt;br /&gt;
Generalized Linear Regression.&lt;br /&gt;
&lt;br /&gt;
* Y : Classification value (dependent variable).  Indexed by I.&lt;br /&gt;
* B : Basis values (independent variables).  Indexed by I and K.&lt;br /&gt;
* I : Index for data points.  Each element of I corresponds to a different data point.&lt;br /&gt;
* K : Basis index.  The result has one coefficient for each element of K.&lt;br /&gt;
&lt;br /&gt;
Finds a set of coefficients, C, fitting the data so that Y at each data point is estimated by&lt;br /&gt;
 Sum(C*B,K)&lt;br /&gt;
&lt;br /&gt;
(see user guide for basic usage)&lt;br /&gt;
&lt;br /&gt;
= Details =&lt;br /&gt;
(too detailed for user guide)&lt;br /&gt;
&lt;br /&gt;
== Underconstrained Problems ==&lt;br /&gt;
&lt;br /&gt;
When you do a regression fit, the number of data points, size(I), should be greater than the number of basis terms, size(K).  When the number of data points is less than the number of basis terms, the problem is under-constrained.  Provided that there are no two data points having the same basis values but different Y values, the fit curve in an underconstrained problem will perfectly pass through all data points, however, the co-efficients in that case are not unique.  In the under-constrained case, Analytica will issue a warning, since this most likely indicates that the I and K index parameters were inadvertently swapped.  If you ignore the warning, embed the call within an [[IgnoreWarnings]] function call, or have the &amp;quot;Show Result Warnings&amp;quot; preference disabled, a set of coefficients that passes through the existing data points is arbitrarily chosen and returned.  The algorithm used is computational inefficient in the under-constrained case where size(I) &amp;lt;&amp;lt; size(K) -- i.e., the number of basis terms is much larger than the number of data points.  If you know your problem is highly underconstrained, then you probably do not intend to use a regression.&lt;br /&gt;
&lt;br /&gt;
= Secondary Statistics =&lt;br /&gt;
&lt;br /&gt;
The Regression function computes the coefficients for the best-fit curve, but it does not compute secondary statistics such as parameter covariances, R-value correlation, or goodness-of-fit.&lt;br /&gt;
&lt;br /&gt;
In what follows, we'll assume that Variable EC is the computed regression coefficients, e.g.&lt;br /&gt;
 Variable EC := Regression(Y,B,I,K)&lt;br /&gt;
&lt;br /&gt;
For each data point, the predicted expected value (from the regression) is given by &lt;br /&gt;
 Sum( C*B, K )&lt;br /&gt;
&lt;br /&gt;
However, this prediction provides only the expected value.  The [[RegressionDist]] function may be used to obtain a distribution over C, and hence a probabilistic estimate of Y.&lt;br /&gt;
&lt;br /&gt;
If you know the measurement noise in advance, then ''S'' is given and may (optionally) be indexed by I if the measurement noise varied by data point.  If you do not know s in advance, then S can be obtained from the [[RegressionNoise]] function as:&lt;br /&gt;
 [[RegressionNoise]](Y,B,I,K,C]]&lt;br /&gt;
&lt;br /&gt;
Alternatively, S may be estimated as&lt;br /&gt;
 var y2 := Sum(C*B,K);&lt;br /&gt;
 Sqrt( Sum( (Y-Y2)^2,I ) / (size(I)-size(K)) )&lt;br /&gt;
 &lt;br /&gt;
Estimating S in either of these ways assumes that the noise level is the same for each data point.&lt;br /&gt;
&lt;br /&gt;
In a generalized linear regression, the goodness of fit, or merit, is often characterized using a Chi-squared statistic, computed as:&lt;br /&gt;
 [[Sum]]( (Y-[[Sum]](C*B,K))^2 / S^2, I )&lt;br /&gt;
&lt;br /&gt;
Denoting the above as chi2, The probability that the data fit as poor as this would occur by chance is given as:&lt;br /&gt;
 [[GammaI]]( [[Size]](I)/2 - 1, chi2 / 2 )&lt;br /&gt;
This metric can be conveniently obtained using the [[RegressionFitProb]] function.&lt;br /&gt;
&lt;br /&gt;
Another set of secondary statistics are the covariances of the fitted parameters.  The covariance is an estimate of the amount of uncertainty in the parameter estimate given the available data.  As the number of data points increases (for a given basis), the variances and covariances tend to decrease.  To compute the covariances, a copy of Index K is required (since the covariance matrix is square in K); hence, you need to create a new index node defined as:&lt;br /&gt;
 [[Index..Do|Index]] K2 := [[CopyIndex]](K)&lt;br /&gt;
&lt;br /&gt;
The co-variances are then computed as:&lt;br /&gt;
 [[Invert]]( [[Sum]](B * B[K=K2] / S^2, I ), K, K2 )&lt;br /&gt;
&lt;br /&gt;
The diagonal elements of this matrix give the variance in each parameter.  Since there is only a finite number of samples, the parameter estimate may be off a bit due to random chance, even if the linear model assumption is correct; this variance indicates how much error exists from random chance at the given data set size.&lt;br /&gt;
&lt;br /&gt;
With S and CV_C (the covariance of parameters C), a distribution on the expected value of Y can be obtained for a given input X (indexded by I), using:&lt;br /&gt;
  Variable Coef := [[Gaussian]]( C, CV_C, K, K2 )&lt;br /&gt;
  Variable Y_predicted := Sum(Coef * X, K ) + Normal(0,S)&lt;br /&gt;
The [[RegressionDist]] returns the uncertain coefficients directly, and is the more convenient function to use when you wish to estimate the uncertainty in your predicted value.&lt;br /&gt;
&lt;br /&gt;
= Numeric Limitations =&lt;br /&gt;
&lt;br /&gt;
The Regression function is highly robust to the presence of redundant basis terms.  For example, if one of the basis functions is a linear combination of a subset of other basis functions, the coefficients are not unique determined.  For many other implementations of Regression (e.g., in other products), this can lead to numeric instabilities, with very large co-efficients and losses of precision from numeric round-off.  Analytica uses an SVD-based method for Regression which is extremely robust to these effects, and guarantees good results even when basis terms are redundant.&lt;br /&gt;
&lt;br /&gt;
Prior to build 4.0.0.59, this method that ensures robustness works for basis values up to about 100M.  If basis values exceed 100M, then they should be scaled prior to using Regression. Starting with build 4.0.0.59, Analytica automatically scales basis values so that large values are handled robustly as well.&lt;br /&gt;
&lt;br /&gt;
= Weighted Regression =&lt;br /&gt;
&lt;br /&gt;
Weighted regression assigns each data point a non-negative weight, where some points that are not to contribute at all are assigned a weight of zero. The weight, w, therefore is indexed by I.&lt;br /&gt;
&lt;br /&gt;
A weighted regression be interpreted as an indication that the noise level is not the same for every point, and that we have information about the relative noise level for each point.  If we assume that each point is drawn from a linear model with zero-mean noise with distribution Normal(0,s / w_i ), where s is an unknown global noise level, and w_i is the noise for the ''i''th data point.  Compare to a non-weighted regression, where we assume all points were measured with the same amount of noise, according to Normal(0,s).  A point with weight 0 has infinite standard deviation, and thus no usable information.&lt;br /&gt;
&lt;br /&gt;
The coefficients for a weighted regression are given by&lt;br /&gt;
 Regression( Y * w, B * w, I, K )&lt;br /&gt;
where Y,B,I, and K are the customary parameters to regression, and w is the relative weighting which is indexed by I.&lt;br /&gt;
&lt;br /&gt;
Using weights of 0 and 1 makes it possible to ignore certain points.  However, to ignore points where a basis term or the Y value might be NaN, you need to test for w:&lt;br /&gt;
 var Y2 := if w=0 then 0 else Y*w;&lt;br /&gt;
 var B2 := if w=0 then 0 else B*w;&lt;br /&gt;
 Regression( Y2, B2, I, K )&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
&lt;br /&gt;
* [[RegressionDist]], [[RegressionNoise]], [RegressionFitProb]]&lt;br /&gt;
* [[Logistic_Regression]], [[Probit_Regression]] : When Y is a 0,1-outcome.&lt;br /&gt;
* [[Poisson_Regression]] : When Y models a count (number of events that occur) with [[Poisson]]-distributed error.&lt;/div&gt;</summary>
		<author><name>Jdouglas</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Regression&amp;diff=8042</id>
		<title>Regression</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Regression&amp;diff=8042"/>
		<updated>2008-03-26T20:05:26Z</updated>

		<summary type="html">&lt;p&gt;Jdouglas: /* Regression( Y,B,I,K ) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:Data Analysis Functions]]&lt;br /&gt;
[[Category:Doc Status C]] &amp;lt;!-- For Lumina use, do not change --&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
= Regression( Y,B,I,K ) =&lt;br /&gt;
&lt;br /&gt;
Generalized Linear Regression.&lt;br /&gt;
&lt;br /&gt;
* Y : Classification value (dependent variable).  Indexed by I.&lt;br /&gt;
* B : Basis values (independent variables).  Indexed by I and K.&lt;br /&gt;
* I : Index for data points.  Each element of I corresponds to a different data point.&lt;br /&gt;
* K : Basis index.  The result has one coefficient for each element of K.&lt;br /&gt;
&lt;br /&gt;
Finds a set of coefficients, C, fitting the data so that Y at each data point is estimated by&lt;br /&gt;
 Sum(C*B,K)&lt;br /&gt;
&lt;br /&gt;
(see user guide for basic usage)&lt;br /&gt;
&lt;br /&gt;
= Details =&lt;br /&gt;
(too detailed for user guide)&lt;br /&gt;
&lt;br /&gt;
== Underconstrained Problems ==&lt;br /&gt;
&lt;br /&gt;
When you do a regression fit, the number of data points, size(I), should be greater than the number of basis terms, size(K).  When the number of data points is less than the number of basis terms, the problem is under-constrained.  Provided that there are no two data points having the same basis values but different Y values, the fit curve in an underconstrained problem will perfectly pass through all data points, however, the co-efficients in that case are not unique.  In the under-constrained case, Analytica will issue a warning, since this most likely indicates that the I and K index parameters were inadvertently swapped.  If you ignore the warning, embed the call within an [[IgnoreWarnings]] function call, or have the &amp;quot;Show Result Warnings&amp;quot; preference disabled, a set of coefficients that passes through the existing data points is arbitrarily chosen and returned.  The algorithm used is computational inefficient in the under-constrained case where size(I) &amp;lt;&amp;lt; size(K) -- i.e., the number of basis terms is much larger than the number of data points.  If you know your problem is highly underconstrained, then you probably do not intend to use a regression.&lt;br /&gt;
&lt;br /&gt;
= Secondary Statistics =&lt;br /&gt;
&lt;br /&gt;
The Regression function computes the coefficients for the best-fit curve, but it does not compute secondary statistics such as parameter covariances, R-value correlation, or goodness-of-fit.&lt;br /&gt;
&lt;br /&gt;
In what follows, we'll assume that Variable EC is the computed regression coefficients, e.g.&lt;br /&gt;
 Variable C := Regression(Y,B,I,K)&lt;br /&gt;
&lt;br /&gt;
For each data point, the predicted expected value (from the regression) is given by &lt;br /&gt;
 Sum( C*B, K )&lt;br /&gt;
&lt;br /&gt;
However, this prediction provides only the expected value.  The [[RegressionDist]] function may be used to obtain a distribution over C, and hence a probabilistic estimate of Y.&lt;br /&gt;
&lt;br /&gt;
If you know the measurement noise in advance, then ''S'' is given and may (optionally) be indexed by I if the measurement noise varied by data point.  If you do not know s in advance, then S can be obtained from the [[RegressionNoise]] function as:&lt;br /&gt;
 [[RegressionNoise]](Y,B,I,K,C]]&lt;br /&gt;
&lt;br /&gt;
Alternatively, S may be estimated as&lt;br /&gt;
 var y2 := Sum(C*B,K);&lt;br /&gt;
 Sqrt( Sum( (Y-Y2)^2,I ) / (size(I)-size(K)) )&lt;br /&gt;
 &lt;br /&gt;
Estimating S in either of these ways assumes that the noise level is the same for each data point.&lt;br /&gt;
&lt;br /&gt;
In a generalized linear regression, the goodness of fit, or merit, is often characterized using a Chi-squared statistic, computed as:&lt;br /&gt;
 [[Sum]]( (Y-[[Sum]](C*B,K))^2 / S^2, I )&lt;br /&gt;
&lt;br /&gt;
Denoting the above as chi2, The probability that the data fit as poor as this would occur by chance is given as:&lt;br /&gt;
 [[GammaI]]( [[Size]](I)/2 - 1, chi2 / 2 )&lt;br /&gt;
This metric can be conveniently obtained using the [[RegressionFitProb]] function.&lt;br /&gt;
&lt;br /&gt;
Another set of secondary statistics are the covariances of the fitted parameters.  The covariance is an estimate of the amount of uncertainty in the parameter estimate given the available data.  As the number of data points increases (for a given basis), the variances and covariances tend to decrease.  To compute the covariances, a copy of Index K is required (since the covariance matrix is square in K); hence, you need to create a new index node defined as:&lt;br /&gt;
 [[Index..Do|Index]] K2 := [[CopyIndex]](K)&lt;br /&gt;
&lt;br /&gt;
The co-variances are then computed as:&lt;br /&gt;
 [[Invert]]( [[Sum]](B * B[K=K2] / S^2, I ), K, K2 )&lt;br /&gt;
&lt;br /&gt;
The diagonal elements of this matrix give the variance in each parameter.  Since there is only a finite number of samples, the parameter estimate may be off a bit due to random chance, even if the linear model assumption is correct; this variance indicates how much error exists from random chance at the given data set size.&lt;br /&gt;
&lt;br /&gt;
With S and CV_C (the covariance of parameters C), a distribution on the expected value of Y can be obtained for a given input X (indexded by I), using:&lt;br /&gt;
  Variable Coef := [[Gaussian]]( C, CV_C, K, K2 )&lt;br /&gt;
  Variable Y_predicted := Sum(Coef * X, K ) + Normal(0,S)&lt;br /&gt;
The [[RegressionDist]] returns the uncertain coefficients directly, and is the more convenient function to use when you wish to estimate the uncertainty in your predicted value.&lt;br /&gt;
&lt;br /&gt;
= Numeric Limitations =&lt;br /&gt;
&lt;br /&gt;
The Regression function is highly robust to the presence of redundant basis terms.  For example, if one of the basis functions is a linear combination of a subset of other basis functions, the coefficients are not unique determined.  For many other implementations of Regression (e.g., in other products), this can lead to numeric instabilities, with very large co-efficients and losses of precision from numeric round-off.  Analytica uses an SVD-based method for Regression which is extremely robust to these effects, and guarantees good results even when basis terms are redundant.&lt;br /&gt;
&lt;br /&gt;
Prior to build 4.0.0.59, this method that ensures robustness works for basis values up to about 100M.  If basis values exceed 100M, then they should be scaled prior to using Regression. Starting with build 4.0.0.59, Analytica automatically scales basis values so that large values are handled robustly as well.&lt;br /&gt;
&lt;br /&gt;
= Weighted Regression =&lt;br /&gt;
&lt;br /&gt;
Weighted regression assigns each data point a non-negative weight, where some points that are not to contribute at all are assigned a weight of zero. The weight, w, therefore is indexed by I.&lt;br /&gt;
&lt;br /&gt;
A weighted regression be interpreted as an indication that the noise level is not the same for every point, and that we have information about the relative noise level for each point.  If we assume that each point is drawn from a linear model with zero-mean noise with distribution Normal(0,s / w_i ), where s is an unknown global noise level, and w_i is the noise for the ''i''th data point.  Compare to a non-weighted regression, where we assume all points were measured with the same amount of noise, according to Normal(0,s).  A point with weight 0 has infinite standard deviation, and thus no usable information.&lt;br /&gt;
&lt;br /&gt;
The coefficients for a weighted regression are given by&lt;br /&gt;
 Regression( Y * w, B * w, I, K )&lt;br /&gt;
where Y,B,I, and K are the customary parameters to regression, and w is the relative weighting which is indexed by I.&lt;br /&gt;
&lt;br /&gt;
Using weights of 0 and 1 makes it possible to ignore certain points.  However, to ignore points where a basis term or the Y value might be NaN, you need to test for w:&lt;br /&gt;
 var Y2 := if w=0 then 0 else Y*w;&lt;br /&gt;
 var B2 := if w=0 then 0 else B*w;&lt;br /&gt;
 Regression( Y2, B2, I, K )&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
&lt;br /&gt;
* [[RegressionDist]], [[RegressionNoise]], [RegressionFitProb]]&lt;br /&gt;
* [[Logistic_Regression]], [[Probit_Regression]] : When Y is a 0,1-outcome.&lt;br /&gt;
* [[Poisson_Regression]] : When Y models a count (number of events that occur) with [[Poisson]]-distributed error.&lt;/div&gt;</summary>
		<author><name>Jdouglas</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=Attributes&amp;diff=4924</id>
		<title>Attributes</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=Attributes&amp;diff=4924"/>
		<updated>2007-06-09T01:16:56Z</updated>

		<summary type="html">&lt;p&gt;Jdouglas: /* NodeFontColor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(Up to [[Analytica Reference]])&lt;br /&gt;
&lt;br /&gt;
= Attribute Reference =&lt;br /&gt;
&lt;br /&gt;
== Internal Engine ==&lt;br /&gt;
&lt;br /&gt;
=== Att_versionRange ===&lt;br /&gt;
=== Att_canBeIn ===&lt;br /&gt;
&lt;br /&gt;
=== Att_dirties ===&lt;br /&gt;
=== Att_showable ===&lt;br /&gt;
=== Att_saveAlways ===&lt;br /&gt;
=== Att_recordSysFunDependencies ===&lt;br /&gt;
=== Att_Saveable ===&lt;br /&gt;
=== Att_attributeType ===&lt;br /&gt;
=== Att_readOnly ===&lt;br /&gt;
=== Att_domainKids, Att_domainParents ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UI State ==&lt;br /&gt;
&lt;br /&gt;
=== Att_resultSlicerState ===&lt;br /&gt;
&lt;br /&gt;
(new to 4.0) &lt;br /&gt;
&lt;br /&gt;
=== Att_editSlicerState ===&lt;br /&gt;
&lt;br /&gt;
(new to 4.0)&lt;br /&gt;
&lt;br /&gt;
== NodeFontColor ==&lt;br /&gt;
&lt;br /&gt;
(new to 4.0)&lt;br /&gt;
&lt;br /&gt;
Controls the font color of a node in a diagram.  There is no user-interface mechanism to set this, changing the font color of a node must be done through typescript.  The attribute consists of three comma-separated integers, encoding Red, Green, and Blue components, with each integer being in the range of 0 to 65535.  For example, the following renders the Secured_Revenues variable node using green characters:&lt;br /&gt;
&lt;br /&gt;
 NodeFontColor Secured_Revenues : 0,65535,0&lt;br /&gt;
&lt;br /&gt;
== Graphing ==&lt;br /&gt;
&lt;br /&gt;
=== xyExpr ===&lt;br /&gt;
&lt;br /&gt;
Contains one external/exogenous value expression.  Recognized by Analytica 3.1 an earlier, where the expression for the X value in an XY graph was stored.  &lt;br /&gt;
&lt;br /&gt;
=== Att_exogenousValue ===&lt;br /&gt;
&lt;br /&gt;
(new to 4.0)&lt;br /&gt;
Holds a list of external values for a result window, which can then be used as graphing dimensions.  Analytica 4.0 allows more than one external value to be brought in for plotting against the primary result of a variable.  This attribute holds a list of expressions -- most commonly, each expression consists of a single variable identifier.&lt;br /&gt;
&lt;br /&gt;
The xyExpr may also contain one addition external expression.  (The reason it is split across two attributes is for greater 3.1 interoperability).&lt;br /&gt;
&lt;br /&gt;
=== Att_indexRange ===&lt;br /&gt;
=== Att_valueRange ===&lt;br /&gt;
&lt;br /&gt;
=== Att_continuousLineStyle ===&lt;br /&gt;
=== Att_categoricaLineStyle ===&lt;br /&gt;
=== Att_stackedBar ===&lt;br /&gt;
=== Att_stackedLine ===&lt;br /&gt;
=== Att_barOverlap ====&lt;br /&gt;
&lt;br /&gt;
=== Graphing Role Attributes ===&lt;br /&gt;
&lt;br /&gt;
(new to 4.0)&lt;br /&gt;
&lt;br /&gt;
These attributes are: '''Att_xRole''', '''Att_yRole''', '''Att_colorRole''', '''Att_symbolRole''', '''Att_symbolSizeRole''', '''Att_originRole'''.&lt;br /&gt;
&lt;br /&gt;
These attributes, in coordination with the '''reformVal''' attribute, define the current graphing pivot.  The settings in these attributes are combined with the current chart type, dimensions present in the current value (or values), etc., and Analytica may adjust the pivot actually shown to create a consistent set of roles.  Since the dimensionality of results can change in Analytica (as upstream dimensions or added or removed, the view type can be changed, or the number of elements in a dimension may change), the exact pivot used the previous time the graph was displayed may no longer be sensible.  However, when possible, the roles defined in these attributes do become the roles used in the graph.&lt;br /&gt;
&lt;br /&gt;
Each of these role attributes can hold values in several possible forms:&lt;br /&gt;
* '''Self''': The keyword Self indicates that the main result fills the role.&lt;br /&gt;
* '''barOrigin''': The attribute name barOrigin indicates that the expression found in the legacy barOrigin attribute fills the role.&lt;br /&gt;
* '''xyExpr''': The attribute name indicates that the expression found in the xyExpr attribute fills the role.&lt;br /&gt;
* ''identifier'' : The identifier indicates that the index having this identifier fills the role.&lt;br /&gt;
* '''Sys_LocalIndex(&amp;quot;''name''&amp;quot;)''': Syntax indicating that the local index having the indicated name is used.&lt;br /&gt;
* '''Sys_CoordIndex(''value'')''' : The slice of the main result corresponding to ''[CoordIndex=value]'' is used, where ''value'' is an element of the coordinate index.&lt;br /&gt;
* 0 : The numeric value zero indicates that the main result is used (same as Self).&lt;br /&gt;
* n &amp;gt; 0:  A positive integer value indicates that an external value is used.  Several exogenous values may be attached to the result view (see '''Att_exogenousValues''' and '''xyExpr''' attributes).  These are numbered, with the xyExpr always being n=1 if present, and then the remaining continuing in order through those listed in Att_exogenousValues, and finally the legacy barOrigin attribute expression coming last.&lt;br /&gt;
* n &amp;lt; 0: A negative integer value identifies a coordinate index slice by position.  The role uses the slice of the main result corresponding to ''[@CoordIndex=abs(n)]''.&lt;br /&gt;
&lt;br /&gt;
Also '''barOrigin'''.&lt;br /&gt;
&lt;br /&gt;
== Tables ==&lt;br /&gt;
&lt;br /&gt;
* [[TableCellDefault]]&lt;br /&gt;
* [[CorrespondenceMethod]]&lt;/div&gt;</summary>
		<author><name>Jdouglas</name></author>
	</entry>
	<entry>
		<id>https://docs.analytica.com/index.php?title=File:Ips_ca.jpg&amp;diff=2795</id>
		<title>File:Ips ca.jpg</title>
		<link rel="alternate" type="text/html" href="https://docs.analytica.com/index.php?title=File:Ips_ca.jpg&amp;diff=2795"/>
		<updated>2007-02-09T13:28:11Z</updated>

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