<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2enclosuresfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>From a Logical Point of View</title><link>http://www.jiangtanghu.com/blog</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/jiangtanghu" /><description>Hello World by A SAS programmer</description><language>en</language><lastBuildDate>Sun, 12 Feb 2012 08:16:49 PST</lastBuildDate><generator>http://wordpress.org/?v=3.3.1</generator><sy:updatePeriod xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">hourly</sy:updatePeriod><sy:updateFrequency xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">1</sy:updateFrequency><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/jiangtanghu" /><feedburner:info uri="jiangtanghu" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-nc-sa/3.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /><feedburner:emailServiceId>jiangtanghu</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item><title>Column Mode in SAS 9.3 Enhanced Editor</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/QUIdjRHeTpE/</link><category>SAS</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Sun, 12 Feb 2012 08:05:28 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/?p=508</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><font size="1">A Sunday finding, <a href="http://support.sas.com/documentation/cdl/en/hostwin/63047/HTML/default/viewer.htm#editor_enhanced.htm" target="_blank">column mode</a> new in SAS 9.3 Enhanced Editor (in Windows OS): </font></p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2012/02/column_SAS_editor.png"><img style="background-image: none; border-right-width: 0px; margin: 3px auto 5px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="column_SAS_editor" border="0" alt="column_SAS_editor" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2012/02/column_SAS_editor_thumb.png" width="439" height="207" /></a></p>
<p>
<p><font size="1">Currently this column mode only supports selecting (highlighting) but not editing. Hoo, it’s better than nothing.</font></p></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=QUIdjRHeTpE:ZehM6edNm-I:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=QUIdjRHeTpE:ZehM6edNm-I:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=QUIdjRHeTpE:ZehM6edNm-I:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=QUIdjRHeTpE:ZehM6edNm-I:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=QUIdjRHeTpE:ZehM6edNm-I:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=QUIdjRHeTpE:ZehM6edNm-I:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/QUIdjRHeTpE" height="1" width="1"/>]]></content:encoded><description>A Sunday finding, column mode new in SAS 9.3 Enhanced Editor (in Windows OS): Currently this column mode only supports selecting (highlighting) but not editing. Hoo, it’s better than nothing.</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2012/02/12/column-mode-in-sas-9-3-enhanced-editor/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2012/02/12/column-mode-in-sas-9-3-enhanced-editor/</feedburner:origLink></item><item><title>Face Off: Review OpenCDISC XML files</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/9mvEDlmrgqE/</link><category>CDISC</category><category>SAS</category><category>XML</category><category>Excel</category><category>Notepad++</category><category>Open Source</category><category>OpenCDISC</category><category>SAS XML Mapper</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Sat, 11 Feb 2012 13:35:35 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/?p=479</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><a href="http://www.opencdisc.org/" target="_blank"><font size="1">OpenCDISC</font></a><font size="1">, the first open source CDISC validator, is already in the toolbox of FDA reviewers (CDER/CBER, see <em><a href="http://www.cdisc.org/stuff/contentmgr/files/0/8d99d69f1195d2a2954e62d2fbb3470f/misc/cdisc_standards_in_fda_submissions_2012_01_26pdf.pdf" target="_blank">CDISC Standards in the Regulatory Submission Process</a></em>, 26 January 2012, P.33). The key features in OpenCDISC is a <a href="http://www.opencdisc.org/projects/validator/opencdisc-validation-framework" target="_blank">dichotomy of validation rules (XML based) and application logic</a>. </font><font size="1">Currently OpenCDISC Validator (<a href="http://www.opencdisc.org/download" target="_blank">Version 1.2.1</a>) officially supports the four following CDISC modules:</font></p>
<ul>
<ul>
<li><a href="http://www.opencdisc.org/projects/validator/cdisc-sdtm-3.1.2-validation-rules">SDTM 3.1.2</a> </li>
<li><a href="http://www.opencdisc.org/projects/validator/cdisc-sdtm-3.1.1-validation-rules">SDTM 3.1.1</a> </li>
<li><a href="http://www.opencdisc.org/projects/validator/cdisc-define.xml-1.0-validation-rules">Define.xml 1.0</a> </li>
<li><a href="http://www.opencdisc.org/projects/validator/cdisc-adam-1.0-validation-rules">ADaM 1.0</a> </li>
</ul>
</ul>
<p><font size="2"></font></p>
<p><font size="1">You can get the corresponding configuration files (validation rules) </font><a href="http://www.opencdisc.org/download" target="_blank"><font size="1">online</font></a><font size="1"> or in the software folder (in ..<em>\opencdisc-validator\config </em>with extension of .xml). Since SDTM 3.1.2 has the most rich set of validation rules from Janus, WebSDM and of course additional&#160; OpenCDISC rules by itself, its configuration file (<em><a href="http://www.opencdisc.org/downloads/config/config-sdtm-3.1.2-v1.2.zip" target="_blank">config-sdtm-3.1.2.xml</a></em>) deserves more attention. Better understanding of <a href="http://www.opencdisc.org/downloads/config/config-sdtm-3.1.2-v1.2.zip" target="_blank"><em>config-sdtm-3.1.2.xml</em></a><em>&#160;</em>is the first step to customize the software according to business needs. Followings are some personal tips and tricks to play and even “torture” the file, using Notepad++, web browsers (IE and Firefox), Excel with MSXML and SAS XML Mapper. </font></p>
<h1>1. DON’T use the Windows default Notepad to open and edit the xml file</h1>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2012/02/XML_Notepad2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 3px auto 5px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="XML_Notepad" border="0" alt="XML_Notepad" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2012/02/XML_Notepad_thumb2.png" width="453" height="275" /></a><font size="1"></font></p>
<p><font size="1">while the reason:</font></p>
<blockquote><p><font size="1">if you use Notepad to open a XML file, almost you get nothing but strings and strings.</font></p>
</blockquote>
<p><font size="1">and another supporting reason, see bellowing picture.</font></p>
<h1>2. USE <a href="http://notepad-plus-plus.org/" target="_blank">Notepad++</a> or other REAL text editors to open and edit it</h1>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2012/02/XML_Notepad3.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 3px auto 5px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="XML_Notepad  " border="0" alt="XML_Notepad  " src="http://www.jiangtanghu.com/blog/wp-content/uploads/2012/02/XML_Notepad_thumb3.png" width="441" height="321" /></a></p>
<p><font size="1">Notepad++ makes the difference. It supports multiple tabs view, XML syntax highlighting and XML tags match and other fancy stuff never in the plain Notepad. And like OpenCDISC, it’s free, both in sense of free beer and free speech.</font></p>
<p><font size="1">Other real text editor, include Vim, UltraEdit and such, but for most users, I still think Notepad++ is the most handy one.</font></p>
<h1>3. At first, use a web browsers to review it</h1>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2012/02/XML_IE1.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 3px auto 5px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="XML_IE" border="0" alt="XML_IE" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2012/02/XML_IE_thumb1.png" width="423" height="398" /></a></p>
<p><font size="1">It is the web view of <a href="http://www.opencdisc.org/downloads/config/config-sdtm-3.1.2-v1.2.zip" target="_blank"><em>config-sdtm-3.1.2.xml</em></a><em>. </em>The secret is a style file, <strong>define-1.0.xsl</strong> in ..\opencdisc-validator\config\schematron. This is another story of dichotomy. The <a href="http://www.opencdisc.org/downloads/config/config-sdtm-3.1.2-v1.2.zip" target="_blank"><em>config-sdtm-3.1.2.xml</em></a> file itself is only used to store metadata (machine-readable), while the style file (also a XML file) used to instruct how to display it (human-readable). Within some proper internal interface, web browsers (I tested in IE and Firefox; Google Chrome doesn’t work). Excel can also render this XML file well (only test on Excel 2010 and 2007) while </font><font size="1">Web view is much better</font><font size="1">:</font></p>
<p><font size="1"><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2012/02/XML_Excel.png"><img style="background-image: none; border-right-width: 0px; margin: 3px auto 5px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="XML_Excel" border="0" alt="XML_Excel" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2012/02/XML_Excel_thumb.png" width="401" height="577" /></a></font></p>
<p><font size="1"></font></p>
<p><font size="1"></font></p>
<p><font size="1"></font></p>
<p><font size="1"></font></p>
<p><font size="1"></font></p>
<p><font size="1"></font></p>
<p><font size="1"></font></p>
<p><font size="1"></font></p>
<p><font size="1"></font></p>
<p><font size="1"></font></p>
<p><font size="1"></font></p>
<p><font size="1"></font></p>
<p><font size="1"></font></p>
<h1>4. The real awesome job: use Microsoft XML parser or other XML parsers to dig into XML structure</h1>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2012/02/XML_Tags_Excel1.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 3px auto 5px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="XML_Tags_Excel" border="0" alt="XML_Tags_Excel" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2012/02/XML_Tags_Excel_thumb1.png" width="406" height="622" /></a></p>
<p><font size="1">I use Excel 2010 with Microsoft XML parser (<a href="http://en.wikipedia.org/wiki/MSXML" target="_blank"><em>MSXML 6.0</em></a><em>. </em>You can get the version of your MSXML by visiting <a href="http://home.arcor.de/martin.honnen/xslt/processorTest.xml" target="_blank">this website</a> in IE and you will get the different results when switching to other web browsers because Firefox and Chrome use other parsers). </font></p>
<p><font size="1">You can also get a instance of each XML tag:</font></p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2012/02/XML_Tags_Excel_preview1.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 3px auto 5px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="XML_Tags_Excel_preview" border="0" alt="XML_Tags_Excel_preview" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2012/02/XML_Tags_Excel_preview_thumb1.png" width="416" height="640" /></a></p>
<h1>5. The real awesome job: use SAS XML Mapper to get the tabulation view</h1>
<p><font size="1">And you may want to exact all the tables in the XML file with tabulation view, ideally, in SAS dataset:</font></p>
<p><font size="1">For example, the first few rows in <em>config-sdtm-3.1.2.xml</em>:</font></p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2012/02/ODM_xml_tab1.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 3px auto 5px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="ODM_xml_tab" border="0" alt="ODM_xml_tab" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2012/02/ODM_xml_tab_thumb1.png" width="399" height="148" /></a></p>
<p>and the corresponding SAS dataset:</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2012/02/ODM_tab1.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 3px auto 5px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="ODM_tab" border="0" alt="ODM_tab" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2012/02/ODM_tab_thumb1.png" width="414" height="48" /></a></p>
<p><font size="1"></font></p>
<p><font size="1">Actually you can put all the data in XML into a big dataset but with lots of redundancies. To use SAS XML Mapper (the latest version is 9.3), you should design a mapping file to tell the structure of the XML file. For the simple ODM dataset, you indicate the table name, column name and path, type and length:</font></p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2012/02/map.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 3px auto 5px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="map" border="0" alt="map" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2012/02/map_thumb.png" width="357" height="150" /></a></p>
<p><font size="1">It never be fun to play with XML files. SAS XML Mapper is supposed to read CDISC ODM based XML files automatically (OpenCDISC XML files are called ODM compliant), but at least for this config-sdtm-3.1.2.xml, it failed and that’s why we should create a mapping file (<em>see above</em>) by ourselves. Fortunately you don’t need to write it from scratch (it would be thousands of lines of codes):</font></p>
<ul>
<li><font size="1">find a CDISC ODM based XML file that SAS XML Mapper can read automatically, e.g., in <a href="http://www.cdisc.org/define-xml">http://www.cdisc.org/define-xml</a>, a file named <em>define-example1.xml</em> works well.</font> </li>
<li><font size="1">use AutoMap function in SAS XML Mapper to get the mapping file.</font> </li>
<li><font size="1">modify the mapping file to fit your needs.</font> </li>
<li><font size="1">for details, refer SAS XML mapping syntax.</font> </li>
</ul>
<h1>6. Final Notes for Excel</h1>
<p><font size="1">Right click <a href="http://www.opencdisc.org/downloads/config/config-sdtm-3.1.2-v1.2.zip" target="_blank"><em>config-sdtm-3.1.2.xml</em></a> then open with “Microsoft Excel”:</font></p>
<p><font size="1"><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2012/02/Excel11.png"><img style="background-image: none; border-right-width: 0px; margin: 3px auto 5px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Excel1" border="0" alt="Excel1" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2012/02/Excel1_thumb1.png" width="412" height="163" /></a></font></p>
<p><font size="1">Option 2 will go to section 3. If go with option 1:</font></p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2012/02/Excel21.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 3px auto 5px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="Excel2" border="0" alt="Excel2" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2012/02/Excel2_thumb1.png" width="320" height="181" /></a></p>
<p><font size="1">Option 1-1 and 1-2:&#160;&#160; tabulation view in section 5</font></p>
<p><font size="1">Option&#160; </font><font size="1">1-3:&#160; tag view in section 4.</font></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=9mvEDlmrgqE:NY08IGJi9fs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=9mvEDlmrgqE:NY08IGJi9fs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=9mvEDlmrgqE:NY08IGJi9fs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=9mvEDlmrgqE:NY08IGJi9fs:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=9mvEDlmrgqE:NY08IGJi9fs:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=9mvEDlmrgqE:NY08IGJi9fs:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/9mvEDlmrgqE" height="1" width="1"/>]]></content:encoded><description>OpenCDISC, the first open source CDISC validator, is already in the toolbox of FDA reviewers (CDER/CBER, see CDISC Standards in the Regulatory Submission Process, 26 January 2012, P.33). The key features in OpenCDISC is a dichotomy of validation rules (XML based) and application logic. Currently OpenCDISC Validator (Version 1.2.1) officially supports the four following CDISC [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2012/02/11/xml/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2012/02/11/xml/</feedburner:origLink></item><item><title>Happy New Year (Yes Again)</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/Xyezu3kDuho/</link><category>misc</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Mon, 23 Jan 2012 20:06:11 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/?p=443</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Then I feel great to reset my year of 2012 as brand new one.</p>
<p>Today, Jan 23, is the first day of <a href="http://en.wikipedia.org/wiki/Chinese_New_Year">Chinese New Year</a>, and it is Monday, the first day of work week&#8211;it is always joyful to have such coincidence<span style="font-family: Wingdings;">J</span>. HAPPY NEW YEAR!</p>
<p>I had a big move this year. Actually I passed through multiply new years of 2012: I took my flight from Beijing in Jan 1 (<span style="font-size: 7pt;"><em>happy new year!</em></span>) and landed in Raleigh, North Carolina also in the same day due to the time difference among China and US where I take a new job as a Life Sciences Consultant at <a href="http://www.d-wise.com/">d-Wise Technologies</a>. I&#8217;m not supposed to be a pure SAS programmer any more, but I don&#8217;t want to change the theme of my blog (&#8220;<a href="http://www.jiangtanghu.com/blog/"><em>Hello World by A SAS Programmer</em></a>&#8220;) since my most handy language is still SAS while my role will expose me more SAS products and solutions.</p>
<p>Chinese New Year is also called &#8220;Spring Festival&#8221; and &#8220;spring&#8221; is always the key word for the holiday:</p>
<p style="text-align: center;"><img class="aligncenter" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2012/01/012412_0406_HappyNewYea11.png" alt="" width="404" height="262" /></p>
<p style="text-align: center;"><span style="font-size: 8pt;">(Chinese Characters for &#8220;the Beauty of Spring&#8221;. I wrote these years before in Beijing)<br />
</span></p>
<p>And I also want to spread my spring greetings with few sentences from Walt Whitman, <em>These I Singing in Spring</em>:</p>
<p style="margin-left: 36pt;">THESE, I, singing in spring, collect for lovers,</p>
<p style="margin-left: 36pt;">. . .</p>
<p style="margin-left: 36pt;">Collecting, I traverse the garden, the world—but soon</p>
<p style="margin-left: 36pt;">I pass the gates,</p>
<p style="margin-left: 36pt;">Now along the pond-side—now wading in a little, fearing not the wet,</p>
<p style="margin-left: 36pt;">Now by the post-and-rail fences, where the old stones</p>
<p style="margin-left: 36pt;">thrown there, pick&#8217;d from the fields, have accumulated,</p>
<p style="margin-left: 36pt;">(Wild-flowers and vines and weeds come up through</p>
<p style="margin-left: 36pt;">the stones, and partly cover them—Beyond these I pass,)</p>
<p style="margin-left: 36pt;">Far, far in the forest, before I think where I go,</p>
<p style="margin-left: 36pt;">Solitary, smelling the earthy smell, stopping now and then in the silence,</p>
<p style="margin-left: 36pt;">Alone I had thought—yet soon a troop gathers around me,</p>
<p style="margin-left: 36pt;">Some walk by my side, and some behind, and some embrace my arms or neck,</p>
<p style="margin-left: 36pt;">They, the spirits of dear friends, dead or alive—thicker</p>
<p style="margin-left: 36pt;">they come, a great crowd, and I in the middle,</p>
<p style="margin-left: 36pt;">Collecting, dispensing, singing in spring, there I wander with them,</p>
<p style="margin-left: 36pt;">Plucking something for tokens—tossing toward whoever is near me;</p>
<p style="margin-left: 36pt;">. . .</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=Xyezu3kDuho:ezx00IgYR9M:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=Xyezu3kDuho:ezx00IgYR9M:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=Xyezu3kDuho:ezx00IgYR9M:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=Xyezu3kDuho:ezx00IgYR9M:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=Xyezu3kDuho:ezx00IgYR9M:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=Xyezu3kDuho:ezx00IgYR9M:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/Xyezu3kDuho" height="1" width="1"/>]]></content:encoded><description>Then I feel great to reset my year of 2012 as brand new one. Today, Jan 23, is the first day of Chinese New Year, and it is Monday, the first day of work week&amp;#8211;it is always joyful to have such coincidenceJ. HAPPY NEW YEAR! I had a big move this year. Actually I passed [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2012/01/24/happy-new-year-yes-again/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2012/01/24/happy-new-year-yes-again/</feedburner:origLink></item><item><title>Vim as A SAS IDE</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/JYKX2uphHPo/</link><category>SAS</category><category>IDE</category><category>VIM</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Sat, 12 Nov 2011 19:11:14 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2011/11/13/vim-as-a-sas-ide/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Few configurations (just copy this <a href="http://jiangtanghu.com/docs/en/sas.vim" target="_blank"><em>sas.vim</em></a> file to <em>C:\Program Files\vim\vim73\syntax</em> if you also use <a href="ftp://ftp.vim.org/pub/vim/pc/gvim73_46.ex" target="_blank">gVIM 7.3</a> at Windows) to make Vim as a simple <a href="http://www.jiangtanghu.com/blog/2011/11/05/get-start-with-wps-and-call-for-an-elegant-sas-ide/" target="_blank">SAS IDE</a> where</p>
<blockquote><p>F3: run SAS codes (in batch mode)<br />
F4: close other two windows (the current active window is Log window after F3 running; F4 jump to SAS file with full window)</p>
<p>F5: jump to SAS file<br />
F6: jump to Log file<br />
F7: jump to lst file (list output)<br />
F8: keep only the current window (full window)</p></blockquote>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto;" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/11/VIM_SAS.png" alt="" /></p>
<p>****************</p>
<p>Details and Credits</p>
<p>1. The first post on Vim and SAS I read is by <a href="http://www.blog496.org/2011-7-17-win-use-vim-as-sas-r-editor.html" target="_blank">Xiaowei Wang</a> in Chinese.</p>
<p>The original SAS syntax file took from <a href="http://www.vim.org/scripts/script.php?script_id=3522" target="_blank">Zhenhuan Hu</a>.</p>
<p><a href="http://www-personal.umich.edu/~knassen/vim/sasfns.html" target="_blank">Kent Nassen</a> also maintains some Vim functions to run SAS codes and check log.</p>
<p>2. To run SAS codes using F3:</p>
<blockquote><p><span style="font-family: 'Courier New';">map &lt;F3&gt; :w&lt;CR&gt;:!SAS % -CONFIG &#8220;<span style="color: #ff0000;">C:\Program Files\SAS\SASFoundation\9.2\nls\en\SASV9.CFG</span>&#8220;&lt;CR&gt;:sp  %&lt;.lst&lt;CR&gt;:sp  %&lt;.log&lt;CR&gt;</span></p></blockquote>
<p>3. Close other windows using F4:</p>
<blockquote><p><span style="font-family: 'Courier New';">map &lt;F4&gt; :close&lt;CR&gt;:close&lt;CR&gt;</span></p></blockquote>
<p>4. Keep only current window using F8:</p>
<blockquote><p><span style="font-family: 'Courier New';">map &lt;F8&gt; : only&lt;CR&gt;</span></p></blockquote>
<p>5. Jump to SAS file using F5:</p>
<blockquote><p><span style="font-family: 'Courier New';">map &lt;F5&gt; :e %&lt;.sas&lt;CR&gt;</span></p></blockquote>
<p>6. Jump to Log file using F6:</p>
<blockquote><p><span style="font-family: 'Courier New';">map &lt;F6&gt; :e %&lt;.log&lt;CR&gt;</span></p></blockquote>
<p>7. Jump to Lst file using F7:</p>
<blockquote><p><span style="font-family: 'Courier New';">map &lt;F7&gt; :e %&lt;.lst&lt;CR&gt;</span></p></blockquote>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=JYKX2uphHPo:fW0oOtNuFXg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=JYKX2uphHPo:fW0oOtNuFXg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=JYKX2uphHPo:fW0oOtNuFXg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=JYKX2uphHPo:fW0oOtNuFXg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=JYKX2uphHPo:fW0oOtNuFXg:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=JYKX2uphHPo:fW0oOtNuFXg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/JYKX2uphHPo" height="1" width="1"/>]]></content:encoded><description>Few configurations (just copy this sas.vim file to C:\Program Files\vim\vim73\syntax if you also use gVIM 7.3 at Windows) to make Vim as a simple SAS IDE where F3: run SAS codes (in batch mode) F4: close other two windows (the current active window is Log window after F3 running; F4 jump to SAS file with [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2011/11/13/vim-as-a-sas-ide/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2011/11/13/vim-as-a-sas-ide/</feedburner:origLink></item><item><title>My Collection of SAS Macro Repositories</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/yesZog1cCDM/</link><category>SAS</category><category>statistics</category><category>Macro</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Tue, 08 Nov 2011 05:41:54 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2011/11/08/my-collection-of-sas-macro-repositories/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Then I just find that the most effective and safest way to synchronize bookmarks across machines is making them Google searchable, i.e, putting them online.</p>
<p>Followings are my personal collections of SAS macro Repositories (I will keep it update according to new sites reached and your inputs). Most of them are rich, well documented and friendly for navigation and review: </p>
<p>/***General***/</p>
<p><strong><font color="#ff0000">1. SAS Macros by </font><a href="http://www.devenezia.com/" target="_blank"><font color="#ff0000">Richard DeVenezia</font></a></strong><strong></strong></p>
<p> <a href="http://www.devenezia.com/downloads/sas/macros/index.php">http://www.devenezia.com/downloads/sas/macros/index.php</a>   <br /> 
<p>Richard is a very active contributor in SAS-L. He also plays with Java, Perl, PHP and JavaScript and you can find all these codes in his homepage. Besides the well organized macros, there are some interesting utilities:</p>
<p><a href="http://www.devenezia.com/downloads/sas/samples/">http://www.devenezia.com/downloads/sas/samples/</a></p>
<p><strong><font color="#ff0000">2. </font></strong><a href="http://www.datasavantconsulting.com/roland/" target="_blank"><strong><font color="#ff0000">Roland</font></strong></a><strong><font color="#ff0000">&#8216;s SAS Macros</font></strong></p>
<p><a href="http://www.datasavantconsulting.com/roland/Spectre/maclist2.html">http://www.datasavantconsulting.com/roland/Spectre/maclist2.html</a></p>
<p>Roland, a proficient SAS programmer from Europe, also supply two SAS applications:</p>
<p><strong>Spectre</strong> &#8211; a Practical and Educational Clinical Trials Reporting Engine     <br /><a href="http://www.datasavantconsulting.com/roland/Spectre/index.html">http://www.datasavantconsulting.com/roland/Spectre/index.html</a></p>
<p><strong>RGPP</strong> -Graphical Patient Profiler     <br /><a href="http://www.datasavantconsulting.com/roland/RGPP/rgpp.html">http://www.datasavantconsulting.com/roland/RGPP/rgpp.html</a></p>
<p>And some tips:    <br /><a href="http://www.datasavantconsulting.com/roland/sastips.html">http://www.datasavantconsulting.com/roland/sastips.html</a></p>
<p><strong><font color="#ff0000">3. </font></strong><a href="http://www.cswenson.com/" target="_blank"><strong><font color="#ff0000">Chris</font></strong></a><strong><font color="#ff0000">&#8216;s SAS Macros</font></strong></p>
<p><a href="http://sas.cswenson.com/downloads/macros">http://sas.cswenson.com/downloads/macros</a></p>
<p>I just found Chris’ site weeks before and Chris is a pretty cool programmer: in one of his <a href="http://sas.cswenson.com/downloads/fun-macros" target="_blank">fun macros</a>, an error message will be such kind of form:</p>
<blockquote><p>ERROR: MWA HA HA! You fool! You are cursed with leprosy!</p>
</blockquote>
<p><strong><font color="#ff0000">4. </font></strong><a href="http://www.sconsig.com/" target="_blank"><strong><font color="#ff0000">sconsig</font></strong></a><strong><font color="#ff0000"> SAS Coding Tips and Techniques</font></strong>&#160; </p>
<p><a href="http://www.sconsig.com/sastip.htm">http://www.sconsig.com/sastip.htm</a></p>
<p>rich while badly for navigating and review </p>
<p><font color="#ff0000">5. Arnold Schick&#8217;s macros</font></p>
<p><a href="http://schick.tripod.com/macros.html">http://schick.tripod.com/macros.html</a></p>
<p>also some macros collected from SAS-L : </p>
<p><a href="http://schick.tripod.com/p-index.html">http://schick.tripod.com/p-index.html</a></p>
<p><font color="#ff0000">6. Rodney A. Sparapani ‘s Macro</font></p>
<p><a href="http://www.mcw.edu/PCOR/Education/SASMacros.htm">http://www.mcw.edu/PCOR/Education/SASMacros.htm</a></p>
<p>Rodney is best known for his contribution to <a href="http://ess.r-project.org/Manual/ess.html" target="_blank">SAS support in ESS</a> (Emacs Speaks Statistics) as a cool programmer and <a href="http://www.mrc-bsu.cam.ac.uk/bugs/welcome.shtml" target="_blank">WinBugs</a> and Bayesian then he works as a statistician.</p>
<p>Rodney’s site also contains lots of statistical stuff.</p>
<p>/***Statistics***/</p>
<p><font color="#ff0000">1. Mayo Clinic Locally Written SAS Macros</font>     <br /><a href="http://cancercenter.mayo.edu/mayo/research/biostat/sasmacros.cfm">http://cancercenter.mayo.edu/mayo/research/biostat/sasmacros.cfm</a></p>
<p>or in </p>
<p><a href="http://mayoresearch.mayo.edu/biostat/sasmacros.cfm">http://mayoresearch.mayo.edu/biostat/sasmacros.cfm</a></p>
<p><font color="#ff0000">2. Paul D. Allison</font>     <br /><a href="http://www.ssc.upenn.edu/~allison/#Macros">http://www.ssc.upenn.edu/~allison/#Macros</a>     <br />new site: <a href="http://www.pauldallison.com/Download3.html">http://www.pauldallison.com/Download3.html</a></p>
<p>Paul is a prolific writer with books <a href="http://www.amazon.com/Paul-D.-Allison/e/B001H6KWN6/ref=sr_ntt_srch_lnk_1?qid=1320758969&amp;sr=8-1" target="_blank">on SAS and statistics</a>.</p>
<p><font color="#ff0000">3. MCHP SAS Macros</font> </p>
<p><a href="http://mchp-appserv.cpe.umanitoba.ca/viewConcept.php?conceptID=1048">http://mchp-appserv.cpe.umanitoba.ca/viewConcept.php?conceptID=1048</a></p>
<p><font color="#ff0000">4. Ralph O&#8217;Brien ,UnifyPow: A SAS Module for Sample-Size Analysis</font>     <br /><a href="http://www.bio.ri.ccf.org/Power/">http://www.bio.ri.ccf.org/Power/</a> </p>
<p><font color="#ff0000">5. Usual Dietary Intakes: SAS Macros for the NCI Method</font>     <br /><a href="http://riskfactor.cancer.gov/diet/usualintakes/macros.html">http://riskfactor.cancer.gov/diet/usualintakes/macros.html</a></p>
<p><font color="#ff0000">6. Clinician&#8217;s corner: SAS macros</font>     <br /><a href="http://www.medicine.mcgill.ca/epidemiology/Joseph/PBelisle/sas-macros.html">http://www.medicine.mcgill.ca/epidemiology/Joseph/PBelisle/sas-macros.html</a></p>
<p>/***Graph***/</p>
<p><font color="#ff0000">1. Robert Allison&#8217;s SAS/Graph Examples!</font>     <br /><a href="http://robslink.com/SAS/Home.htm">http://robslink.com/SAS/Home.htm</a></p>
<p>My first stop for SAS graphics.</p>
<p><font color="#ff0000">2. SAS Graphic Programs and Macros by Michael Friendly</font>     <br /><a href="http://www.datavis.ca/sasmac/">http://www.datavis.ca/sasmac/</a></p>
<p>more popular in academia.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=yesZog1cCDM:ncUvoq6LlwY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=yesZog1cCDM:ncUvoq6LlwY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=yesZog1cCDM:ncUvoq6LlwY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=yesZog1cCDM:ncUvoq6LlwY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=yesZog1cCDM:ncUvoq6LlwY:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=yesZog1cCDM:ncUvoq6LlwY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/yesZog1cCDM" height="1" width="1"/>]]></content:encoded><description>Then I just find that the most effective and safest way to synchronize bookmarks across machines is making them Google searchable, i.e, putting them online. Followings are my personal collections of SAS macro Repositories (I will keep it update according to new sites reached and your inputs). Most of them are rich, well documented and [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2011/11/08/my-collection-of-sas-macro-repositories/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2011/11/08/my-collection-of-sas-macro-repositories/</feedburner:origLink></item><item><title>Get Start with WPS, and Call for an Elegant SAS IDE!</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/Q4k2fJLM-UQ/</link><category>SAS</category><category>IDE</category><category>VIM</category><category>WPS</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Sat, 05 Nov 2011 06:50:42 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2011/11/05/get-start-with-wps-and-call-for-an-elegant-sas-ide/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>I got a trial version of <a href="http://www.teamwpc.co.uk/products/wps" target="_blank">WPS</a> (the latest version 2.5.2.0 at Windows), which engine can interpret “some of the language of SAS”. I took piece of codes for testing and some passed while some popped up with errors (so currently it is only a limited version of SAS). I don’t drive into the deep part yet of what WPS can do and can’t do, but I do love the WPS way to organize projects, folders and files (including souse files):</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/11/WPS_SAS.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="WPS_SAS" border="0" alt="WPS_SAS" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/11/WPS_SAS_thumb.png" width="507" height="380" /></a></p>
<p>WPS uses a lite version of <a href="http://www.eclipse.org/" target="_blank">Eclipse</a> as GUI(WPS Workbench; the “lite” means WPS Workbench can’t be extensible as the original Eclipse but really with shorter response time). Besides its Project Explore for folders and files management(left panel), I also love its Outline in right panel to show the SAS programming elements and errors information in log window: </p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/11/WPS_LOG.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="WPS_LOG" border="0" alt="WPS_LOG" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/11/WPS_LOG_thumb.png" width="502" height="381" /></a> </p>
<p>Then I’d like to switch to SAS itself. Frankly speaking, at least in IDE part, WPS looks pretty better than the current corresponding SAS:</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/11/SAS_GUI.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="SAS_GUI" border="0" alt="SAS_GUI" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/11/SAS_GUI_thumb.png" width="495" height="406" /></a></p>
<p>Of course I hold the principle of “substance over form”, but if available, the form itself also make people comfortable and enjoyable (for example, the Apple products…). As far as I know, the new version of SAS DI Studio and Enterprise Miner both have pretty much improvement in GUI from ergonomic point of view. Even for code editor, Enterprise Guide Editor&#160; is now more superior than so called SAS Enhanced Editor. But as a SAS programmer (not only the SAS user), I may spend all my day in the Base SAS window! </p>
<p>I also spent some time to configure VIM as a relative simple SAS IDE as a temporally replacement (F3 to run, F5 to jump to program window, F6 to log window, F7 to output window just as the same as in SAS IDE):</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/11/VIM_SAS.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="VIM_SAS" border="0" alt="VIM_SAS" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/11/VIM_SAS_thumb.png" width="488" height="575" /></a> It’s simple but always can do the job as SAS itself while looks really cool to comfort myself as a programmer. So, what’s going on in the next release? Still wait.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=Q4k2fJLM-UQ:QV-X_58AXv4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=Q4k2fJLM-UQ:QV-X_58AXv4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=Q4k2fJLM-UQ:QV-X_58AXv4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=Q4k2fJLM-UQ:QV-X_58AXv4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=Q4k2fJLM-UQ:QV-X_58AXv4:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=Q4k2fJLM-UQ:QV-X_58AXv4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/Q4k2fJLM-UQ" height="1" width="1"/>]]></content:encoded><description>I got a trial version of WPS (the latest version 2.5.2.0 at Windows), which engine can interpret “some of the language of SAS”. I took piece of codes for testing and some passed while some popped up with errors (so currently it is only a limited version of SAS). I don’t drive into the deep [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2011/11/05/get-start-with-wps-and-call-for-an-elegant-sas-ide/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2011/11/05/get-start-with-wps-and-call-for-an-elegant-sas-ide/</feedburner:origLink></item><item><title>Hello Python</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/jMty8cAGywI/</link><category>misc</category><category>Python</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Mon, 31 Oct 2011 05:29:43 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2011/10/31/hello-python/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Inspired by <a href="http://www.jiangtanghu.com/blog/2011/08/15/sas-bloggers-in-action-2-jian-dai-and-his-sas-academy/" target="_blank">Jian’s polyglot programming practice</a>, I also begin to brush up Python and C++ which I learned during graduate school. Following is a Python response to one of <a href="http://tech.groups.yahoo.com/group/sas_academy/" target="_blank">Jian Dai</a>’s former programming challenges for <a href="http://blog.clinovo.com/megha-becomes-the-third-time-winner-june-programming-challenge-now-is-finished/" target="_blank">lines count of source codes</a>:</p>
<div class="codecolorer-container python blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br /></div></td><td><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">os</span><br />
<br />
<span style="color: #808080; font-style: italic;">#count number of lines of</span><br />
<span style="color: #808080; font-style: italic;">#single file</span><br />
<span style="color: #ff7700;font-weight:bold;">def</span> lineCount<span style="color: black;">&#40;</span>fileName<span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; countSingle<span style="color: #66cc66;">=</span><span style="color: #ff4500;">0</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">for</span> line <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">open</span><span style="color: black;">&#40;</span>fileName<span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; countSingle +<span style="color: #66cc66;">=</span> <span style="color: #ff4500;">1</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span> countSingle<br />
<br />
<span style="color: #808080; font-style: italic;">#count number of lines of</span><br />
<span style="color: #808080; font-style: italic;">#directory and subdirectories</span><br />
<span style="color: #ff7700;font-weight:bold;">def</span> dirCount<span style="color: black;">&#40;</span><span style="color: #008000;">dir</span><span style="color: #66cc66;">,</span>extension<span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; countTotal<span style="color: #66cc66;">=</span><span style="color: #ff4500;">0</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">for</span> r<span style="color: #66cc66;">,</span>d<span style="color: #66cc66;">,</span>f <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #dc143c;">os</span>.<span style="color: black;">walk</span><span style="color: black;">&#40;</span><span style="color: #008000;">dir</span><span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">for</span> files <span style="color: #ff7700;font-weight:bold;">in</span> f:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">if</span> files.<span style="color: black;">endswith</span><span style="color: black;">&#40;</span>extension<span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fileName<span style="color: #66cc66;">=</span><span style="color: #dc143c;">os</span>.<span style="color: black;">path</span>.<span style="color: black;">join</span><span style="color: black;">&#40;</span>r<span style="color: #66cc66;">,</span>files<span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; countSingle<span style="color: #66cc66;">=</span>lineCount<span style="color: black;">&#40;</span>fileName<span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; countTotal +<span style="color: #66cc66;">=</span> countSingle<br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span> countTotal<br />
<br />
a<span style="color: #66cc66;">=</span>dirCount<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;C:/Program Files/CDISC Express/&quot;</span><span style="color: #66cc66;">,</span><span style="color: #483d8b;">&quot;.sas&quot;</span><span style="color: black;">&#41;</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">print</span> &nbsp;a</div></td></tr></tbody></table></div>
<p>I use <a href="http://www.jiangtanghu.com/docs/en/readME_IDE.txt" target="_blank">python-2.7.2</a>, the final Python 2.x release most because of the various modules support for learning purpose. The book helps me to get the quick review of Python is <em><a href="http://greenteapress.com/thinkpython/thinkpython.html" target="_blank">Think Python: How to Think Like a Computer Scientist</a></em> by Allen Downey.</p>
<p>Also, I begin to use <a href="http://kpumuk.info/projects/wordpress-plugins/codecolorer/" target="_blank">CodeColorer</a> for this blog to insert codes.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=jMty8cAGywI:6xN0HoTPvXg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=jMty8cAGywI:6xN0HoTPvXg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=jMty8cAGywI:6xN0HoTPvXg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=jMty8cAGywI:6xN0HoTPvXg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=jMty8cAGywI:6xN0HoTPvXg:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=jMty8cAGywI:6xN0HoTPvXg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/jMty8cAGywI" height="1" width="1"/>]]></content:encoded><description>Inspired by Jian’s polyglot programming practice, I also begin to brush up Python and C++ which I learned during graduate school. Following is a Python response to one of Jian Dai’s former programming challenges for lines count of source codes: 12345678910111213141516171819202122232425import os #count number of lines of #single file def lineCount&amp;#40;fileName&amp;#41;: &amp;#160; &amp;#160; countSingle=0 &amp;#160; [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2011/10/31/hello-python/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2011/10/31/hello-python/</feedburner:origLink></item><item><title>An Online Latin to English Translator via SAS</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/UcgsyVpLtbU/</link><category>SAS</category><category>Google</category><category>Latin</category><category>Translate</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Sat, 08 Oct 2011 06:47:59 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2011/10/08/an-online-latin-to-english-translator-via-sas/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Last month I submitted piece of SAS codes for a monthly programming challenge hosted by <a href="http://www.jiangtanghu.com/blog/2011/08/15/sas-bloggers-in-action-2-jian-dai-and-his-sas-academy/" target="_blank">Jian Dai</a> to <a href="http://blog.clinovo.com/programming-challenge-6-motto-of-hogwarts-school/" target="_blank">translate the Latin motto of Hogwarts School in Harry Potter</a> into English<em></em>:</p>
<blockquote><p><em>draco dormiens nunquam titillandus</em></p></blockquote>
<p>You can get the meaning using Google search of course—but not in Google Translator (Google Translator can’t recognize all of such Latin words!). Jian posted a concise <a href="http://blog.clinovo.com/october-programming-challenge-ranking-american-heroes/" target="_blank">Perl way to parse webs</a> which contain this Latin phrase and key words “mean”,  “means” and such and you can always find <a href="http://www.ehow.com/about_6530758_meaning-__draco-dormiens___.html" target="_blank">page</a> like</p>
<blockquote><p>&#8220;draco dormiens nunquam titillandus,&#8221; which means &#8220;never tickle a sleeping dragon.&#8221;</p></blockquote>
<p>My <a href="http://jiangtanghu.com/docs/en/Latin2Eng.sas" target="_blank">SAS approach</a> can’t return a human readable sentence like this one but a 100% word to word machine translation and you can use it to translate any Latin sentence which happens not appear in any singe web page. The usage is also very simple:</p>
<blockquote><p>filename L2E url &#8216;<a href="http://jiangtanghu.com/docs/en/Latin2Eng.sas">http://jiangtanghu.com/docs/en/Latin2Eng.sas&#8217;;</a><br />
%include L2E;</p>
<p>%Latin2Eng(<span style="color: #ff0000;">draco dormiens nunquam titillandus</span>)</p></blockquote>
<p>and you get:</p>
<p align="left"><span style="font-size: xx-small;"><strong>Obs   draco         dormiens                               nunquam                         titillandus</strong> </span></p>
<p align="left"><span style="font-size: xx-small;">1    dragon    sleep, rest                 at no time, never            tickle, titillate, provoke<br />
2     snake     be/fall asleep          not in any circumstances     stimulate sensually<br />
3                   behave as if asleep<br />
4                   be idle, do nothing</span></p>
<p align="left">and also (2*4*2*2=) 32 Cartesian combinations to feel the meaning if needed.</p>
<p align="left">Then you can also test the words by Julius Caesar:</p>
<blockquote>
<p align="left">%Latin2Eng(<span style="color: #ff0000;">Veni Vidi Vici</span>)</p>
</blockquote>
<p>and get:</p>
<p><strong>Obs   Veni       Vidi                                                                     Vici</strong></p>
<p>1     come    see, look at                                                     conquer, defeat, excel<br />
2                 consider                                                           outlast<br />
3                (PASS) seem, seem good, appear, be seen      succeed</p>
<p>This SAS translator is based on <a href="http://users.erols.com/whitaker/words.htm " target="_blank">WORDS (version 1.97FC) by William Whitaker</a> and the codes still needs some modifications when any unexpected special symbols popped up in the translating page.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=UcgsyVpLtbU:EHYbdLnYd4c:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=UcgsyVpLtbU:EHYbdLnYd4c:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=UcgsyVpLtbU:EHYbdLnYd4c:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=UcgsyVpLtbU:EHYbdLnYd4c:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=UcgsyVpLtbU:EHYbdLnYd4c:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=UcgsyVpLtbU:EHYbdLnYd4c:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/UcgsyVpLtbU" height="1" width="1"/>]]></content:encoded><description>Last month I submitted piece of SAS codes for a monthly programming challenge hosted by Jian Dai to translate the Latin motto of Hogwarts School in Harry Potter into English: draco dormiens nunquam titillandus You can get the meaning using Google search of course—but not in Google Translator (Google Translator can’t recognize all of such [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2011/10/08/an-online-latin-to-english-translator-via-sas/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2011/10/08/an-online-latin-to-english-translator-via-sas/</feedburner:origLink></item><item><title>Map and Reduce in MapReduce: a SAS Illustration</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/XJ38qSEjZ1s/</link><category>data mining</category><category>Database</category><category>SAS</category><category>Array</category><category>Hadoop</category><category>Lisp</category><category>List</category><category>MapReduce</category><category>Python</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Tue, 04 Oct 2011 06:31:18 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2011/10/04/map-and-reduce-in-mapreduce-a-sas-illustration/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>In <a href="http://www.jiangtanghu.com/blog/2011/09/14/analytical-valley/" target="_blank">last post</a>, I mentioned <a href="http://hadoop.apache.org/">Hadoop</a>, the open source implementation of Google’s <a href="http://en.wikipedia.org/wiki/Mapreduce" target="_blank">MapReduce</a> for parallelized processing of big data. In this long National Holiday, I read the original Google paper, <em><a href="http://static.googleusercontent.com/external_content/untrusted_dlcp/labs.google.com/en//papers/mapreduce-osdi04.pdf" target="_blank">MapReduce: Simplified Data Processing on Large Clusters</a></em> by Jeffrey Dean and Sanjay Ghemawat and got that the terminologies of “map” and “reduce” were basically borrowed from Lisp, an old functional language that I even didn’t play “hello world” with. For Python users, the idea of Map and Reduce is also very straightforward because the workhorse data structure in Python is just the list, a sequence of values that you can just imagine that they are the nodes(clusters, chunk servers, …) in a distributed system. </p>
<p>MapReduce is a programming framework and really language independent, so SAS users can also get the basic idea from their daily programming practices and here is just a simple illustration using data step array (not array in Proc FCMP or matrix in IML). Data step array in SAS is fundamentally not a data structure but a convenient way of processing group of variables, but it can also be used to play some list operations like in Python and other rich data structure supporting languages(an editable version can be founded in <a href="http://jiangtanghu.com/docs/en/MapReduce.sas" target="_blank">here</a>):</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/10/MapReduce.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="MapReduce" border="0" alt="MapReduce" align="left" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/10/MapReduce_thumb.png" width="506" height="535" /></a></p>
<p>Follow code above, the programming task is to capitalize a string “Hadoop” (Line 2) and the “master” method is just to capitalize the string in buddle(Line 8): just use a master machine to processing the data.</p>
<p>Then we introduce the idea of “big data” that the string is too huge to one master machine, so “master method” failed. Now we distribute the task to thousands of low cost machines (workers, slaves, chunk servers,. . . in this case, the one dimensional array with size of 6, see Line 11), each machine produces parts of the job (each array element only capitalizes a single letter in sequence, see Line 12-14). Such distributing operation is called “<font color="#ff0000">map</font>”. In a MapReduce system, a master machine is also needed to assign the maps and reduce.</p>
<p>How about “<font color="#ff0000">reduce</font>”?&#160; A “reduce” operation is also called “fold”—for example, in Line 17, the operation to combine all the separately values into a single value: combine results from multiple worker machines.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=XJ38qSEjZ1s:q526KOnhoeo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=XJ38qSEjZ1s:q526KOnhoeo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=XJ38qSEjZ1s:q526KOnhoeo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=XJ38qSEjZ1s:q526KOnhoeo:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=XJ38qSEjZ1s:q526KOnhoeo:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=XJ38qSEjZ1s:q526KOnhoeo:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/XJ38qSEjZ1s" height="1" width="1"/>]]></content:encoded><description>In last post, I mentioned Hadoop, the open source implementation of Google’s MapReduce for parallelized processing of big data. In this long National Holiday, I read the original Google paper, MapReduce: Simplified Data Processing on Large Clusters by Jeffrey Dean and Sanjay Ghemawat and got that the terminologies of “map” and “reduce” were basically borrowed [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2011/10/04/map-and-reduce-in-mapreduce-a-sas-illustration/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2011/10/04/map-and-reduce-in-mapreduce-a-sas-illustration/</feedburner:origLink></item><item><title>An Analytical Valley: Big Data and Data Scientists (and SAS Programmers)</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/fmYstcIPGjM/</link><category>Database</category><category>Industry Review</category><category>SAS</category><category>Big Data</category><category>data mining</category><category>SQL</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Wed, 14 Sep 2011 07:15:17 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2011/09/14/analytical-valley/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/09/hadoop.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="hadoop" border="0" alt="hadoop" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/09/hadoop_thumb.jpg" width="240" height="180" /></a></p>
<p><a href="http://blogs.sas.com/content/sascom/author/tomdavenport" target="_blank">Tom Davenport</a> reported an observation that <a href="http://blogs.sas.com/content/sascom/2011/09/13/is-silicone-valley-becoming-more-analytical/" target="_blank">Silicon Valley is becoming more analytical</a> since companies in the Valley such as Google, Facebook, eBay, LinkedLn all have strong presences in analytics. Besides such predominant companies, I’d also like to add Yahoo to the list although Yahoo is no longer in its peak. Yahoo is the largest sponsor and contributor of <a href="http://hadoop.apache.org/" target="_blank">Hadoop</a>, an open source framework for distributed processing of so called “big data”. When taking a look at the outstanding <a href="www.facebook.com/data" target="_blank">Facebook data team</a> or <a href="http://sna-projects.com/sna/" target="_blank">LinkedIn data team</a>, we can see that Hadoop is also one of the most overwhelmingly successful technical factors. Such Valley companies themselves are the huge consumers of big data and have strong incentives to develop analytical solutions beyond their high technology product pipelines.</p>
<p>Analytical staffs in LinkedLn also helps a lot to promote the widely usage of the term “data scientist”. They identify themselves as data scientists and that’s really cool. Now more and more statisticians are also very glad to accept this brand new title. According to a <a href="http://blog.revolutionanalytics.com/2011/08/statisticians-at-jsm-consider-themselves-data-scientists.html" target="_blank">survey in JSM</a> (2011, Miami), more than 85% (164) statisticians there considered themselves “data scientists”. </p>
<p>McKinsey also released a report this May <a href="http://www.mckinsey.com/mgi/publications/big_data/pdfs/MGI_big_data_full_report.pdf" target="_blank">on big data</a> and the huge gap of qualified analytical talents. You know when a management consulting firm begins to talk something technical, it is no longer a fashion to follow the discussion of the concept. To embrace the challenge of big data, one or the team needs multidiscipline background—basically speaking, computer science and statistics (and data mining or machine learning is just an interdisciplinary subject of them). Here is an ambitious list on “How do I become a data scientist”:</p>
<blockquote><p><a href="http://www.quora.com/Educational-Resources/How-do-I-become-a-data-scientist">http://www.quora.com/Educational-Resources/How-do-I-become-a-data-scientist</a></p>
</blockquote>
<p>For these learning plans, just feel the meaning and don’t take it too seriously. Check yourself and set up your own priority. </p>
<h3>Notes for SAS Programmers</h3>
<p>For SAS programmers, I read an exciting post besides High Performance Computing that <a href="http://blogs.sas.com/content/datamanagement/2011/08/29/sas-hadoop-and-big-data" target="_blank">SAS will also play with Hadoop</a> by introducing some functionality in SAS/Access and SAS Data Integration Studio.</p>
<p>For SAS programmers with no IT background, it is not a good idea to jump into algorithms and data structures and other hard core computer courses immediately. Instead I recommend to take the full advantages of SAS language and system itself to dive into computer world gradually:</p>
<blockquote><p>1. Learn and practice and practice <a href="http://support.sas.com/documentation/cdl/en/sqlproc/63043/HTML/default/viewer.htm#titlepage.htm" target="_blank">SAS Proc SQL</a> which is compliant with the <a href="http://en.wikipedia.org/wiki/SQL-92">SQL-92</a> standard. SQL is the common language in database world and SAS Proc SQL can help you switch smoothly to Oracle SQL, Teradata SQL, MySql SQL and other SQL implementations although there are some non-critical <a href="http://www.jiangtanghu.com/blog/2009/12/04/work-with-oracle-a-quick-sheet-for-sas-programmers-2/" target="_blank">differences</a> in details.</p>
<p>2. Dig into the operating system specific documentation of SAS, for example in SAS 9.3,&#160; <em><a href="http://support.sas.com/documentation/cdl/en/hostwin/63047/HTML/default/viewer.htm#titlepage.htm" target="_blank">SAS 9.3 Companion for Windows</a></em> or <em><a href="http://support.sas.com/documentation/cdl/en/hostunx/63053/HTML/default/viewer.htm#titlepage.htm" target="_blank">SAS 9.3 Companion for UNIX Environments</a></em> or others depending the OS you are working on. They are the critical important documentations but unfortunately often missed in SAS programmers’&#160; reading list. </p>
<p>Such docs will help SAS programmers to deal with the machines and expose to the wide computer world in a way that a SAS programmer can understand. You can’t expect to be an expert on computer via such docs, but at least you can communicate fluently with internal IT staff. </p>
<p>3. Then you get all the confidences to play with computer and can switch to any other topics interested in <a href="http://www.quora.com/Educational-Resources/How-do-I-become-a-data-scientist" target="_blank">the list above</a>!</p>
</blockquote>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=fmYstcIPGjM:5m9kjcLj4wI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=fmYstcIPGjM:5m9kjcLj4wI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=fmYstcIPGjM:5m9kjcLj4wI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=fmYstcIPGjM:5m9kjcLj4wI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=fmYstcIPGjM:5m9kjcLj4wI:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=fmYstcIPGjM:5m9kjcLj4wI:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/fmYstcIPGjM" height="1" width="1"/>]]></content:encoded><description>Tom Davenport reported an observation that Silicon Valley is becoming more analytical since companies in the Valley such as Google, Facebook, eBay, LinkedLn all have strong presences in analytics. Besides such predominant companies, I’d also like to add Yahoo to the list although Yahoo is no longer in its peak. Yahoo is the largest sponsor [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2011/09/14/analytical-valley/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2011/09/14/analytical-valley/</feedburner:origLink></item><item><title>Fours Errors in SAS 9.2 Fisher’s Iris Data in SASHELP Library</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/5pkNJgbNxLY/</link><category>misc</category><category>SAS</category><category>Fisher</category><category>Iris</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Sat, 03 Sep 2011 06:13:42 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2011/09/03/fours-errors-in-sas-9-2-fishers-iris-data-in-sashelp-library/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/09/iris.gif"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="iris" border="0" alt="iris" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/09/iris_thumb.gif" width="240" height="237" /></a></p>
<p>In the <a href="http://www.jiangtanghu.com/blog/2011/08/31/who-is-alfred/" target="_blank">previous post</a>, I just mentioned that <a href="http://en.wikipedia.org/wiki/Iris_flower_data_set" target="_blank">Fisher&#8217;s Iris Data</a> is embedded officially in SASHELP library in SAS 9.2. Note that even in SAS 9.1.3, you can also find this data with several instances from some demos in user guide (just search &quot;Iris&quot; in &quot;SAS Help and Documentation&quot; accompany with you SAS product), for example, in <a href="http://support.sas.com/onlinedoc/913/getDoc/en/imlug.hlp/graphstart_sect13.htm\" target="_blank">SAS 9.1.3 IML</a>.</p>
<p>Iris dataset is so important and popular that researchers round the world use it as benchmark to test and compare their algorithms and also as pedagogical purpose. It is also the overwhelming No. 1 dataset considering popularity in <a href="http://archive.ics.uci.edu/ml/" target="_blank">UCI Machine Learning Repository</a>. Here 4 errors in SASHELP.iris listed for your consideration if interested and if you find some slightly differences in outputs following some demos out of SAS using this data:</p>
<blockquote><p>Error 1: Line 35, the PetalWidth of Setosa should be 2 mm, not 1 mm;</p>
<p>Error 2: Line 38, the SepalWidth of Setosa should be 36 mm, not 31 mm;</p>
<p>Error 3: Line 38, the PetalLength of Setosa should be 14 mm, not 15 mm;</p>
<p>Error 4: Line 119, the PetalLength of Virginica should be 69 mm, not 70 mm.</p>
</blockquote>
<p>For errors 1-3, there is also an interesting story in statistical literature. In 1936, Fisher the Great published his famous paper, <em><a href="http://rcs.chph.ras.ru/Tutorials/classification/Fisher.pdf" target="_blank">The use of multiple measurements in taxonomic problems</a></em> and the Iris data also attached (called <font color="#ff0000">Fisher Version</font> in this post). In the following years (until today), people <a href="http://archive.ics.uci.edu/ml/datasets/Iris" target="_blank">cited</a> this paper and the Iris data Fisher Version is also replicated and distributed worldwide and then a version with above errors 1-3 might gain a very dominant popularity (I don’t know the source of there errors). In UCI Machine Learning Repository, the dataset <a href="http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data" target="_blank">iris.data</a> is the one with such 3 errors (called <font color="#ff0000">UCI Version</font> as well).</p>
<p>We could see that the duplicated UCI Version is even more popular in some extension than its original Fisher Version (SASHELP.iris also seems to be copied from UCI Version). Story goes on. In 1998, James Bezdek and other scholars just found the three discrepancies between Iris Fisher Version and UCI Version (and in some published papers using the same version of data). You can read it in <em><a href="http://pages.bangor.ac.uk/~mas00a/papers/jbjkrklknptfs99.pdf" target="_blank">Will the Real Iris Data Please Stand Up?</a></em> </p>
<p>Bezdek then proposed to use the original Fisher Version of Iris, and UCI Machine Learning Repository also <a href="http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.names" target="_blank">documented these three errors</a> and added new dataset called <a href="http://archive.ics.uci.edu/ml/machine-learning-databases/iris/bezdekIris.data" target="_blank">bezdekIris.data</a> (<font color="#ff0000">Bezdek Version</font>) which is exactly Fisher Version (iris.data kept and I think it is because now the so called error version is also valuable).</p>
<p>Return to error 4 and I can’t figure out why and I might as well call it Iris <font color="#ff0000">SAS Version</font>. Note that the unit in SAS Version is millimeter (mm), while others version all use centimeter (cm). </p>
<p>The interesting part is that I also check the <a href="http://support.sas.com/onlinedoc/913/getDoc/en/imlug.hlp/graphstart_sect13.htm\" target="_blank">Iris data in SAS 9.1.3 IML</a> mentioned before and not surprising, it is exactly the Fisher Version (you can also find a right one in a demo from <a href="http://support.sas.com/documentation/cdl/en/imlsug/62558/HTML/default/viewer.htm#ugappdatasets_sect11.htm" target="_blank">SAS 9.2 IML Studio 3.2</a>).</p>
<p>The following codes generate several Iris versions:</p>
<blockquote><p>iris_uci: <font color="#ff0000">UCI Version</font> with both CM and MM as unit</p>
<p>bezdekiris_uci: <font color="#ff0000">Bezdek Version</font> or <font color="#ff0000">Fisher Version</font> with both CM and MM as unit</p>
<p>iris_mm: <font color="#ff0000">UCI Version</font> with MM as unit and attributes alike SASHELP.iris, <font color="#ff0000">SAS Version</font></p>
<p>bezdekiris_mm: <font color="#ff0000">Bezdek Version</font> or <font color="#ff0000">Fisher Version</font> with MM as unit and attributes alike SASHELP.iris, <font color="#ff0000">SAS Version</font></p>
</blockquote>
<p> <span id="more-375"></span><br />
<blockquote>
<p><font face="Courier New">filename iris URL &quot;</font><a href="http://archive.ics.uci.edu/ml/machine-learning-databases/iris/&quot;;"><font face="Courier New">http://archive.ics.uci.edu/ml/machine-learning-databases/iris/&quot;;</font></a></p>
<p><font face="Courier New">%macro getIris(input);       <br />data &amp;input._uci;        <br />&#160;&#160;&#160; length _Species $15.;        <br />&#160;&#160;&#160; length&#160; Species $10.;        <br />&#160;&#160;&#160; infile iris(&amp;input..data) dlm=&#8217;,';        <br />&#160;&#160;&#160; input _SepalLength _SepalWidth _PetalLength _PetalWidth _Species $; </font></p>
<p><font face="Courier New">&#160;&#160;&#160; Species=propcase(scan(_Species,2)); </font></p>
<p><font face="Courier New">&#160;&#160;&#160; array iris {*}&#160; _SepalLength _SepalWidth _PetalLength _PetalWidth;       <br />&#160;&#160;&#160; array iris_mm{4} SepalLength&#160; SepalWidth&#160; PetalLength&#160; PetalWidth; </font></p>
<p><font face="Courier New">&#160;&#160;&#160; do i=1 to dim(iris);       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; iris_mm{i}=iris{i}*10;        <br />&#160;&#160;&#160; end; </font></p>
<p><font face="Courier New">&#160;&#160;&#160; drop i; </font></p>
<p><font face="Courier New">&#160;&#160;&#160; label&#160;&#160; _sepallength=&#8217;Sepal Length (cm)&#8217;       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _sepalwidth =&#8217;Sepal Width (cm)&#8217;        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _petallength=&#8217;Petal Length (cm)&#8217;        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _petalwidth =&#8217;Petal Width (cm)&#8217;        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _Species =&#8217;Iris Species&#8217;; </font></p>
<p><font face="Courier New">&#160;&#160;&#160; label&#160;&#160; sepallength=&#8217;Sepal Length (mm)&#8217;       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; sepalwidth =&#8217;Sepal Width (mm)&#8217;        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; petallength=&#8217;Petal Length (mm)&#8217;        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; petalwidth =&#8217;Petal Width (mm)&#8217;        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Species =&#8217;Iris Species&#8217;;        <br />run; </font></p>
<p><font face="Courier New">data &amp;input._mm (label=&quot;Fisher&#8217;s Iris Data (1936)&quot;);       <br />&#160;&#160;&#160; set &amp;input._uci;        <br />&#160;&#160;&#160; drop _:;        <br />run; </font></p>
<p><font face="Courier New">%mend getIris; </font></p>
<p><font face="Courier New">%getIris(iris)       <br />%getIris(bezdekIris)</font></p>
</blockquote>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=5pkNJgbNxLY:Xu4DaqK_Q4U:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=5pkNJgbNxLY:Xu4DaqK_Q4U:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=5pkNJgbNxLY:Xu4DaqK_Q4U:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=5pkNJgbNxLY:Xu4DaqK_Q4U:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=5pkNJgbNxLY:Xu4DaqK_Q4U:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=5pkNJgbNxLY:Xu4DaqK_Q4U:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/5pkNJgbNxLY" height="1" width="1"/>]]></content:encoded><description>In the previous post, I just mentioned that Fisher&amp;#8217;s Iris Data is embedded officially in SASHELP library in SAS 9.2. Note that even in SAS 9.1.3, you can also find this data with several instances from some demos in user guide (just search &amp;#34;Iris&amp;#34; in &amp;#34;SAS Help and Documentation&amp;#34; accompany with you SAS product), for [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2011/09/03/fours-errors-in-sas-9-2-fishers-iris-data-in-sashelp-library/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2011/09/03/fours-errors-in-sas-9-2-fishers-iris-data-in-sashelp-library/</feedburner:origLink></item><item><title>Who is Alfred?</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/7AjcXDxil3I/</link><category>Database</category><category>misc</category><category>SAS</category><category>class</category><category>Iris</category><category>Oracle</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Wed, 31 Aug 2011 07:18:09 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2011/08/31/who-is-alfred/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<blockquote><p>Tell me something about Alfred, male or female? age? height and weight? </p>
</blockquote>
<p>Oracle database (version 9 and below) had a well known default demo account SCOTT with a password, TIGER (and TIGER was the name of the real person Bruce Scott ’s cat, <a href="http://www.dba-oracle.com/t_scott_tiger.htm" target="_blank">see</a>) and in this account, there are some tables named DEPT, EMP, BONUS and SALGRADE (you can read their meaning). Almost every Oracle DBA learn SQL using these database and an joke just says that in DBA’s meetings, people just&#160; warm up saying “how about Smith?” And you should know that in the database, Smith is a clerk and his boss is Ford (whose boss is Jones)!</p>
<p>In the beginning I also raise a question for SAS programmers: who is Alfred? Don’t give quick answer such that “Alfred who”. Actually, you should already go through with Alfred very well as a SAS programmer:</p>
<blockquote><p><font face="Courier New">proc print data=sashelp.class;       <br />&#160;&#160;&#160; where name=&quot;Alfred&quot;;        <br />run;</font></p>
</blockquote>
<p>As a clinical SAS programmer, I play with data, get acquaintance with the data and subjects and then subjects are no longer “subject”. They have identities and&#160; Alfred is a 14 years old boy. I have such habit mostly because in clinical world, data are very expensive (not like the massive transaction data in financial industry) and should be took more care. </p>
<p>I dare say that “class” is the most famous SAS dataset in sashelp library and then in the SAS world. The first dataset used for demo is almost this “class”. I just did a quick Google search, “<a href="http://www.google.com/search?hl=en&amp;source=hp&amp;biw=1111&amp;bih=561&amp;q=sas+sashelp.class&amp;btnG=Google+Search&amp;aq=f&amp;aqi=g10&amp;aql=&amp;oq=&amp;gs_rfai=#pq=+sas+sashelp.class&amp;hl=en&amp;cp=0&amp;gs_id=t&amp;xhr=t&amp;q=sas+sashelp.class&amp;qe=c2FzIHNhc2hlbHAuY2xhc3M&amp;qesig=-1hRQj8XDofruHqJt-7o1Q&amp;pkc=AFgZ2tkn99yjg_kNxO238PUOVve2MCFJUcgPCK-pXmvfyldpJvG0DchYcRuz_Azx9jhciBgWit8jDgrY6zs4T42InGlJtSBhGQ&amp;pf=p&amp;sclient=psy&amp;source=hp&amp;pbx=1&amp;oq=sas+sashelp.class&amp;aq=f&amp;aqi=&amp;aql=&amp;gs_sm=&amp;gs_upl=&amp;bav=on.2,or.r_gc.r_pw.r_cp.&amp;fp=265f5e3edf2ec82b&amp;biw=1166&amp;bih=665&amp;bs=1" target="_blank">sas sashelp.class</a>” returns about 44,400 results. Hope you can find any other SAS datasets to beat it.</p>
<p>Alfred in “class” pops into my mind because today, I do find a strong candidate. In SAS 9.2 (and 9.3), the sashelp library has a new member, Iris. YES, it is the “<a href="http://en.wikipedia.org/wiki/Iris_flower_data_set" target="_blank">Fisher Iris Flower Data</a>”, which can be safely considered the most famous and most&#160; used dataset in machine learning and data mining papers and statistical applications. Currently it has <a href="http://www.google.com/search?hl=en&amp;source=hp&amp;biw=1111&amp;bih=561&amp;q=sas+sashelp.class&amp;btnG=Google+Search&amp;aq=f&amp;aqi=g10&amp;aql=&amp;oq=&amp;gs_rfai=#sclient=psy&amp;hl=en&amp;source=hp&amp;q=sas+sashelp.iris+&amp;pbx=1&amp;oq=sas+sashelp.iris+&amp;aq=f&amp;aqi=&amp;aql=&amp;gs_sm=e&amp;gs_upl=277383l277383l5l277945l1l1l0l0l0l0l0l0ll0l0&amp;bav=on.2,or.r_gc.r_pw.r_cp.&amp;fp=265f5e3edf2ec82b&amp;biw=1166&amp;bih=665" target="_blank">only 859 hits in Google</a>, I think the number will reach high accompany with the wide use of SAS 9.2 and above, and to enforce my prediction, I will definitely play with the Iris data in the following future!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=7AjcXDxil3I:IcMiBK5j710:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=7AjcXDxil3I:IcMiBK5j710:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=7AjcXDxil3I:IcMiBK5j710:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=7AjcXDxil3I:IcMiBK5j710:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=7AjcXDxil3I:IcMiBK5j710:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=7AjcXDxil3I:IcMiBK5j710:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/7AjcXDxil3I" height="1" width="1"/>]]></content:encoded><description>Tell me something about Alfred, male or female? age? height and weight? Oracle database (version 9 and below) had a well known default demo account SCOTT with a password, TIGER (and TIGER was the name of the real person Bruce Scott ’s cat, see) and in this account, there are some tables named DEPT, EMP, [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2011/08/31/who-is-alfred/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2011/08/31/who-is-alfred/</feedburner:origLink></item><item><title>I am a 20% SAS Nerd!</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/olZyV5JaUUc/</link><category>misc</category><category>SAS</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Tue, 23 Aug 2011 06:57:14 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2011/08/23/i-am-a-20-sas-nerd/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Kirk_Paul_Lafler" target="_blank">Kirk Paul Lafler</a> drafted a checking list for identifying a SAS nerd (or geek, in its positive ways) in one of his intriguing papers:</p>
<blockquote><p><em><a href="http://www.wuss.org/proceedings10/coders/2910_3_COD-Lafler2.pdf" target="_blank">You Could be a SAS® Nerd If . . .</a></em> </p>
</blockquote>
<p>Here I’m glad to find that I am roughly a 20% SAS nerd (12 matched in all 57 lists):</p>
<blockquote><p>8. You blog SAS-related comments and technical solutions frequently. </p>
<p>9. You have more than five SAS blogs in your RSS feed. </p>
<p>10. Your home page is support.sas.com, sasCommunity.org, SAS-L, or LexJansen.com. </p>
<p>11. You know more than ten SAS keyboard shortcuts. </p>
<p>12. You get excited when you find a new match-merge technique that performs better than the one you developed the week before.</p>
<p>21. You have more than one version of SAS on your machine or network so you can compare and contrast program, processing and output differences.</p>
<p>28. You spend your Friday evenings and weekends responding to SAS-L posts, entering sasCommunity blog entries, and reading the latest “hot” SAS topic on LexJansen.com.</p>
<p>38. The first thing you read in the morning is the “Tip of the Day”.</p>
<p>45. You subscribe to five or more SAS groups on LinkedIn, sasCommunity, and Facebook and you use a tabbed browser so you can be online with all of them at the same time.</p>
<p>47. You spend your evenings and weekends SAS-L’ing, Googling and Binging looking for elegant SAS technical solutions.</p>
<p>50. You proudly proclaim that you’re a SAS programmer when asked by a fellow passenger, “What do you do for a living?”</p>
<p>51. You’re amazed when your fellow airline passenger replies, “What is a “SAS programmer?”.</p>
</blockquote>
<p>I also asked Kirk if he is a 100% SAS nerd and Kirk replied, NO. He said he is a 99% SAS nerd:)</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=olZyV5JaUUc:-EopbNmDx9E:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=olZyV5JaUUc:-EopbNmDx9E:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=olZyV5JaUUc:-EopbNmDx9E:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=olZyV5JaUUc:-EopbNmDx9E:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=olZyV5JaUUc:-EopbNmDx9E:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=olZyV5JaUUc:-EopbNmDx9E:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/olZyV5JaUUc" height="1" width="1"/>]]></content:encoded><description>Kirk Paul Lafler drafted a checking list for identifying a SAS nerd (or geek, in its positive ways) in one of his intriguing papers: You Could be a SAS® Nerd If . . . Here I’m glad to find that I am roughly a 20% SAS nerd (12 matched in all 57 lists): 8. You [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2011/08/23/i-am-a-20-sas-nerd/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2011/08/23/i-am-a-20-sas-nerd/</feedburner:origLink></item><item><title>SAS Bloggers in Action (2): Jian Dai and his SAS Academy</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/k8Bfryjaujk/</link><category>SAS</category><category>programming</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Mon, 15 Aug 2011 05:59:29 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2011/08/15/sas-bloggers-in-action-2-jian-dai-and-his-sas-academy/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>My first post on SAS bloggers begins with <a href="http://www.jiangtanghu.com/blog/2011/07/17/sas-bloggers-in-action1-rick-wicklin-sasiml-and-color-revolution/" target="_blank">Rick Wicklin</a> and I plan a series of posts. It would be nice for a statement of rational before following pages.</p>
<p>As a learner, I benefit frequently from lots of high quality blogs. But I’m also slightly lazy as a reader: I read almost all blogs in Google Reader rather than returning to the original web pages and adding some comments. Here I’d like to post a series of SAS bloggers and their blogs (that I subscribed and read frequently) to extent my thanks, share with friends and sometimes amuse the bloggers themselves:) </p>
<p>In this page, honor belongs to <a href="http://www.linkedin.com/pub/jian-dai/1a/1b/b05" target="_blank">Jian Dai</a> and his Yahoo group, “<a href="http://tech.groups.yahoo.com/group/sas_academy/" target="_blank">SAS Academy</a>”:</p>
<blockquote><p><a href="http://tech.groups.yahoo.com/group/sas_academy/">http://tech.groups.yahoo.com/group/sas_academy/</a></p>
</blockquote>
<p>Wait. You may ask: a Yahoo group? </p>
<p>Jian actually is a blogger for a collective blog, <em><a href="http://blog.clinovo.com/" target="_blank">Clinical Trial New Technologies &amp; Best Practices</a></em>. But here I’d like to refer this Yahoo group which actually serves as his own blog and I also use Google Reader to subscribe its RSS feed: </p>
<blockquote><p>launched at December of 2008</p>
<p>444 posts till July 2011, averagely 14 posts per month (and roughly 1 post for every 2 days!)</p>
</blockquote>
<p>And all in all, most (and almost every) posts are under Jian’s name and few posts come from other’s hands are just outlier-like(less than 10). Note that I just read all the historical messages in a weekend and got the impressions. In the following page, I might <a href="http://www.jiangtanghu.com/blog/2011/07/20/retrieve-blogs-using-sas/" target="_blank">retrieve all the data</a> from the <a href="http://tech.groups.yahoo.com/group/sas_academy/" target="_blank">SAS Academy</a> and supply accurate reports.</p>
<p>Recently Jian posted <a href="http://tech.groups.yahoo.com/group/sas_academy/message/454" target="_blank">a C implementation of a SAS tokenizer</a> based on Finite-state Machine(<a href="http://en.wikipedia.org/wiki/Finite-state_machine" target="_blank">FSM</a>). A tokenizer is a lexical analyzer of a specific programming language and in this case you can just imagine it is a small part of SAS Supervisor to recognize all <a href="http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#a001961603.htm" target="_blank">tokens</a>. In <a href="http://tech.groups.yahoo.com/group/sas_academy/" target="_blank">SAS Academy</a>, Jian posted lots wonderful (and beautiful) implementation of lots of general or specific problems using <a href="http://tech.groups.yahoo.com/group/sas_academy/messages/425?l=1" target="_blank">C</a>, <a href="http://tech.groups.yahoo.com/group/sas_academy/msearch?query=perl&amp;submit=Search&amp;charset=UTF-8" target="_blank">Perl</a>, <a href="http://tech.groups.yahoo.com/group/sas_academy/msearch?query=JScript&amp;submit=Search&amp;charset=UTF-8" target="_blank">JScript</a>, <a href="http://tech.groups.yahoo.com/group/sas_academy/msearch?query=JavaScript&amp;submit=Search&amp;charset=UTF-8" target="_blank">JavaScript</a>, <a href="http://tech.groups.yahoo.com/group/sas_academy/msearch?query=PowerShell&amp;submit=Search&amp;charset=UTF-8" target="_blank">PowerShell</a>, <a href="http://tech.groups.yahoo.com/group/sas_academy/msearch?query=vb*&amp;submit=Search&amp;charset=UTF-8" target="_blank">VBS/VBA</a>, . . . and even <a href="http://tech.groups.yahoo.com/group/sas_academy/msearch?query=ProLog&amp;submit=Search&amp;charset=UTF-8" target="_blank">ProLog</a>, a general logic programming language!</p>
<p>Wait wait. You may wonder: is Jian a SAS programmer?</p>
<p>I don’t know how Jian identify himself as a programmer and it would be best to leave this question to himself. But don’t worry. There is no such phrase engraved at the door of Jian’s <a href="http://tech.groups.yahoo.com/group/sas_academy/" target="_blank">SAS Academy</a>:</p>
<blockquote><p>Let no one ignorant of C/Perl enter.</p>
</blockquote>
<p>Actually Jian is a SAS/statistical/clinical programmer by job and he of course has lots of interesting SAS codes posted, including SAS implementation of <a href="http://tech.groups.yahoo.com/group/sas_academy/msearch?query=Lambda+&amp;submit=Search&amp;charset=UTF-8" target="_blank">Lambda Expression</a> and <a href="http://tech.groups.yahoo.com/group/sas_academy/msearch?query=recursion&amp;submit=Search&amp;charset=UTF-8" target="_blank">recursion</a>(Jian is also an active conference speaker on this topic). &#8211;Some clinical programmers without any computer background would find it difficult to understand the CS part even of Jian’s SAS codes, for example, <strong>Lambda Expression</strong>. Suggestion: Google it and you will enter a totally new joy world.</p>
<p>Jian plays like a geek, and he is always making efforts to extend the horizon and scope of SAS programming language by taking advantage from computer science(actually he had some posts titled <em><strong>play like a CS pro</strong></em>). I have great experience by exploring Jian’s <a href="http://tech.groups.yahoo.com/group/sas_academy/" target="_blank">SAS Academy</a> and very often, a popular book title pops up in my mind:</p>
<blockquote><p><a href="http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880" target="_blank">Programming Pearls</a></p>
</blockquote>
<p>If you want sometimes programming for fun, just for fun, that’s it.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=k8Bfryjaujk:0VTexe67LEM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=k8Bfryjaujk:0VTexe67LEM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=k8Bfryjaujk:0VTexe67LEM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=k8Bfryjaujk:0VTexe67LEM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=k8Bfryjaujk:0VTexe67LEM:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=k8Bfryjaujk:0VTexe67LEM:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/k8Bfryjaujk" height="1" width="1"/>]]></content:encoded><description>My first post on SAS bloggers begins with Rick Wicklin and I plan a series of posts. It would be nice for a statement of rational before following pages. As a learner, I benefit frequently from lots of high quality blogs. But I’m also slightly lazy as a reader: I read almost all blogs in [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2011/08/15/sas-bloggers-in-action-2-jian-dai-and-his-sas-academy/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2011/08/15/sas-bloggers-in-action-2-jian-dai-and-his-sas-academy/</feedburner:origLink></item><item><title>Retrieve blogs using SAS</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/sp5FTjYeaD8/</link><category>SAS</category><category>Blog</category><category>IML</category><category>Rick Wicklin</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Wed, 20 Jul 2011 06:47:46 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2011/07/20/retrieve-blogs-using-sas/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><font size="2">Recently I posted a </font><a href="http://www.jiangtanghu.com/blog/2011/07/17/sas-bloggers-in-action1-rick-wicklin-sasiml-and-color-revolution/" target="_blank"><font size="2">frequency analysis</font></a><font size="2"> on Rick Wicklin’s popular </font><a href="http://blogs.sas.com/iml/" target="_blank"><font size="2">SAS/IML blog</font></a><font size="2">. Sanjay Matange also produced a nice </font><a href="https://sites.google.com/site/smatange/ods-graphics/rick-s-blog-history-heatmap" target="_blank"><font size="2">heatmap on Rick’s blogging history</font></a><font size="2"> using the summary data I published. Here just release the ideas and SAS codes to get data from Rick’s blog dynamically. You may modify the codes slightly to obtain data from all other SAS in-house blogs (</font><a href="http://blogs.sas.com/index.php"><font size="2">http://blogs.sas.com/index.php</font></a><font size="2">) since they share the same template. For other blogs, you should research the web pages accordingly to get the best suitable methods and this post can also serve as an example.</font></p>
<h1><strong>First step: define the scope</strong></h1>
<p><font size="2">For my purpose, I only need the titles and publish dates of Rick’s posts. It is so called the “metadata” of the blog. I do not need all the post contents. By the way, if all information needed, you can use a blog backup tool, or write codes to retrieve all the pages of </font><a href="http://blogs.sas.com/iml"><font size="2">http://blogs.sas.com/iml</font></a> at the maximum depth<font size="2">, or simply, you can write to Rick and say: hey Rick, could you please send me all the contents of your blog? And Rick may go to the management console of his own blog, export all the contents to an XML file and get back to you.</font></p>
<h1><strong>Second step: analyze the web pages</strong></h1>
<p><font size="2">Browse to the right panel of Rick’s blog, in the ARCHIVES frame, click “<a href="http://blogs.sas.com/iml/index.php?/archive" target="_blank">Older</a>”</font><font size="2">:</font></p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image0025.jpg"><font size="2"></font></a><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image0026.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image002" border="0" alt="clip_image002" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image002_thumb1.jpg" width="235" height="298" /></a></a></a></p>
<p><font size="2">And you get </font></p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image0034.gif"><font size="2"></font></a><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image0035.gif"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image003" border="0" alt="clip_image003" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image003_thumb.gif" width="362" height="274" /></a></a></a></p>
<p><font size="2">This page just gives a big picture of Rick’s blog (ARCHIVE section is always a good place to get such metadata, for example, <a href="http://www.jiangtanghu.com/blog/archives/" target="_blank">archives for my blog</a></font><font size="2">). But we need more. Click “<a href="http://blogs.sas.com/iml/index.php?/archives/2010/09/summary.html" target="_blank">view topics</a>” for example of September, 2010:</font></p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image0044.gif"><font size="2"></font></a><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image0045.gif"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image004" border="0" alt="clip_image004" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image004_thumb.gif" width="372" height="443" /></a></a></a></p>
<p><font size="2">This page is exactly what we want with titles and dates. Open an editor to write codes immediately to read all the information in this page?—wait. Currently this blog has posts across 11 months and you can expect the increase. You should design a dynamic method to read all the topics pages: Sep 2010, Oct 2010, … and, <font face="Courier New">today()</font>.</font></p>
<p><font size="2">Return to the <a href="http://blogs.sas.com/iml/index.php?/archive" target="_blank">archives page</a>. RCM (right click your mouse) and select “View page source” if you use Google Chrome web browser (“View Source” in IE; “View Page Source” in Firefox) and you get all the HTML scripts (<strong>Note: you DO not need any knowledge of HTML to understand this post</strong>). Copy and paste them into a text editor supporting HTML syntax highlighting (such as Notepad++). Search all instances of “view topics” we mentioned before:</font></p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image0066.jpg"><font size="2"></font></a><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image0067.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image006" border="0" alt="clip_image006" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image006_thumb2.jpg" width="519" height="312" /></a></a></a></p>
<p><font size="2">We are lucky. They are 11 instances of “view topics” accompanying with 11 hyperlinks for the currently 11 months’ archives of Rick’s blog. We can read such 11 hyperlinks to a macro array for dynamic retrieval.</font></p>
<p><font size="2">Then we return to the single <a href="http://blogs.sas.com/iml/index.php?/archives/2010/09/summary.html" target="_blank">topics page</a>, for example of September, 2010</font><font size="2">. Review the HTML source file. Search for “posted_by_date” and we get 14 instances which is same as the number of posts in September 2010:</font></p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image0085.jpg"><font size="2"></font></a><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image0086.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image008" border="0" alt="clip_image008" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image008_thumb1.jpg" width="518" height="307" /></a></a></a></p>
<p><font size="2">We should also need to locate all the instances of titles. Search “/iml/index.php?/archives/” and we get 17 responses:</font></p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image0105.jpg"><font size="2"></font></a><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image0106.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image010" border="0" alt="clip_image010" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image010_thumb1.jpg" width="517" height="298" /></a></a></a></p>
<p><font size="2">We see 3 instances at end of the finding results don’t contain any titles. You can check other pages to confirm such pattern. Yes we can use regular expressions to parse the HTML pages to locate more exactly for the titles. But for a quick job and due to the relative simple HTML pages, some basic SAS character functions are enough for our purpose. In the following codes, limited regular expressions are used only to remove HTML tags such as “&lt;a href=”.</font></p>
<p><font size="2">After such explorative search of HTML scripts, we can get the basic idea where can we find the interested information. Then we begin to coding work.</font></p>
<h1><strong>Third step: Coding at last!</strong></h1>
<p><font size="2">For our purpose, we should first read the archive page to get all the topics links to a macro array, then read the all the topics pages dynamically. Finally, we should also add the all the calendar dates with holidays. Some friends may find that they met piece of the following codes before. Yes, such codes just assembled some skills what I learned from Art Carpenter, Richard DeVenezia, Jian Dai and lots of programmers before!</font></p>
<h3>3-1: read archive page</h3>
<blockquote><p><font face="Courier New">%let URL=</font><a href="http://blogs.sas.com/iml/index.php?/archive;"><font face="Courier New">http://blogs.sas.com/iml/index.php?/archive;</font></a></p>
<p><font face="Courier New">filename archive URL &quot;&amp;URL&quot;; </font></p>
<p><font face="Courier New">data archive;        <br />&#160;&#160;&#160; length text $1024;         <br />&#160;&#160;&#160; infile archive lrecl=1024;         <br />&#160;&#160;&#160; input text $;         <br />&#160;&#160;&#160; text= _infile_;         <br />&#160;&#160;&#160; if index(text, &quot;&gt;view topics&lt;&quot;) then output;         <br />run; </font></p>
<p><font face="Courier New">data&#160; archive1;        <br />&#160;&#160;&#160; set archive;         <br />&#160;&#160;&#160; summary=scan(text,4,&#8217;&quot;&#8217;);         <br />run;</font></p>
</blockquote>
<h3>3-2: read all topics pages</h3>
<blockquote><p><font face="Courier New">data _null_;        <br />&#160;&#160;&#160; set&#160; archive1 end=eof;         <br />&#160;&#160;&#160; I+1;         <br />&#160;&#160;&#160; II=left(put(I,2.));         <br />&#160;&#160;&#160; call symputx(&#8216;summary&#8217;||II,summary);         <br />&#160;&#160;&#160; if eof then call symputx(&#8216;total&#8217;,II);         <br />run; </font></p>
<p><font face="Courier New">%macro readit;        <br />&#160;&#160;&#160; %do i=1 %to &amp;total;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; filename f&amp;i URL &quot;&amp;&amp;summary&amp;i&quot;;&#160;&#160;&#160; </font></p>
<p><font face="Courier New">&#160;&#160;&#160;&#160;&#160;&#160;&#160; data f&amp;i;        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; length text $1024;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; infile f&amp;i lrecl=1024;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; input text $;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; text= _infile_;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if index(text, &quot;/iml/index.php?/archives/&quot;) or index(text, &quot;posted_by_date&quot;) then output;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; run; </font></p>
<p><font face="Courier New">&#160;&#160;&#160; <font color="#ff0000">/*remove HTML tags;*/</font>         <br />&#160;&#160;&#160; data ff&amp;i;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; set f&amp;i;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; prx=prxparse(&quot;s/&lt;.*?&gt;//&quot;);         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; call prxchange(prx,99,text);         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; drop prx; </font></p>
<p><font face="Courier New">&#160;&#160;&#160;&#160;&#160;&#160;&#160; flag=ifn(mod(_n_,2),1,2);        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; grpn=&amp;i;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; if index(text,&quot;201&quot;) and length(text)&lt;10 then delete;<font color="#ff0000">/*be carefull! hard coding;*/          <br /></font>&#160;&#160;&#160;&#160;&#160;&#160;&#160; seq=_n_;         <br />&#160;&#160;&#160;&#160; run; </font></p>
<p><font face="Courier New">&#160;&#160;&#160;&#160; /*transpose data;*/        <br />&#160;&#160;&#160;&#160; data fff&amp;i;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; set ff&amp;i;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; by grpn seq flag; </font></p>
<p><font face="Courier New">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="#ff0000">retain</font> title;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; if first.flag then title=lag(text);         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; if flag=1 then delete;         <br />&#160;&#160;&#160;&#160; run; </font></p>
<p><font face="Courier New">&#160;&#160;&#160; %end; </font></p>
<p><font face="Courier New">%mend readit;        <br />%readit </font></p>
<p><font face="Courier New">%macro getall;        <br />&#160;&#160;&#160; data Rick;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; set %do i=1 %to &amp;total; fff&amp;i %end; ;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; seq=seq/2;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; drop flag;         <br />&#160;&#160;&#160; run;&#160;&#160;&#160; <br />%mend getall;         <br />%getall </font></p>
<p><font face="Courier New">data rick2;        <br />&#160;&#160;&#160; set rick; </font></p>
<p><font face="Courier New">&#160;&#160;&#160; datetime=scan(text,2,&quot;,&quot;);&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160; year=scan(text,2,&quot;.&quot;);&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160; month=scan(scan(text,2,&quot;,&quot;),1);         <br />&#160;&#160;&#160; day=scan(scan(text,2,&quot;,&quot;),2);&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160; week=scan(text,6);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160; dt=compress(catx(&quot;&quot;,day,substr(month,1,3),year));&#160;&#160; <br />&#160;&#160;&#160; worddat=input(dt,date9.);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160; format worddat&#160; ddmmyy10.;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></p>
<p><font face="Courier New">&#160;&#160;&#160; m=scan(put(worddat,ddmmyy10.),2);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160; my=compress(catx(&quot;&quot;,year,m));&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />run; </font></p>
<p><font face="Courier New">proc sort ;        <br />&#160;&#160;&#160; by&#160; worddat descending seq ;         <br />run;</font></p>
</blockquote>
<p> <span id="more-354"></span>
<p>It is also interesting to add additional information for further analysis, such as all calendar dates during Rick’s blogging history and holidays.</p>
<h3>3-3: get all calendar dates</h3>
<blockquote><p><font face="Courier New">proc sort data=rick2 out=rick3 nodupkey;        <br />&#160;&#160;&#160; by my;         <br />run; </font></p>
<p><font face="Courier New">data _null_;        <br />&#160;&#160;&#160; set rick3 end=eof;         <br />&#160;&#160;&#160; I+1;         <br />&#160;&#160;&#160; II=left(put(I,2.));         <br />&#160;&#160;&#160; call symputx(&#8216;year&#8217;||II,year);         <br />&#160;&#160;&#160; call symputx(&#8216;month&#8217;||II,m);         <br />&#160;&#160;&#160; if eof then call symputx(&#8216;total&#8217;,II);         <br />run; </font></p>
<p><font face="Courier New">%macro getCalendar;        <br />&#160;&#160;&#160; %do i=1 %to &amp;total;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; data calendar&amp;i;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; date1 = mdy (&amp;&amp;month&amp;i,1,&amp;&amp;year&amp;i);         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; date2 = intnx (&#8216;month&#8217;, date1, 1) &#8211; 1; </font></p>
<p><font face="Courier New">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; do worddat = date1 to date2;        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; wim = intck (&#8216;week&#8217;, date1, worddat);         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; dim = worddat-date1+1;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; output;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; end; </font></p>
<p><font face="Courier New">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; format worddat&#160; ddmmyy10.;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; keep&#160;&#160; worddat&#160; dim ;         <br />&#160;&#160;&#160;&#160;&#160; run;         <br />&#160;&#160;&#160; %end;         <br />%mend getCalendar;         <br />%getCalendar; </font></p>
<p><font face="Courier New">%macro allCalendar;        <br />&#160;&#160;&#160; data Calendar;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; set %do i=1 %to &amp;total; calendar&amp;i %end; ;&#160;&#160;&#160; <br />&#160;&#160;&#160; run;&#160;&#160;&#160; <br />%mend allCalendar;         <br />%allCalendar</font></p>
</blockquote>
<h3>3-4: get holidays</h3>
<p><font size="2">I have no specific idea about US holidays and just referenced the two pages:</font></p>
<blockquote><p><a title="http://support.sas.com/kb/24/655.html  " href="http://support.sas.com/kb/24/655.html&nbsp; ">http://support.sas.com/kb/24/655.html&#160; </a></p>
<p><a title="http://www.opm.gov/Operating_Status_Schedules/fedhol/2011.asp" href="http://www.opm.gov/Operating_Status_Schedules/fedhol/2011.asp">http://www.opm.gov/Operating_Status_Schedules/fedhol/2011.asp</a></p>
</blockquote>
<p><font size="2">Also, the holidays and observances should manully modified according to personal working schedule. So this section serves only for demonstration.</font></p>
<blockquote><p><font size="1" face="Courier New">filename hld url &quot;</font><a href="http://jiangtanghu.com/docs/en/US_holiday.sas&quot;;"><font size="1" face="Courier New">http://jiangtanghu.com/docs/en/US_holiday.sas&quot;;</font></a></p>
<p><font face="Courier New">%include hld; </font></p>
<p><font face="Courier New">%US_holiday(2010)        <br />%US_holiday(2011) </font></p>
<p><font face="Courier New">data holiday;        <br />&#160;&#160;&#160; set holiday2010 holiday2011;         <br />run;</font></p>
<p><font face="Courier New">proc sort ;        <br />&#160;&#160;&#160; by&#160; worddat;         <br />run;</font></p>
</blockquote>
<h3>3-5: put all together</h3>
<blockquote><p><font face="Courier New">data rick_all;        <br />&#160;&#160;&#160; merge rick2 calendar holiday;         <br />&#160;&#160;&#160; by worddat;&#160; <br />&#160;&#160;&#160; </font><font face="Courier New">if worddat &lt;&#8217;03Sep2010&#8242;d then delete;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160; <font color="#ff0000">if worddat &gt;&#8217;15Jul2011&#8242;d then delete;</font>         <br />&#160;&#160;&#160; drop today;         <br />run;</font></p>
<p><font face="Courier New"></font></p>
</blockquote>
<p><font size="2"></font></p>
<p><font size="2"></font></p>
<p><font size="2"></font></p>
<p><font size="2"></font></p>
<p>A pooled version (beta) also available at </p>
<blockquote><p><a href="http://jiangtanghu.com/docs/en/SAS_Blogs.sas">http://jiangtanghu.com/docs/en/SAS_Blogs.sas</a></p>
</blockquote>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=sp5FTjYeaD8:NxQfq9fqfTg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=sp5FTjYeaD8:NxQfq9fqfTg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=sp5FTjYeaD8:NxQfq9fqfTg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=sp5FTjYeaD8:NxQfq9fqfTg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=sp5FTjYeaD8:NxQfq9fqfTg:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=sp5FTjYeaD8:NxQfq9fqfTg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/sp5FTjYeaD8" height="1" width="1"/>]]></content:encoded><description>Recently I posted a frequency analysis on Rick Wicklin’s popular SAS/IML blog. Sanjay Matange also produced a nice heatmap on Rick’s blogging history using the summary data I published. Here just release the ideas and SAS codes to get data from Rick’s blog dynamically. You may modify the codes slightly to obtain data from all [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2011/07/20/retrieve-blogs-using-sas/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2011/07/20/retrieve-blogs-using-sas/</feedburner:origLink></item><item><title>SAS Bloggers In Action(1): Rick Wicklin, SAS/IML and “Color Revolution”</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/ZlbcBJRY16M/</link><category>misc</category><category>SAS</category><category>statistics</category><category>IML</category><category>Rick Wicklin</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Sun, 17 Jul 2011 01:16:49 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2011/07/17/sas-bloggers-in-action1-rick-wicklin-sasiml-and-color-revolution/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>It is well known that the French writer, author of <em>The Three Musketeer</em>, Alexandre Dumas, wrote his master piece of work in different colored papers according to literary genre:</p>
<blockquote><p><font color="#ff0000"><strong>non-fiction on&#160; rose,</strong></font></p>
<p><font color="#0000ff"><strong>fiction on blue,</strong></font></p>
<p><font color="#ffff80"><strong>poetry on yellow</strong></font></p>
</blockquote>
<p>The SAS blog writer, author of <em><a href="http://support.sas.com/publishing/authors/wicklin.html">Statistical Programming with SAS/IML Software</a></em>, <a href="http://blogs.sas.com/iml/" target="_blank">Rick Wicklin</a> of SAS Institute,&#160; also leads a strong “color revolution” in SAS blog community:</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/JohariWindow1.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="JohariWindow" border="0" alt="JohariWindow" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/JohariWindow_thumb.jpg" width="333" height="330" /></a>In an interesting personal statement, <a href="http://blogs.sas.com/iml/index.php?/archives/124-Blogging,-Programming,-and-Johari-Windows.html"><em>Blogging, Programming, and Johari Windows</em></a>, Rick summarizes his rich and colorful blogging rhythms according to the above <a href="http://en.wikipedia.org/wiki/Johari_window"><em>Johari window</em></a>:&#160;&#160; </p>
<ul>
<li><font color="#ffff80">Mondays</font>, writes introductory notes (corresponding to the upper right quadrant of Johari window).&#160; </li>
<li><font color="#bcdee2">Wednesdays</font>, experimental articles on sampling, simulation and other statistical programming topics(lower left quadrant). </li>
<li><font color="#008000">Fridays</font>, on explorative analysis of data (upper left quadrant). </li>
</ul>
<p>So what about the <font color="#ff8080">lower right quadrant</font>? Rick rediscovers and exposes what he once knew. Just suppose that, Rick picks up some codes he wrote before (ten years ago maybe) with big surprise: oh, who on earth wrote such damned clever beautiful codes? He or she must be in his/her aggressive youth. –then Rick wrote them all in blog.</p>
<p>Here I produced a summary table for Rick’s blogging activities (numbers per month per weekday; before July 16, 2011 Beijing time; <em>next following post would introduce how to use SAS to analyze data from website such as Rick’s blog</em>):</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/Rick.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Rick" border="0" alt="Rick" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/Rick_thumb.png" width="485" height="433" /></a>&#160;</p>
<p>Key findings:</p>
<ul>
<li>Rick is really a frequent and productive blogger with averagely 0.5 posts per day! </li>
<li>Rick DOES keep his words. Most of the posts are published in <font color="#008000">Friday</font>, <font color="#bcdee2">Wednesday </font>and <font color="#ffff80">Monday</font>(44, 44, 42 posts respectively). </li>
<li>None posted in Saturdays and Sunday. </li>
</ul>
<p>Rick began his writing since September&#160; 3. 2010, <font color="#008000">Friday</font>.&#160; Up to July 15. 2011, <font color="#008000">Friday</font>, there are 48 <font color="#008000">Fridays</font>, 46 <font color="#bcdee2">Wednesdays </font>and 46 <font color="#ffff80">Mondays</font>.&#160; Only 10 colored weekdays (4 <font color="#008000">Fridays</font>, 2 <font color="#bcdee2">Wednesdays </font>and 4 <font color="#ffff80">Mondays</font>) passed with no posts and most all them are due to national holidays: </p>
<blockquote><p>06/09/2010 , <font color="#ffff80">Monday</font>&#160;&#160;&#160;&#160;&#160;&#160; : Labor Day       <br />24/11/2010 , <font color="#bcdee2">Wednesday</font>: round Thanksgiving Day       <br />26/11/2010 , <font color="#008000">Friday</font>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; : round Thanksgiving Day       <br />22/12/2010 , <font color="#bcdee2">Wednesday</font>       <br />24/12/2010 , <font color="#008000">Friday</font>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; : Christmas Day       <br />27/12/2010 , <font color="#ffff80">Monday</font>       <br />31/12/2010 , <font color="#008000">Friday</font>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; : New Year’s Day       <br />30/05/2011 , <font color="#ffff80">Monday</font>&#160;&#160;&#160;&#160;&#160; : Memorial Day       <br />10/06/2011 , <font color="#008000">Friday</font>       <br />04/07/2011 , <font color="#ffff80">Monday</font>&#160;&#160;&#160;&#160;&#160; : Independence Day</p>
</blockquote>
<p>At least in 4 holidays (most in <font color="#ffff80">Monday</font>), Rick was also active in writing:</p>
<blockquote><p>11/10/2011, <font color="#ffff80">Monday</font>, Columbus Day: <em>How Do You Reshape a Matrix?</em>       <br />11/11/2010, Thursday, Veterans Day: <em>It&#8217;s Here!</em>       <br />17/01/2011, <font color="#ffff80">Monday</font>, Birthday of Martin Luther King, Jr.: <em>On the Flip Side: Exchanging Rows and Columns</em>       <br />21/02/2011, <font color="#ffff80">Monday</font>, Washington’s Birthday: <em>How to Build a Vector from Expressions</em></p>
</blockquote>
<p>Amazing Rick keeps a fixed writing pattern and in next following post, detailed analysis and SAS codes will be presented so you can also keep eyes on the metadata of your favorite bloggers’ writing and may rise a question like:</p>
<p>Hey Rick, what’s up in Jun 10, 2011, Friday?</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=ZlbcBJRY16M:I2WlU1TWF3M:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=ZlbcBJRY16M:I2WlU1TWF3M:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=ZlbcBJRY16M:I2WlU1TWF3M:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=ZlbcBJRY16M:I2WlU1TWF3M:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=ZlbcBJRY16M:I2WlU1TWF3M:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=ZlbcBJRY16M:I2WlU1TWF3M:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/ZlbcBJRY16M" height="1" width="1"/>]]></content:encoded><description>It is well known that the French writer, author of The Three Musketeer, Alexandre Dumas, wrote his master piece of work in different colored papers according to literary genre: non-fiction on&amp;#160; rose, fiction on blue, poetry on yellow The SAS blog writer, author of Statistical Programming with SAS/IML Software, Rick Wicklin of SAS Institute,&amp;#160; also [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2011/07/17/sas-bloggers-in-action1-rick-wicklin-sasiml-and-color-revolution/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">4</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2011/07/17/sas-bloggers-in-action1-rick-wicklin-sasiml-and-color-revolution/</feedburner:origLink></item><item><title>Tango Haiku</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/B7MVD6ds8FY/</link><category>misc</category><category>haiku</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Fri, 15 Jul 2011 07:50:18 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2011/07/15/tango-haiku/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Happy weekend and <a href="http://www.jiangtanghu.com/blog/2010/12/30/a-sas-programmers-end-year-haiku/" target="_blank">Haiku again</a>!</p>
<blockquote><p>My finger hurts,</p>
<p>I can not dance</p>
<p>Tango in Bastille.</p>
</blockquote>
<p>So… any ideas?</p>
<p>…</p>
<p>… …</p>
<p>… … …</p>
<p>OK. I am a terrible Haiku writer. The sentences are not self explained without&#160; /*commentaries*/ . So the story behind the scene…</p>
<p>One day my remote workstation was very very slow due to some network issues. But I still needed to write and run SAS codes in the server which is located in France. It really hurt my fingers from the ergonomic point of view.</p>
<p>“Tango” was my project code. But why Bastille? oh, that day happened to be round the Bastille Day in France. The performance of the remote server that time was just as terrible as the Bastille I want to break so I could do my project work more smoothly!</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>Note that after my completing this Tango Haiku, I did a Google search and found that there is really a French book called <em><a href="http://www.amazon.com/Bastille-tango-Jean-Fran%C3%A7ois-Vilar/dp/2742716785" target="_blank">Bastille tango</a></em>!</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/Tango.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Tango" border="0" alt="Tango" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/Tango_thumb.jpg" width="152" height="240" /></a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=B7MVD6ds8FY:fbkhF5RUapA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=B7MVD6ds8FY:fbkhF5RUapA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=B7MVD6ds8FY:fbkhF5RUapA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=B7MVD6ds8FY:fbkhF5RUapA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=B7MVD6ds8FY:fbkhF5RUapA:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=B7MVD6ds8FY:fbkhF5RUapA:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/B7MVD6ds8FY" height="1" width="1"/>]]></content:encoded><description>Happy weekend and Haiku again! My finger hurts, I can not dance Tango in Bastille. So… any ideas? … … … … … … OK. I am a terrible Haiku writer. The sentences are not self explained without&amp;#160; /*commentaries*/ . So the story behind the scene… One day my remote workstation was very very slow [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2011/07/15/tango-haiku/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2011/07/15/tango-haiku/</feedburner:origLink></item><item><title>A SAS Implementation of Confidence Intervals for Single Proportion: Eleven Methods</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/EI8kN98ot2w/</link><category>SAS</category><category>Confidence Interval</category><category>Newcombe</category><category>R</category><category>Single Proportion</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Thu, 14 Jul 2011 07:05:44 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2011/07/14/a-sas-implementation-of-confidence-intervals-for-single-proportion-eleven-methods/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>The following two papers by Professor <a href="http://medicine.cf.ac.uk/en/person/prof-robert-gordon-newcombe/">Robert Newcombe</a>, in my limit observation, are the most frequently cited papers in the industry for CI calculation:</p>
<ul>
<li><cite><a href="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&amp;db=pubmed&amp;dopt=Abstract&amp;list_uids=9595616&amp;query_hl=1"><strong>Two-sided confidence intervals for the single proportion: comparison of seven methods.</strong></a> </cite>      <br />Newcombe RG, <cite>Stat Med</cite> , Volume 17 , 8 (April 1998) pp.857-<strong>872</strong><strong></strong> </li>
<li><cite><a href="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&amp;db=pubmed&amp;dopt=Abstract&amp;list_uids=9595617&amp;query_hl=1"><strong>Interval estimation for the difference between independent proportions: comparison of eleven methods.</strong></a> </cite>      <br />Newcombe RG, <cite>Stat Med</cite> , Volume 17 , 8 (April 1998) pp.<strong>873</strong>-890 </li>
</ul>
<p style="margin-right: 0px">This post serves as an implementation using SAS accompany with the first paper on confidence intervals for single proportion(method 1-7). Additional 4 methods also provided:</p>
<blockquote><p>1.&#160; Simple asymptotic, Without CC&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />2.&#160; Simple asymptotic, With CC&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />3.&#160; Score method, Without CC&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />4.&#160; Score method, With CC&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />5.&#160; Binomial-based, &#8216;Exact&#8217;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />6.&#160; Binomial-based, Mid-p&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />7.&#160; Likelihood-based&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />8.&#160; Jeffreys&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />9.&#160; Agresti-Coull,z^2/2 successes&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />10. Agresti-Coull,2 successes and 2 fail&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />11. Logit&#160; </p>
</blockquote>
<p style="margin-right: 0px">The codes are available at</p>
<blockquote><p style="margin-right: 0px"><a href="http://jiangtanghu.com/docs/en/CI_Single_Proportion.sas">http://jiangtanghu.com/docs/en/CI_Single_Proportion.sas</a>&#160;</p>
</blockquote>
<p style="margin-right: 0px">It is a purely SAS/Base(data step and SQL) approach. I prefer data steps because it can be seamlessly incorporate into production work which looks like:</p>
<blockquote><p><font face="Courier New">/*r is the observed number of events/responders in n observations;*/ </font></p>
<p><font face="Courier New">%macro _Wald(r,n,alpha=0.05); </font></p>
<p><font face="Courier New">&#160;&#160;&#160;&#160;&#160; p=&amp;r/&amp;n;        <br />&#160;&#160;&#160;&#160;&#160; z = probit (1-&amp;alpha/2);         <br />&#160;&#160;&#160;&#160;&#160; sd=sqrt(&amp;n*p*(1-p)); *Standard Deviation ;         <br />&#160;&#160;&#160;&#160;&#160; se=sd/&amp;n;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; *standard error;         <br />&#160;&#160;&#160;&#160;&#160; me=z*se;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; *margin of error;         <br />&#160;&#160;&#160;&#160;&#160; p_CI_low = p-me;         <br />&#160;&#160;&#160;&#160;&#160; p_CI_up&#160; = p+me;         <br />&#160;&#160;&#160;&#160; p_CI=compress(catx(&quot;&quot;,&quot;[&quot;,put(round(p_CI_low,0.0001),6.4),&quot;,&quot;,put(round(p_CI_up,0.0001),6.4),&quot;]&quot;));         <br />%mend _Wald; </font></p>
<p><font face="Courier New">data test;        <br />&#160;&#160;&#160;&#160;&#160; input r n;         <br />&#160;&#160;&#160;&#160; <font color="#ff0000">%_Wald(r,n);</font>         <br />&#160;&#160;&#160;&#160;&#160; keep r n p p_CI;         <br />datalines;         <br />81 263         <br />15 148         <br />0 20         <br />1 29         <br />29 29         <br />;&#160;&#160; <br />run; </font></p>
<p><font face="Courier New">proc print data=test;run;</font></p>
</blockquote>
<p style="margin-right: 0px">But when simulation required (in methods 6-7), some SQL clauses pop up. Admit that It makes the codes less elegant. In this situation, matrix operation language such as SAS/IML or R will do a better job.</p>
<p style="margin-right: 0px">Note that in SAS 9.2, PROC FREQ can produce the following five intervals(method 1, 3, 9 ,8, 5):</p>
<blockquote><p>Wald&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />Wilson&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />Agresti-Coull&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />Jeffreys&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />Clopper-Pearson (Exact)</p>
</blockquote>
<p style="margin-right: 0px">For the five intervals in SAS 9.2, a good reference is <em>Confidence Intervals for the Binomial Proportion with Zero Frequency</em> by Xiaomin He and Shwu-Jen Wu:</p>
<blockquote><p style="margin-right: 0px"><a href="www.pharmasug.org/download/papers/SP10.pdf" target="_blank">www.pharmasug.org/download/papers/SP10.pdf</a></p>
</blockquote>
<p style="margin-right: 0px">Also, an equivalent R version of the eleven methods by Abteilung Kriminologie is also available at</p>
<blockquote><p style="margin-right: 0px"><a href="http://www2.jura.uni-hamburg.de/instkrim/kriminologie/Mitarbeiter/Enzmann/Software/prop.CI.r">http://www2.jura.uni-hamburg.de/instkrim/kriminologie/Mitarbeiter/Enzmann/Software/prop.CI.r</a></p>
</blockquote>
<p>Such R repository is also a good resource for SAS users. I almost “translate” R implementations directly to SAS for this post.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=EI8kN98ot2w:ZdpvjQplxKo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=EI8kN98ot2w:ZdpvjQplxKo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=EI8kN98ot2w:ZdpvjQplxKo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=EI8kN98ot2w:ZdpvjQplxKo:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=EI8kN98ot2w:ZdpvjQplxKo:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=EI8kN98ot2w:ZdpvjQplxKo:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/EI8kN98ot2w" height="1" width="1"/>]]></content:encoded><description>The following two papers by Professor Robert Newcombe, in my limit observation, are the most frequently cited papers in the industry for CI calculation: Two-sided confidence intervals for the single proportion: comparison of seven methods. Newcombe RG, Stat Med , Volume 17 , 8 (April 1998) pp.857-872 Interval estimation for the difference between independent proportions: [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2011/07/14/a-sas-implementation-of-confidence-intervals-for-single-proportion-eleven-methods/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2011/07/14/a-sas-implementation-of-confidence-intervals-for-single-proportion-eleven-methods/</feedburner:origLink></item><item><title>Dive into CDISC Express (5): Generate and Validate SDTM domains and define.xml</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/kS6svuiB9_g/</link><category>CDISC</category><category>SAS</category><category>CDISC Express</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Thu, 07 Jul 2011 07:32:03 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2011/07/07/dive-into-cdisc-express-5-generate-and-validate-sdtm-domains-and-define-xml/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<blockquote><p><a href="http://www.jiangtanghu.com/blog/2011/06/28/dive-into-cdisc-express-1-introductory/"><em>Dive into CDISC Express (1): Introductory</em></a></p>
<p><em><a href="http://www.jiangtanghu.com/blog/2011/07/02/dive-into-cdisc-express-2-create-a-new-study/">Dive into CDISC Express (2): Create a New Study</a></em></p>
<p><em><a href="http://www.jiangtanghu.com/blog/2011/07/03/dive-into-cdisc-express-3-navigate-mapping-file/">Dive into CDISC Express (3): Navigate mapping file</a></em></p>
</p>
<p><em><a href="http://www.jiangtanghu.com/blog/2011/07/04/dive-into-cdisc-express-4-data-manipulation-techniques-2/" target="_blank">Dive into CDISC Express (4): Data manipulation techniques</a></em></p>
</blockquote>
<p>A more friendly PDF version of these all CDISC Express series is also available in</p>
<blockquote><p><a title="http://jiangtanghu.com/docs/en/CDISCExpress.pdf" href="http://jiangtanghu.com/docs/en/CDISCExpress.pdf">http://jiangtanghu.com/docs/en/CDISCExpress.pdf</a></p>
</blockquote>
<p>The following tasks, such as generating SDTM domains and define.xml, need just some clicking button work in CDISC Express using a well designed mapping file. Few words needed due to the software.</p>
<p> <span id="more-311"></span><br />
<h4><strong>5. Step 3 of 6: Validate mapping file (<em>Validate_Mapping_File.sas</em>)</strong></h4>
<p>It would be back and forth to design, validate then modify and re-validate the mapping file. And sure finally, you will get all the work done, at least no syntax error (how to avoid semantic errors is upon your domain knowledge). A validated mapping file, named mapping.xls will be copied to <b>&#8230;\ doc\Mapping file &#8211; validated version\</b> from the working file, tmpmaping.xls. You will see </p>
<blockquote><p>The corresponding log file in folder <b>&#8230;\ log\</b></p>
<p>A report in <b>…\results\Mapping Validation\</b>, named Mapping_validation.html</p>
</blockquote>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/validate.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="validate" border="0" alt="validate" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/validate_thumb.png" width="499" height="281" /></a> </p>
<p>Also the temporary datasets in <b>…\tempdata\</b> and <b>…\temp\</b>:</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image0041.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image004" border="0" alt="clip_image004" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image004_thumb1.jpg" width="497" height="189" /></a></p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image0061.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image006" border="0" alt="clip_image006" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image006_thumb1.jpg" width="496" height="313" /></a></p>
<h4><b>6. Step 4 of 6: Generate SDTM datasets </b>(<em>generate_SDTM.sas</em>)</h4>
<p>If mapping file is OK, generating SDTM domains is just clicking the button. After submitting the codes, you will see the log file, reports, SDTM datasets and temporary datasets in corresponding folders:</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/SDTM.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="SDTM" border="0" alt="SDTM" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/SDTM_thumb.png" width="506" height="483" /></a> </p>
<h5><b>7. Step 5 of 6: Validate SDTM datasets </b>(<em>Validate_SDTM_Domains.sas</em>)</h5>
<p>The outputs files of validating SDTM datasets are all located in <b>C:\Program Files\CDISC Express\SDTM Validation\</b>:</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image010.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image010" border="0" alt="clip_image010" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image010_thumb.jpg" width="500" height="377" /></a></p>
<h5><b>8. Step 6 of 6: Generate Define.xml and xpt </b>(<em>generate_Definexml.sas</em>)</h5>
<p>Get the final define.xml file and SAS transport files (.xpt):</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image012.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image012" border="0" alt="clip_image012" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image012_thumb.jpg" width="502" height="402" /></a></p>
<h3>9. Recommended reading and action taken</h3>
<p>For a quick start and deep understanding, you could read the official documentations in the following sequence:</p>
<p><b>C:\Program Files\CDISC Express\documentation\FAQ.htm</b></p>
<p><b>C:\Program Files\CDISC Express\documentation\Quick Start.htm</b></p>
<p><b>C:\Program Files\CDISC Express\documentation\User guide.htm</b></p>
<p>A video tutorial would be also helpful:</p>
<p><b>C:\Program Files\CDISC Express\documentation\videotutorial.htm</b></p>
<p>A must-read conference paper, <i>An Excel Framework to Convert Clinical Data to CDISC SDTM Leveraging SAS Technology</i> by Sophie McCallum and Stephen Chan of Clinovo, supplies a wonderful discussion the architectures of CDISC Express:</p>
<p><a href="http://www.lexjansen.com/pharmasug/2011/ad/pharmasug-2011-ad08.pdf">http://www.lexjansen.com/pharmasug/2011/ad/pharmasug-2011-ad08.pdf</a></p>
<p>Of course, you do not need to review all the pages then get the confidence to use the software. Learn by doing and just dive into it. There is an opportunity for your practicing and you will also have a change to win an iPad2 from Clinovo’s CDISC Express Contest:</p>
<blockquote><p><a href="http://www.clinovo.com/cdisc/game">http://www.clinovo.com/cdisc/game</a></p>
</blockquote>
<p>The due day is July 15<sup>th</sup> and I already submitted my work. That’s fun.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=kS6svuiB9_g:Q4JX-HOuaM4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=kS6svuiB9_g:Q4JX-HOuaM4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=kS6svuiB9_g:Q4JX-HOuaM4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=kS6svuiB9_g:Q4JX-HOuaM4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=kS6svuiB9_g:Q4JX-HOuaM4:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=kS6svuiB9_g:Q4JX-HOuaM4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/kS6svuiB9_g" height="1" width="1"/>]]></content:encoded><description>Dive into CDISC Express (1): Introductory Dive into CDISC Express (2): Create a New Study Dive into CDISC Express (3): Navigate mapping file Dive into CDISC Express (4): Data manipulation techniques A more friendly PDF version of these all CDISC Express series is also available in http://jiangtanghu.com/docs/en/CDISCExpress.pdf The following tasks, such as generating SDTM domains [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2011/07/07/dive-into-cdisc-express-5-generate-and-validate-sdtm-domains-and-define-xml/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">3</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2011/07/07/dive-into-cdisc-express-5-generate-and-validate-sdtm-domains-and-define-xml/</feedburner:origLink></item><item><title>Dive into CDISC Express (4): Data manipulation techniques</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/N1ca10FVPrs/</link><category>CDISC</category><category>SAS</category><category>CDISC Express</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Mon, 04 Jul 2011 05:52:42 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2011/07/04/dive-into-cdisc-express-4-data-manipulation-techniques-2/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<blockquote><p><a href="http://www.jiangtanghu.com/blog/2011/06/28/dive-into-cdisc-express-1-introductory/" target="_blank"><em>Dive into CDISC Express (1): Introductory</em></a></p>
<p><em><a href="http://www.jiangtanghu.com/blog/2011/07/02/dive-into-cdisc-express-2-create-a-new-study/" target="_blank">Dive into CDISC Express (2): Create a New Study</a></em></p>
<p><em><a href="http://www.jiangtanghu.com/blog/2011/07/03/dive-into-cdisc-express-3-navigate-mapping-file/" target="_blank">Dive into CDISC Express (3): Navigate mapping file</a></em></p>
</blockquote>
<h3>4.3 Data manipulation techniques in CDISC Express</h3>
<p>CDISC Express supplies relative rich sets of data manipulation techniques assembling with SAS languages used for data mapping. Following is a not limited listing and I will keep it updated.</p>
<h3>4.3.1 Reference one dataset</h3>
<p>A raw dataset name appear in “Dataset” column indicate a “set” operation in SAS.</p>
<p>All dataset options can be used when referencing a dataset, such as</p>
<blockquote><p><font face="Courier New">siteinv(drop=invcode)</font></p>
<p><font face="Courier New">siteinv(rename=(invcode=inv))</font></p>
<p><font face="Courier New">siteinv(where=(invcode ne “”))</font></p>
</blockquote>
<p>You can also reference an external dataset. You should incorporate the external file in spreadsheet with name beginning with an underscore, “_”, and “_visits” in this case:</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image001.gif"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image001" border="0" alt="clip_image001" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image001_thumb.gif" width="434" height="302" /></a></p>
<p>Then you can use it in any domains needed, e.g., TV domain:</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image003.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image003" border="0" alt="clip_image003" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image003_thumb.jpg" width="493" height="244" /></a></p>
<p>There is a macro <font color="#ff0000">%cpd_importlist</font> used to import the external dataset, “_visits”. Again, this macro roots in <b>C:\Program Files\CDISC Express\macros\function_library\</b>.</p>
<p>Using a macro call to re-sharp or modify an input dataset offers great flexibility referencing data. We will also discuss the benefits later on.</p>
<h3>4.3.2 Assignment</h3>
<p>You can assign a number, string and a dataset variable with any valid SAS functions to a SDTM domain variable in “Expression” column. </p>
<p>Sometimes a temporary variable needed for later calculation. You can produce such temporary variable in “Dataset” column with an assignment in the “Expression” column just similar with any other domain variables. Two differences: first, such temporary variables named begin with an asterisk, “*”; second, all temporary variables will not be included in the final domain. Once created, such temporary variables can be used for any other expressions.</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image005.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image005" border="0" alt="clip_image005" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image005_thumb.jpg" width="494" height="312" /></a></p>
<p>There are three special symbols used in “Dataset” column of CDISC Express. Asterisk, “*” indicates a temporary variable, while other two are </p>
<blockquote><p>Tilde, “~” : indicate a variable used for supplemental domain (SUPPQUAL).</p>
<p>Number sign, “#”: indicate a variable used for comments domain (CO).</p>
</blockquote>
<p>Another symbol, at sign, “@”, used in “Expression” column, indicated referencing a variables produced before:</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image006.gif"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image006" border="0" alt="clip_image006" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image006_thumb.gif" width="448" height="104" /></a></p>
<p>In this case, “AGEU” uses “AGE” as input, while “AGE” is calculated before. “@AGE” just indicates the dependency. In concept, it looks like the “calculated” option in SAS PROC SQL:</p>
<blockquote><p><font face="Courier New"><b>proc</b> <b>sql</b> ;</font></p>
<p><font face="Courier New">select (AvgHigh &#8211; <b>32</b>) * <b>5</b>/<b>9</b> as HighC , </font></p>
<p><font face="Courier New">(AvgLow &#8211; <b>32</b>) * <b>5</b>/<b>9</b> as LowC ,</font></p>
<p><font face="Courier New">(calculated HighC &#8211; calculated LowC)</font></p>
<p><font face="Courier New">as Range </font></p>
<p><font face="Courier New">from temps;</font></p>
<p><font face="Courier New"><b>quit</b>;</font></p>
</blockquote>
<h3>4.3.3 Match-merging</h3>
<p>We already got a math-merging example before. If “all” appears as a dataset in the “Dataset” column, all the previous datasets should be merged first for later processing by the common key specified in “Merge Key” column. If no key assigned, patient ID is used by the system.</p>
<p>CDISC Express also supports two types of join, inner join and outer join (left, right, full) using data steps. The implementation has slightly difference with standard SQL, but the ideas are same.</p>
<p>We add a new column, “Join”, usually beside the “Merge Key” column.</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image008.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image008" border="0" alt="clip_image008" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image008_thumb.jpg" width="442" height="377" /></a></p>
<p>There are two values for “Join”, “O” or “I” while “O” stands for “outer join” and “I”, “inner join”. A join indicator “I” equals a dataset option “in=” in action while “O” means no. Use the above as illustration, the corresponding SAS codes behind look like</p>
<blockquote><p><font face="courier new"><b>data</b> temp;</font></p>
<p><font face="courier new">merge demog(in=a) siteinv(in=b);</font></p>
<p><font face="courier new">by sitecode;</font></p>
<p><font face="courier new">if b;</font></p>
<p><font face="courier new"><b>run</b>;</font></p>
</blockquote>
<p>This is so called “right outer join”. The combination of “I” and “O” in these two datasets can perform all the four types of join, one inner join and three outer join: </p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/in.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="in" border="0" alt="in" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/in_thumb.png" width="499" height="313" /></a>&#160;</p>
<p>As we could see, if no “Join” column specified, CDISC Express will perform inner join by default.</p>
<p>So far CDISC Express cannot support multiply merge keys. For example, the following file is illegal currently: </p>
<p>&#160;</p>
<p align="center">
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="138">
<p><b>Dataset </b></p>
</td>
<td valign="top" width="203">
<p><b>Merge Key</b></p>
</td>
</tr>
<tr>
<td valign="top" width="138">
<p>arm&#160;&#160;&#160; </p>
</td>
<td valign="top" width="203">
<p>siteid, grpno</p>
</td>
</tr>
<tr>
<td valign="top" width="138">
<p>armdescri </p>
</td>
<td valign="top" width="203">
<p>siteid, grpno</p>
</td>
</tr>
</tbody>
</table>
<p>The developer Romain indicated that such enhancements would be raised to the next round of product road map and he also proposed a work around. To use multiple keys for merging, we can create a temporary variable holding such multiple keys as a concatenation then this temporary variable can be used as a single merging key.</p>
<h3>4.3.4 Concatenating</h3>
<p>Above we discussed lots about “merge” operation in CDISC Express. This section dedicated for “set” operation. We already know how to “set” one dataset for referencing, but how to “set” multiple datasets, i.e, “Concatenating”?</p>
<p>Symmetrically, an “all” appears in “Dataset” column indicating merging operation, an “all (stack)” indicates concatenating operation:</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image014.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image014" border="0" alt="clip_image014" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image014_thumb.jpg" width="493" height="396" /></a></p>
<p>The above file can be also translated to SAS codes for better understanding:</p>
<p> <span id="more-292"></span><br />
<blockquote>
<p><a name="OLE_LINK2"></a><a name="OLE_LINK1"><b><font face="Courier New">data</font></b></a><font face="Courier New"> height;</font></p>
<p><font face="Courier New">set vtsigns(where=(height ne <b>.</b>));</font></p>
<p><font face="Courier New">VSTESTCD=&quot;HEIGHT&quot;;</font></p>
<p><font face="Courier New">VSTEST =&quot;Height&quot;;</font></p>
<p><font face="Courier New">VSORRES =put(height,best12.);</font></p>
<p><font face="Courier New">VSORRESU=&quot;cm&quot;;</font></p>
<p><font face="Courier New">VSSTRESC=put(height,best12.);</font></p>
<p><font face="Courier New">VSSTRESN=height;</font></p>
<p><font face="Courier New">VSSTRESU=&quot;cm&quot;;</font></p>
<p><font face="Courier New"><b>run</b>;</font></p>
<p><font face="Courier New"><b>data</b> weight;</font></p>
<p><font face="Courier New">set vtsigns(where=(weight ne <b>.</b>));</font></p>
<p><font face="Courier New">VSTESTCD=&quot;WEIGHT&quot;;</font></p>
<p><font face="Courier New">VSTEST =&quot;Weight&quot;;</font></p>
<p><font face="Courier New">VSORRES =put(weight,best12.);</font></p>
<p><font face="Courier New">VSORRESU=&quot;kg&quot;;</font></p>
<p><font face="Courier New">VSSTRESC=put(weight,best12.);</font></p>
<p><font face="Courier New">VSSTRESN=weight;</font></p>
<p><font face="Courier New">VSSTRESU=&quot;cm&quot;;</font></p>
<p><font face="Courier New"><b>run</b>;</font></p>
<p><font face="Courier New"><b>data</b> vs;</font></p>
<p><font face="Courier New">set height weight;</font></p>
<p><font face="Courier New">STUDYID =study;</font></p>
<p><font face="Courier New">DOMAIN =&amp;domain;</font></p>
<p><font face="Courier New">USUBJID =%<b><i>CONCATENATE</i></b>(_variables=study sitecode patid);</font></p>
<p><font face="Courier New">VSSEQ =%<b><i>SEQUENCE</i></b>();</font></p>
<p><font face="Courier New"><b>.</b> <b>.</b> <b>.</b></font></p>
<p><font face="Courier New">run;</font></p>
</blockquote>
<p>4.3.5 Transpose</p>
<p>Clinical SAS programmers do lots of transpose operation to re-sharp the raw data to fit the CDISC standards. Currently there is no explicit guide in CDISC Express on how to transpose, but this is not the end of story.</p>
<p>There are two types of transpose:</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image016.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image016" border="0" alt="clip_image016" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image016_thumb.jpg" width="492" height="207" /></a></p>
<blockquote><p>Type I: from a wide dataset (more variables, less observations) to a long dataset (less variables, more observations), e.g. transposing a one-row-per-subject datasets to a multiple-row-per-subject dataset </p>
</blockquote>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image018.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image018" border="0" alt="clip_image018" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image018_thumb.jpg" width="514" height="224" /></a></p>
<blockquote><p>Type II: from a long dataset (less variables, more observations) to a wide dataset (more variables, less observations), e.g. transposing a multiple-row-per-subject dataset to a one-row-per-subject datasets</p>
</blockquote>
<p>As good practices, in SAS we always use data steps with “output” statement to perform type I transpose and use PROC TRANSPOSE for type II. Although CDISC Express doesn’t support transpose operation in an explicit way, at least you can perform type I transpose and surprisingly we already saw it before!</p>
<p>Just back to section of concatenating. The example is taken from <b>C:\Program Files\CDISC Express\studies\example2\.</b></p>
<p>We can see the input data vtsigns is typical wide table (more variables, less observations):</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image021.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image021" border="0" alt="clip_image021" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image021_thumb.jpg" width="469" height="405" /></a></p>
<p>And the final domain VS is a typical long table (less variables, more observations):</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image023.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image023" border="0" alt="clip_image023" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image023_thumb.jpg" width="303" height="662" /></a></p>
<p>So obviously, such concatenating operation just did a wonderful type I transpose, from a wide table to a long table! More often, the compact SAS codes for type I transpose look like:</p>
<blockquote><p><font face="Courier New"><b>data</b> vs;</font></p>
<p><font face="Courier New">set vtsigns;</font></p>
<p><font face="Courier New">if height ne <b>.</b> then do;</font></p>
<p><font face="Courier New">VSTESTCD=&quot;HEIGHT&quot;;</font></p>
<p><font face="Courier New">VSTEST =&quot;Height&quot;;</font></p>
<p><font face="Courier New">VSORRES =put(height,best12.);</font></p>
<p><font face="Courier New">VSORRESU=&quot;cm&quot;;</font></p>
<p><font face="Courier New">VSSTRESC=put(height,best12.);</font></p>
<p><font face="Courier New">VSSTRESN=height;</font></p>
<p><font face="Courier New">VSSTRESU=&quot;cm&quot;;</font></p>
<p><font face="Courier New">output;</font></p>
<p><font face="Courier New">end;</font></p>
<p><font face="Courier New">if weight ne <b>.</b> then do;</font></p>
<p><font face="Courier New">VSTESTCD=&quot;WEIGHT&quot;;</font></p>
<p><font face="Courier New">VSTEST =&quot;Weight&quot;;</font></p>
<p><font face="Courier New">VSORRES =put(weight,best12.);</font></p>
<p><font face="Courier New">VSORRESU=&quot;kg&quot;;</font></p>
<p><font face="Courier New">VSSTRESC=put(weight,best12.);</font></p>
<p><font face="Courier New">VSSTRESN=weight;</font></p>
<p><font face="Courier New">VSSTRESU=&quot;cm&quot;;</font></p>
<p><font face="Courier New">output;</font></p>
<p><font face="Courier New">end;</font></p>
<p><font face="Courier New"><b>.</b> <b>.</b> <b>.</b></font></p>
<p><font face="Courier New">run;</font></p>
</blockquote>
<h3>4.3.6 All others: use macro!</h3>
<p>Now we discussed almost all the common data derivation techniques in programmers’ daily life and the corresponding implementation in CDISC Express. At least we have one question unsolved: how to perform type II transpose, i.e. from a long table to a wide table?</p>
<p>It would be an open question for the developers of the application. But we can also solve this problem in current framework: use macro, customized macro. You can use macros in “Expression” and “Dataset” column. Macro used in “Dataset” column returns a dataset, while macro in “Expression” column returns series of string: that’s the basic structure you should consider when customize your own macros. For more, you can reference the macros in <b>C:\Program Files\CDISC Express\macros\function_library\</b>. For example, <font color="#ff0000">&amp;concatenate</font> used in “Expression” column; <font color="#ff0000">&amp;cpd_importlist</font> in “Dataset” column.</p>
<p>So it would be convenient to create temporary datasets using macros imbedded type II transpose operation in “Dataset” column. Every thing SAS can do, you can also implement it in CDISC Express. Just use macros, in “Expression” and “Dataset” column accordingly.<b></b></p>
<p>The raw data varies according to trial design and clinical data capture system and procedures. It is impossible and impractical to anticipate the CDISC SDTM converter such as CDISC Express to map all the data just clicking a button. The introducing of CDISC Express doesn’t keep programmers away. It just keeps most of the trivial work away from programmers’ daily life and let them more concentrated on creative work and be productive and efficient.</p>
<p>Following would be the close of such pages.</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/TobeContinued2.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="TobeContinued" border="0" alt="TobeContinued" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/TobeContinued_thumb2.jpg" width="240" height="181" /></a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=N1ca10FVPrs:RH2X5AZzx88:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=N1ca10FVPrs:RH2X5AZzx88:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=N1ca10FVPrs:RH2X5AZzx88:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=N1ca10FVPrs:RH2X5AZzx88:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=N1ca10FVPrs:RH2X5AZzx88:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=N1ca10FVPrs:RH2X5AZzx88:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/N1ca10FVPrs" height="1" width="1"/>]]></content:encoded><description>Dive into CDISC Express (1): Introductory Dive into CDISC Express (2): Create a New Study Dive into CDISC Express (3): Navigate mapping file 4.3 Data manipulation techniques in CDISC Express CDISC Express supplies relative rich sets of data manipulation techniques assembling with SAS languages used for data mapping. Following is a not limited listing and [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2011/07/04/dive-into-cdisc-express-4-data-manipulation-techniques-2/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2011/07/04/dive-into-cdisc-express-4-data-manipulation-techniques-2/</feedburner:origLink></item><item><title>Dive into CDISC Express (3): Navigate mapping file</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/HsV85Fjic1M/</link><category>CDISC</category><category>SAS</category><category>CDISC Express</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Sun, 03 Jul 2011 06:19:18 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2011/07/03/dive-into-cdisc-express-3-navigate-mapping-file/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<blockquote><p><a href="http://www.jiangtanghu.com/blog/2011/06/28/dive-into-cdisc-express-1-introductory/" target="_blank"><em>Dive into CDISC Express (1): Introductory</em></a></p>
<p><a href="http://www.jiangtanghu.com/blog/2011/07/02/dive-into-cdisc-express-2-create-a-new-study/" target="_blank">Dive into CDISC Express (2): Create a New Study</a></p>
</blockquote>
<h2>4. Step 2 of 6: Generate mapping file</h2>
<p>Generating template (blank) mapping file only needs pieces of effort by submitting <i>generate_mapping_template.sas</i>. The toughest one is to fill it with mapping rules according to specified study.</p>
<h3>4.1 Get the blank template mapping file (generate_mapping_template.sas)</h3>
<p>To get the blank template mapping file, just fill the one line of macro call in generate_mapping_template.sas:</p>
<blockquote><p><font face="Courier New">%createmapping(filespec=SDTM_Specs_3_1_1.xls, Dom=CM AE TV, req=YES, perm=YES, exp=YES);</font></p>
</blockquote>
<p>Also, you can specify SDTM implementation version, 3.1.1 or 3.1.2. For domains (&amp;Dom), DM, CO and SUPPQUAL will be created automatically; you should list others accordingly:</p>
<blockquote><p>SDTM 3.1.1: SV CM EX AE DS MH DV EG IE LB PE QS SC VS TV TI XD SU XR XS XE TR (Total: 22)</p>
<p>SDTM 3.1.2: AE CE CM DA DS DV EG EX FA IE LB MB MH MS PC PE PP QS SC SE SU SV TA TE TI TS TV VS (Total: 28)</p>
</blockquote>
<p>You should also choose the “CORE” variable (REQUIRED, PERMISSIBLE and EXPECTED) by triggering &amp;req, &amp;perm, and &amp;exp to “YES” or “NO”. Note that</p>
<blockquote><p>REQUIRED and EXPECTED variables must always be included (req=YES, exp=YES);</p>
<p>PERMISSIBLE variables included if needed (perm=YES or perm=NO)</p>
</blockquote>
<p>Submit <i>generate_mapping_template.sas</i> and you can get a blank template mapping file tmpmapping.xls in <b>C:\Program Files\CDISC Express\temp\</b>. </p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image002.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="clip_image002" border="0" alt="clip_image002" align="left" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image002_thumb.jpg" width="478" height="436" /></a></p>
<p>Copy it to <b>C:\Program Files\CDISC Express\studies\CLINCAP\doc\Mapping file &#8211; working version</b> for example used for study “CLINCAP” and then fill all the blank columns (it NEEDS efforts!). </p>
<p>If this mapping file passes the validation process, a final version named mapping.xls will be copied automatically to <b>C:\Program Files\CDISC Express\studies\CLINCAP\doc\Mapping file &#8211; validated version\</b> for later processing.</p>
<p>Note that if you already have some validated mapping file for other studies, it would serve as a good start rather than using the blank template from the scratch.</p>
<h2>4.2 Navigate mapping file</h2>
<p>Let’s take a look at the “real” worked mapping file for a demo study first, in <b>C:\Program Files\CDISC Express\studies\example1\doc\Mapping file &#8211; working version\</b>.</p>
<p>The first sheet is a welcome dashboard:</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image004.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image004" border="0" alt="clip_image004" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image004_thumb.jpg" width="498" height="292" /></a></p>
<p>Then StudyMetadata sheet, a XML metadata specification used to generate define.xml. you need only add some information in “Values” column:</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image006.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image006" border="0" alt="clip_image006" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image006_thumb.jpg" width="491" height="377" /></a></p>
<p>The FORMAT sheet:</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image007.gif"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image007" border="0" alt="clip_image007" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image007_thumb.gif" width="501" height="324" /></a></p>
<p>Such format structure is similar with the one we export the format from a format catalog using</p>
<blockquote><p><font face="Courier New"><b>proc</b> <b>format</b> library=library cntlout=format_out;</font></p>
<p><font face="Courier New"><b>run</b>;</font></p>
</blockquote>
<p>In most production environment, programmers get formats from clinical data management group. If the entire formats are assigned into proper libraries (work or library), you don’t need to export such formats into this spreadsheet. Of course in the format sheet, you can type some customized format.</p>
<p>A typical domain sheet (AT LAST!) that needs efforts and our understanding of the software, DM for example:</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image009.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image009" border="0" alt="clip_image009" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/clip_image009_thumb.jpg" width="480" height="439" /></a></p>
<p>From the ‘Dataset’ column, three raw datasets from <b>C:\Program Files\CDISC Express\studies\example1\source\</b> needed to map into DM domain, demog, siteinv and eligassess. Note that you can use any data step options such as drop=, rename=, where= for the input datasets.</p>
<p>At the last of ‘Dataset’ column, “all” indicates that all the previous datasets mentioned above should be merged together for final processing. </p>
<p>In the ‘Merge Key’ column, ‘sitecode’ is designed to datasets demog and siteinv which means demog and siteinv should be merged by the common key, ‘sitecode’. </p>
<p>As we mentioned, all the previous datasets should be merged at last. But there is no common key settled in the ‘Merge Key’ column. It is a common rule: if no key specified for merge, USUBJID is used by default.</p>
<p>The third column is ‘CDISC variable’, which list all the needed variables according to implementation version. An important note: you do not need to implement all the variables according to the order as they appear in the blank template mapping file. In the previous blank file, “AGE” in DM domain is ordered in Line 12, but in this working file, “AGE” is calculated in the second last order. The variable order of final DM domain will be as same as the blank one. </p>
<p>It makes sense in practice. For example, the sequential variable, e.g. AESEQ is ordered after USUBJID, but you can only get the sequential number when all other variables well done. So SEQ variables are always computed in the final stage in a working mapping file.</p>
<p>“Expression” column specify the mapping rule from raw datasets to SDTM domains. Assignments, expressions and macro calls (rooted in <b>C:\Program Files\CDISC Express\macros\function_library\</b>) are allowed in this column and most of them are straightforward. We will discuss more in the following section.</p>
<p>Sum up, we can “translate” this mapping sheet to SAS codes for better understanding of CDISC Express architecture: </p>
<p> <span id="more-266"></span><br />
<blockquote>
<p>data tem1;</p>
<p>&#160;&#160;&#160; set demog;</p>
<p>&#160;&#160;&#160; STUDYID=study;</p>
<p>&#160;&#160;&#160; DOMAIN =&amp;domain;</p>
<p>&#160;&#160;&#160; USUBJID=%CONCATENATE(_variables=study sitecode patid);</p>
<p>&#160;&#160;&#160; SUBJID =patid;</p>
<p>RFSTDTC=%D_RFST(_dataset=trtinf,_date=trtinfdt,_key=patid,_ivrsds=ivrs,_ivrsdt=randdat);</p>
<p>RFENDTC=%SORTLOOKUP(_dataset=disc,_variable=fupdat,_key=patid,_sort_variable=fupdat,_keep=last);</p>
<p>&#160;&#160;&#160; SITEID =sitecode;</p>
<p>&#160;&#160;&#160; INVID =invcode;</p>
<p>&#160;&#160; BRTHDTC=%FORMAT(_variable=brthdat,_format=yymmdd10);</p>
<p>&#160;&#160; SEX =%GENDER(_gender=sex);</p>
<p>&#160;&#160; RACE =%D_RACE();</p>
<p>&#160;&#160; ETHNIC =upcase(ethnic);</p>
<p>&#160;&#160; COUNTRY=&quot;USA&quot;;</p>
<p>&#160;&#160;&#160; DMDTC =%FORMAT(_variable=formdat,_format=yymmdd10);</p>
<p>&#160;&#160; ARMCD =&quot;&quot;;</p>
<p>&#160;&#160;&#160; ARM =&quot;&quot;;</p>
<p>run;</p>
<p>&#160;</p>
<p>data tem2;</p>
<p>&#160;&#160;&#160; merge tem1 siteinv(drop=invcode);</p>
<p>&#160;&#160;&#160; by sitecode;</p>
<p>&#160;&#160;&#160; INVNAM=trim(lname)||&quot;,&quot;||fname;</p>
<p>run;</p>
<p>&#160;</p>
<p>data dm;</p>
<p>&#160;&#160;&#160; merge tem2 eligassess;</p>
<p>&#160;&#160;&#160; by patid;</p>
<p>&#160; AGE =year(infcondt)-year(brthdat)-(month(brthdat)&gt;month(infcondt))-(month(brthdat)=month(infcondt) and day(brthdat)&gt;day(infcondt));</p>
<p>AGEU=%CONVERTIF(<a href="mailto:_if_variable=@AGE,_if_value=.,_then_value">_if_variable=@AGE,_if_value=.,_then_value</a>=, _else_value=YEARS);</p>
<p>run;</p>
</blockquote>
<p>Following will be some explore the data manipulation techniques in CDISC Express, such as merge, transpose.</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/TobeContinued1.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="TobeContinued" border="0" alt="TobeContinued" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/TobeContinued_thumb1.jpg" width="246" height="187" /></a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=HsV85Fjic1M:mtJqA3390s8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=HsV85Fjic1M:mtJqA3390s8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=HsV85Fjic1M:mtJqA3390s8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=HsV85Fjic1M:mtJqA3390s8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=HsV85Fjic1M:mtJqA3390s8:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=HsV85Fjic1M:mtJqA3390s8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/HsV85Fjic1M" height="1" width="1"/>]]></content:encoded><description>Dive into CDISC Express (1): Introductory Dive into CDISC Express (2): Create a New Study 4. Step 2 of 6: Generate mapping file Generating template (blank) mapping file only needs pieces of effort by submitting generate_mapping_template.sas. The toughest one is to fill it with mapping rules according to specified study. 4.1 Get the blank template [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2011/07/03/dive-into-cdisc-express-3-navigate-mapping-file/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2011/07/03/dive-into-cdisc-express-3-navigate-mapping-file/</feedburner:origLink></item><item><title>Dive into CDISC Express (2): Create a New Study</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/kYPBSm-7Zzw/</link><category>CDISC</category><category>SAS</category><category>CDISC Express</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Sat, 02 Jul 2011 06:21:22 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2011/07/02/dive-into-cdisc-express-2-create-a-new-study/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<blockquote><p><a href="http://www.jiangtanghu.com/blog/2011/06/28/dive-into-cdisc-express-1-introductory/" target="_blank"><em>Dive into CDISC Express (1): Introductory</em></a></p>
</blockquote>
<h4>3. Step 1 of 6: Create a new study (<i>create_new_study.sas</i>)</h4>
<p>Open <i>create_new_study.sas</i> in <b>C:\Program Files\CDISC Express\programs\</b>, you can see only one line of a macro call:</p>
<blockquote><p><font face="Courier New">%addnewstudy(studyname=my new study);</font></p>
</blockquote>
<p>Just assign a study name to the macro variable, <font color="#ff0000">&amp;studyname,</font> e.g, “CLINCAP”:</p>
<blockquote><p><font face="Courier New">%addnewstudy(studyname= CLINCAP);</font></p>
</blockquote>
<p>Submit the codes, you can find a folder named “CLINCAP” with the same structure as the two demo studies imbedded in this application(example1 and example2) in <b>C:\Program Files\CDISC Express\studies\</b>, <i>see</i>(the left and right panels are folders and files before and after the execution of <i>create_new_study.sas</i>. The following the same): </p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/new.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="new" border="0" alt="new" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/new_thumb.png" width="516" height="347" /></a> </p>
<blockquote><p>Folder ‘<strong>doc</strong>’ is used to hold the mapping files;</p>
<p>Folder ‘<strong>log</strong>’ used to hold log files generated by following macro calls, such as generating SDTM domains;</p>
<p>Folder ‘<strong>results</strong>’ and its subfolder will hold all the outputs, such as define.xml, SAS transport file, validation reports and SDTM datasets;</p>
<p>Folder ‘<strong>source</strong>’ holds all the clinical raw data used as inputs for SDTM domains;</p>
<p>Folder ‘<strong>tempdata</strong>’ holds all the temporary datasets generated by following macro calls.</p>
</blockquote>
<p>Also, a configuration file named <i>CLINCAP_configuration.sas</i> put in <b>C:\Program Files\CDISC Express\programs\study configuration\</b>. This file is used to set some study level parameters, such as lab and toxicity specifications (details in <b>C:\Program Files\CDISC Express\specs\Lab specs\</b>). </p>
<p>Two versions of SDTM implementation guides are supported by CDISC Express, CDISC SDTM Implementation Guide Version 3.1.1 and Version 3.1.2. You can find the corresponding specification files in <b>C:\Program Files\CDISC Express\specs\SDTM specs\</b>:</p>
<blockquote><p>SDTM_Specs_3_1_1.xls</p>
<p>SDTM_Specs_3_1_2.xls</p>
</blockquote>
<p>The choosing of SDTM implementation version is also coded in the configuration file, in Line 41:</p>
<blockquote><p><font face="Courier New">%LET SDTMSPECFILE=SDTM_Specs_3_1_1.xls;</font></p>
</blockquote>
<p>Version 3.1.1 is used by default. You can also choose Version 3.1.2 if needed:</p>
<blockquote><p><font face="Courier New">%LET SDTMSPECFILE=SDTM_Specs_3_1_2.xls;</font></p>
</blockquote>
<p>Assign a study name and choose a SDTM implementation version. That’s all needed in step 1. Let’s take few minutes to navigate the software. CDISC Express is a set of macros and Excel files. It is important to know the file structure first:</p>
<blockquote><p><b>C:\Program Files\CDISC Express\</b></p>
<p>├─<strong>documentation</strong> :FAQ, Quick Start, User Guide</p>
<p>├─<strong>macros</strong></p>
<p>│ ├─ClinMap :system level macros</p>
<p>│ └─function_library :study level macros</p>
<p>├─<strong>programs</strong> :&quot;action taken&quot; macros</p>
<p>│ ├─study configuration :study parameters configuration</p>
<p>├─<strong>SDTM Validation</strong> :For validation of SDTM domains</p>
<p>│ └─study1</p>
<p>├─<strong>specs</strong> :specification files</p>
<p>│ ├─Excel engine :ExcelXP tagset file</p>
<p>│ ├─Lab specs :lab and toxicity</p>
<p>│ ├─Mapping validation :validation rules</p>
<p>│ ├─SDTM specs :hold two versions of SDTM implementation</p>
<p>│ └─SDTM Terminology :SDTM codelist(including NCI terminology)</p>
<p>├─<strong>studies</strong></p>
<p>│ ├─example1</p>
<p>└─<strong>temp</strong> :hold temporary data not specified to any studies</p>
</blockquote>
<p>As we already got, all the “action taken” programs such as <i>create_new_study.sas</i> are located in <b>C:\Program Files\CDISC Express\programs\</b>. In <i>create_new_study.sas</i>, one macro is called, <i><font color="#ff0000">%addnewstudy</font></i>, which is in <b>C:\Program Files\CDISC Express\macros\ClinMap\</b>.</p>
<p>Note that in <b>C:\Program Files\CDISC Express\macros\</b>, there are two sets of macros in different folders:</p>
<blockquote><p><b>C:\Program Files\CDISC Express\macros\ClinMap\</b>: this folder holds all “system” level macros used by the application only. No modification encouraged.</p>
<p><b>C:\Program Files\CDISC Express\macros\function_library\</b>: macros used for mapping among studies. You can also create you own macro in this folder. The application imbedded macros also documented in user guide.</p>
</blockquote>
<p>Following will be the most important part, mapping file.</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/TobeContinued.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="TobeContinued" border="0" alt="TobeContinued" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/07/TobeContinued_thumb.jpg" width="240" height="181" /></a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=kYPBSm-7Zzw:bv1qTw2AegA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=kYPBSm-7Zzw:bv1qTw2AegA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=kYPBSm-7Zzw:bv1qTw2AegA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=kYPBSm-7Zzw:bv1qTw2AegA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=kYPBSm-7Zzw:bv1qTw2AegA:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=kYPBSm-7Zzw:bv1qTw2AegA:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/kYPBSm-7Zzw" height="1" width="1"/>]]></content:encoded><description>Dive into CDISC Express (1): Introductory 3. Step 1 of 6: Create a new study (create_new_study.sas) Open create_new_study.sas in C:\Program Files\CDISC Express\programs\, you can see only one line of a macro call: %addnewstudy(studyname=my new study); Just assign a study name to the macro variable, &amp;#38;studyname, e.g, “CLINCAP”: %addnewstudy(studyname= CLINCAP); Submit the codes, you can find [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2011/07/02/dive-into-cdisc-express-2-create-a-new-study/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2011/07/02/dive-into-cdisc-express-2-create-a-new-study/</feedburner:origLink></item><item><title>ADJECTIVE Encounters</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/IapeeFeRB_U/</link><category>misc</category><category>adjective</category><category>English</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Fri, 01 Jul 2011 19:51:57 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2011/07/02/adjective-encounters/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<blockquote><p>Really she is the strangest creature in the world, far from heroic, variable as a weathercock, “<strong>bashful, insolent; chaste, lustful; prating, silent; laborious, delicate; ingenious, heavy; melancholic, pleasant; lying, true; knowing, ignorant; liberal, covetous, and prodigal</strong>”— in short, so complex, so indefinite, …</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8211;Virginia Woolf, <em>The Common Reader</em>, First Series (1925)</p>
</blockquote>
<p>I don’t know if Ernest Hemingway is still one of the recognized dominant writers in colleges English education. At least once&#160; a time he WAS. In an extreme form, he used only nouns and verbs to construct sentences.</p>
<p>In my personal English education(as Second Language), admittedly that there is also an absence of adjectives. It is just wonderful, nice, great, cool, weird, awesome,&#160; and all in all, everything is OK or not OK, good or not good. In writing, my sentences lack of tone and shades. I write only technical articles in English and people can often well manage the so-called technical borings when acquiring information, knowledge, and opinions. </p>
<p>In reading when I try to just read for the sake of reading itself, I also find it is difficult to dig into pure literature pages where rich adjectives assembled heavily. I only read smoothly technical papers. So when I happened to have a paper book of Woolf and also loaded a corresponding public domain e-book in Kindle, I read the most intensive instances of adjectives ever. It is really totally different experiences. </p>
<p>There would be three types in any languages. For English: </p>
<blockquote><p>in the top, pure literature, Shakespeare-like; </p>
<p>middle, which could be called the universal or international English; it is be the dominate English among nations in business, technology and even academia; most of the popular writers also utilize such sort of English to extent their global reputation;</p>
<p>bottom, the street language, slangs, talk-show. </p>
</blockquote>
<p>I penetrate the English through the middle like almost all of the ESL learners. It is the most convenient and effective way in a very short run. But for a leap in long run, some friends just suggest that I should go down the street or climb up to the top. Ok I am on the way. Virginia Woolf is the first stop and I keep the first notes.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=IapeeFeRB_U:y00so1_siHo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=IapeeFeRB_U:y00so1_siHo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=IapeeFeRB_U:y00so1_siHo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=IapeeFeRB_U:y00so1_siHo:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=IapeeFeRB_U:y00so1_siHo:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=IapeeFeRB_U:y00so1_siHo:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/IapeeFeRB_U" height="1" width="1"/>]]></content:encoded><description>Really she is the strangest creature in the world, far from heroic, variable as a weathercock, “bashful, insolent; chaste, lustful; prating, silent; laborious, delicate; ingenious, heavy; melancholic, pleasant; lying, true; knowing, ignorant; liberal, covetous, and prodigal”— in short, so complex, so indefinite, … &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;#8211;Virginia Woolf, The Common Reader, First Series (1925) I don’t know [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2011/07/02/adjective-encounters/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2011/07/02/adjective-encounters/</feedburner:origLink></item><item><title>Dive into CDISC Express (1): Introductory</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/kssQChu-I0c/</link><category>CDISC</category><category>SAS</category><category>XML</category><category>CDISC Express</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Tue, 28 Jun 2011 06:24:33 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2011/06/28/dive-into-cdisc-express-1-introductory/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Recently I did for my personal project some research on <a href="http://www.clinovo.com" target="_blank">Clinovo</a>’s open source application, <a href="http://www.clinovo.com/cdisc" target="_blank">CDISC Express</a>, a SAS application based on Excel framework designed to map clinical data to CDISC SDTM domains automatically. Not perfect yet, but it is easily understandable and practically usable after few hours’ of exploration of user guide. And most important, it is on the right way: an automatic CDISC converter is the magic weapon in almost every clinical programmer’s dream.</p>
<p>CDISC Express is the first and only practically usable open source CDISC converter I even met. I wrote <a href="http://www.jiangtanghu.com/blog/2011/05/16/cdisc-express-a-glance" target="_blank">a post a month ago</a> when I first tested it with great interests and reported some issues to its <a href="http://cdiscsupport.clinovo.com/" target="_blank">fix system</a>. Then I also had the great opportunity to discuss the software via email with its core developer, Romain Miralles. This post is just my personal notes on how to use and dig into the software, and will be best serve as a working documentation. You can return to me for any questions and comments.</p>
<p>By the way, there is an opportunity for your practicing and you will also have a change to win an iPad2 from Clinovo’s CDISC Express Contest:</p>
<blockquote><p><a href="http://www.clinovo.com/cdisc/game">http://www.clinovo.com/cdisc/game</a></p>
</blockquote>
<p>The due day is July 15<sup>th</sup> and I already submitted my work. That’s fun.</p>
<h1>1. Download and Installation</h1>
<p>You can get CDISC Express for free in</p>
<blockquote><p><a href="http://www.clinovo.com/cdisc/download">http://www.clinovo.com/cdisc/download</a></p>
</blockquote>
<p>It is a window application and will be installed by default in </p>
<blockquote><p><b>C:\Program Files\CDISC Express\</b></p>
</blockquote>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/06/clip_image0024.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image002[4]" border="0" alt="clip_image002[4]" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/06/clip_image0024_thumb.jpg" width="420" height="333" /></a></p>
<p>After installation, this path will be coded as a macro variable <font color="#ff0000">&amp;CDISCPATH</font> in the following six SAS files which are all located in <b>C:\Program Files\CDISC Express\programs\</b>:</p>
<blockquote><p><i>create_new_study.sas</i></p>
<p><i>generate_Definexml.sas</i></p>
<p><i>generate_mapping_template.sas</i></p>
<p><i>generate_SDTM.sas</i></p>
<p><i>Validate_Mapping_File.sas</i></p>
<p><i>Validate_SDTM_Domains.sas</i></p>
</blockquote>
<p>The macro variable reads as</p>
<blockquote><p><font face="Courier New">%LET CDISCPATH = C:\Program Files\CDISC Express;</font></p>
</blockquote>
<p>If you change the destination folder at the installation stage, e.g., to <b>D:\CDISC Express\</b>, the value of the macro variable <font color="#ff0000">&amp;CDISCPATH</font> will be changed accordingly in the six files mentioned before:</p>
<blockquote><p><font face="Courier New">%LET CDISCPATH = D:\CDISC Express;</font></p>
</blockquote>
<p>Note that if you want copy the whole folder of files to another destination, you should at least manually change the value of <font color="#ff0000">&amp;CDISCPATH</font> in such six files or add some codes to capture the path accordingly. From this point of view, the path setting of CDISC Express is not completely portable. Recommend that if you have such needs, just re-install the software in any destination you want. It will not write any records into registry and you can have many copies in one machine.</p>
<p>The following discussion assumes the software roots in <b>C:\Program Files\CDISC Express\.</b></p>
<h1><b>2. </b><b>Working Flow</b></h1>
<p>You can follow all the 6 action steps one by one coded in</p>
<blockquote><p><b>C:\Program Files\CDISC Express\programs\</b></p>
</blockquote>
<h5>1) Create a new study (<i>create_new_study.sas</i>)</h5>
<p>Simple and easy. Just assign a new study name in a macro call and run.</p>
<h5>2) Generate mapping file (<i>generate_mapping_template.sas</i>)</h5>
<p>This is the critical and most time consuming part. You should design mapping rules for every domain needed in Excel spreadsheets (the MAPPING FILE). If done, all other tasks, such as generate SDTM datasets, SAS transport files, define.xml and validation, can be well done by just clicking<a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/06/clip_image0034.gif"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image003[4]" border="0" alt="clip_image003[4]" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/06/clip_image0034_thumb.gif" width="37" height="33" /></a> buttons </p>
<p>.</p>
<h5>3) Validate mapping file (<i>Validate_Mapping_File.sas</i>)</h5>
<p>For validating the mapping file, just click the button. As mentioned, the most important work is designing mapping file. It would be back and forth to design mapping file and validate it.</p>
<h5>4) Generate SDTM datasets (<i>generate_SDTM.sas</i>)</h5>
<p>If mapping file is OK, click the button.</p>
<h5>5) Validate SDTM datasets (<i>Validate_SDTM_Domains.sas</i>)</h5>
<p>Click the button.</p>
<h5>6) Generate Define.xml (<i>generate_Definexml.sas</i>)</h5>
<p>Click the button.</p>
<p>Following part will dig into the software step by step.</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/06/TobeContinued.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="TobeContinued" border="0" alt="TobeContinued" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/06/TobeContinued_thumb.jpg" width="240" height="181" /></a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=kssQChu-I0c:UYoCuk4uTcc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=kssQChu-I0c:UYoCuk4uTcc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=kssQChu-I0c:UYoCuk4uTcc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=kssQChu-I0c:UYoCuk4uTcc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=kssQChu-I0c:UYoCuk4uTcc:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=kssQChu-I0c:UYoCuk4uTcc:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/kssQChu-I0c" height="1" width="1"/>]]></content:encoded><description>Recently I did for my personal project some research on Clinovo’s open source application, CDISC Express, a SAS application based on Excel framework designed to map clinical data to CDISC SDTM domains automatically. Not perfect yet, but it is easily understandable and practically usable after few hours’ of exploration of user guide. And most important, [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2011/06/28/dive-into-cdisc-express-1-introductory/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2011/06/28/dive-into-cdisc-express-1-introductory/</feedburner:origLink></item><item><title>SAS Global Forum 2011: Personal Notes</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/SUEIy8PbjqE/</link><category>SAS</category><category>Las Vegas</category><category>SAS Global Forum</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Sat, 04 Jun 2011 01:05:46 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2011/06/04/sgf2011/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<blockquote><p>It’s wonderful. It’s awful. It’s wonderfully awful and awfully wonderful. –<em>Frommer’s Las Vegas 2010</em></p>
</blockquote>
<p>June at last! June, July and August (great thanks to <strong>French</strong> colleagues!) would be the best time to prepare a paper for next year’s SAS Global Forum (SGF, <a href="http://support.sas.com/events/sasglobalforum/2012/index.html" target="_blank">2012 in Orlando, Florida</a>). SGF2012 will hold at the “real” Walt Disney at Orlando against Las Vegas, the adults’ Walt Disney for SGF2011. Lots of children will be anticipated to register as guests for this meeting and I may contribute one:).</p>
<p>Before moving to 2012, I need to add some notes on 2011. It was my first time to present at SAS Global Forum, my first time to attend the Forum and even my first time out of China. First of all, I’d like to extend my special thanks to </p>
<p>Nancy Brucken of i3, section chair of Planning and Support who served as my key contact of the conference committee for all the coordination stuff</p>
<p>Duke Owen of Westat, my mentor of this year’s <a href="http://support.sas.com/events/sasglobalforum/2011/mentor.html" target="_blank"><strong>SAS Global Forum Presenter Mentoring Program</strong></a><strong>. </strong>We had intensive communication via email, telephone and WebEx, <em>see</em> </p>
<blockquote><p>01/25/2011 initial call.&#160; review abstract and title      <br />02/01/2011 final abstract submission, no call       <br />02/08/2011 no call &#8211; Chinese New Year celebration continues       <br />02/15/2011 call &#8211; review paper       <br />02/22/2011 call &#8211; finalize paper for submission       <br />02/25/2011 submission of pdf (on or before this date)       <br />03/01/2011 call &#8211; first draft of slides, or at least the outline of your plan       <br />03/08/2011 call &#8211; refine the slides and preview of what your script for presentation       <br />03/15/2011 call &#8211; &quot;live&quot; presentation for Duke.&#160;&#160; This can be done just on our pc&#8217;s or as a WebEx       <br />03/22/2011 call &#8211; WebEx for a wider audience.&#160; We can discuss who to invite and adjust time as needed.       <br />03/29/2011 call &#8211; Finalize slides/script for you to send to Nancy Brucken       <br />04/02/2011 Duke arrives in Las Vegas       <br />04/03/2011 John arrives in Las Vegas (I think)       <br />04/04/2011 Rehearsal room practice and final slides to Nancy       <br />04/05/2011 Show Time:&#160; Tuesday 3:00-3:20 pm&#160;&#160;&#160; ,&#160; drinks on me at the kickback       <br />04/06/2011 It is all in the past       <br />04/08/2011 Duke leaves Las Vegas</p>
</blockquote>
<p>Last but not least, I also want to thank my boss and my company to support and sponsor me the trip. It is not a world-peace speech. Economy is tough worldwide and few SAS programmers in China could get the opportunity to attend the Forum. In my observation, even in US, relative fewer programmers in pharmaceutical company and other industries attended SGF2011 compared former years. </p>
<p>That might be also one of the reasons why in this year, SAS Institute had a stronger presence at Las Vegas. For me, it’ not bad. I had the opportunity to meet and talk with some of my former colleagues at SAS R&amp;D Beijing and Cary (even when we’re all in Beijing, we have few chance to meet together). What’s more, SGF2011 had wonderful <strong>SAS Support and Demo Area</strong> and <strong>Hands-on Workshop </strong>fully<strong> </strong>supported by the Institute. It was definitely great opportunity to learn almost all parts of SAS system by talking with R&amp;D staff directly. Admitted that I spent more time in the demo room instead of the user presentation room (I can read all the user papers after the Forum, but there is only one chance I can talk with R&amp;D staff about the software itself!)</p>
<p>My personal presence at Las Vegas:</p>
<p>1.&#160; Monday, April 4, attended the pre-conference training, <strong><em>Data Simulation for Evaluation Statistical Methods in SAS</em></strong> by <a href="http://blogs.sas.com/iml/" target="_blank">Rick Wicklin</a>. Rick is a famous blog writer on IML(<em><a href="http://blogs.sas.com/iml/" target="_blank">The DO Loop</a></em>), SAS’s matrix language. His blog is just as popular as Chris Hemedinger’s <em><a href="http://blogs.sas.com/sasdummy/" target="_blank">The SAS Dummy</a></em>, a blog on SAS Enterprise Guide. It’s wonderful to talk with these two bloggers face to face!</p>
<p>2. Tuesday, April 5, I was invited to a panel discussion on <strong>SAS Business Visualization and Mobile Computing</strong> in a SAS BI Product Development Focus Group, hosted by 3 SAS directors, developer Justin Choy, product manager Pyan Schmidt and marketing Jo Fisher. Visualization and mobile computing (in iPad, iPhone, …) are two of most hottest topics in Las Vegas. This Focus Group also wanted to gather feedbacks from end users.</p>
<p>3. Tuesday, April 5, my presentation, <em><a href="http://support.sas.com/resources/papers/proceedings11/211-2011.pdf" target="_blank">Work Smarter Rather than Harder- Tools for Growing up A SAS® Programmer</a></em>.</p>
<p>4. Wednesday, April 6, <strong>one or two seconds</strong> personal show up in Gregory Nelson and Neil Howard’s featured presentation in lunch, <strong><em>Revenge of the Semicolon People: Business Analytics at Work</em></strong>.&#160; !!!!! </p>
<p>That time Duke and me were in the same table and Greg and Neil were just showing they slides. Suddenly I found a picture of Duke, Shane and me was in the presentation for SGF2011 after some historical pictures for 2010. It just flashed past but it was enough to excite around the table!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=SUEIy8PbjqE:FTnkLiIZFoM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=SUEIy8PbjqE:FTnkLiIZFoM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=SUEIy8PbjqE:FTnkLiIZFoM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=SUEIy8PbjqE:FTnkLiIZFoM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=SUEIy8PbjqE:FTnkLiIZFoM:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=SUEIy8PbjqE:FTnkLiIZFoM:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/SUEIy8PbjqE" height="1" width="1"/>]]></content:encoded><description>It’s wonderful. It’s awful. It’s wonderfully awful and awfully wonderful. –Frommer’s Las Vegas 2010 June at last! June, July and August (great thanks to French colleagues!) would be the best time to prepare a paper for next year’s SAS Global Forum (SGF, 2012 in Orlando, Florida). SGF2012 will hold at the “real” Walt Disney at [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2011/06/04/sgf2011/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2011/06/04/sgf2011/</feedburner:origLink></item><item><title>CDISC Express: A Glance</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/2ox6mg1OHzk/</link><category>CDISC</category><category>SAS</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Sun, 15 May 2011 09:48:31 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2011/05/16/cdisc-express-a-glance/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>This weekend I tested an application that can automatically transform clinical data to CDISC SDTM compliant datasets(3.1.1 and 3.1.2), <a href="http://www.clinovo.com/cdisc" target="_blank">CDISC Express</a> of <a href="http://www.clinovo.com/" target="_blank">Clinovo</a>. According to its license statements, you can download it for free and for personal use only.</p>
<p>The core of CDISC Express is an Excel configuration file called Mapping File which defines all the metadata and mapping rules required by CDISC SDTM standard. Then a set of SAS macros is used to</p>
<ul>
<li>validate the SDTM mapping file </li>
<li>generate SDTM datasets </li>
<li>generate define.xml file </li>
<li>validate the SDTM datasets </li>
</ul>
<p>I found its architecture is simple, concise and powerful. When mentioned “simple”, I mean it is easy to understand and implement. It is still in its version 1.0, I wish following enhancements in the future according my personal user experiences: </p>
<ul>
<li>More web browsers supports for define.xml file and documentation </li>
<li><strong>More merge or set types</strong> </li>
<li>Debug mechanism enhancement </li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=2ox6mg1OHzk:HkrSdjqkhTM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=2ox6mg1OHzk:HkrSdjqkhTM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=2ox6mg1OHzk:HkrSdjqkhTM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=2ox6mg1OHzk:HkrSdjqkhTM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=2ox6mg1OHzk:HkrSdjqkhTM:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=2ox6mg1OHzk:HkrSdjqkhTM:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/2ox6mg1OHzk" height="1" width="1"/>]]></content:encoded><description>This weekend I tested an application that can automatically transform clinical data to CDISC SDTM compliant datasets(3.1.1 and 3.1.2), CDISC Express of Clinovo. According to its license statements, you can download it for free and for personal use only. The core of CDISC Express is an Excel configuration file called Mapping File which defines all [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2011/05/16/cdisc-express-a-glance/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2011/05/16/cdisc-express-a-glance/</feedburner:origLink></item><item><title>Sail for Las Vegas!</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/QE8mlI6qu00/</link><category>SAS</category><category>SGF</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Sat, 19 Mar 2011 06:53:48 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2011/03/19/sas-web2-0/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<blockquote><p>look to the master,<br />
follow the master,<br />
walk with the master,<br />
see through the master,<br />
become the master.</p></blockquote>
<p>The SAS Global Forum 2011 (Apr 4-7, Las Vegas) papers are now available on line:</p>
<p><a href="http://support.sas.com/resources/papers/proceedings11/TOC.html">http://support.sas.com/resources/papers/proceedings11/TOC.html</a></p>
<p>There are lots of Web 2.0 elements in this year’s SGF, including a Twitter hashtag <a href="http://twitter.com/SASGlobalForum" target="_blank">#SASGF11</a>, <a href="www.facebook.com/SASGlobalForum" target="_blank">a Facebook account</a>, <a href="blogs.sas.com/sgf" target="_blank">a blog</a>, <a href="http://www.linkedin.com/groups/SAS-Global-Forum-2011-2993852" target="_blank">a LinkedIn group</a>, and of course, <a href="sasCommunity.org" target="_blank">sasCommunity.org</a>. I will give a talk at this conference (<a href="http://sgf2011.confnav.com/sgf2011/web/sessions/detail.html?id=20101023091009653775000000" target="_blank">Tuesday, April 5, 05:30- 05:50 PM, Promenade Level, Neopolitan IV</a>) to discuss how to get informed with little efforts from such multiple channels for SAS programmers using Gmail and Good Reader to create a personal information portal. That is part of my first SAS paper, <em><a href="http://support.sas.com/resources/papers/proceedings11/211-2011.pdf" target="_blank">Work Smarter Rather than Harder- Tools for Growing up A SAS® Programmer</a>.</em></p>
<p>It will also be my first presence in SGF. Just can’t wait to walk with SAS masters there!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=QE8mlI6qu00:74vfp7KSSa4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=QE8mlI6qu00:74vfp7KSSa4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=QE8mlI6qu00:74vfp7KSSa4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=QE8mlI6qu00:74vfp7KSSa4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=QE8mlI6qu00:74vfp7KSSa4:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=QE8mlI6qu00:74vfp7KSSa4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/QE8mlI6qu00" height="1" width="1"/>]]></content:encoded><description>look to the master, follow the master, walk with the master, see through the master, become the master. The SAS Global Forum 2011 (Apr 4-7, Las Vegas) papers are now available on line: http://support.sas.com/resources/papers/proceedings11/TOC.html There are lots of Web 2.0 elements in this year’s SGF, including a Twitter hashtag #SASGF11, a Facebook account, a blog, [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2011/03/19/sas-web2-0/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2011/03/19/sas-web2-0/</feedburner:origLink></item><item><title>Too Big to Be Accurate(1): Which is the Most Powerful Calculator in the World?</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/tZ35VlDVVGk/</link><category>misc</category><category>SAS</category><category>Approximation</category><category>C++</category><category>Excel</category><category>factorial</category><category>Google Calculator</category><category>Python</category><category>R</category><category>recursion</category><category>Windows Calculator</category><category>WolframAlpha</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Sat, 22 Jan 2011 01:05:17 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2011/01/22/big-numbers/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Calculate the factorial of 171 (171!)? Just TRY! It is equal to 171*170*169*….2*1.</p>
<h3>1. Google calculator</h3>
<p>As Google fanatics, I first try to search the answer via Google:</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/01/Google171.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Google171" border="0" alt="Google171" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/01/Google171_thumb.png" width="336" height="116" /></a> </p>
<p>Whoops, nothing interested returned! Type “170!” and get the output:</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/01/Google170.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Google170" border="0" alt="Google170" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/01/Google170_thumb.png" width="244" height="110" /></a> Why kinda things happened in this calculator? 171! is just equal to 171*170!.</p>
<h3>2. Excel</h3>
<p>Switch to Excel spreadsheet. Function fact(*) used:</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/01/Excel170.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Excel170" border="0" alt="Excel170" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/01/Excel170_thumb.png" width="228" height="66" /></a> <a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/01/Excel171.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Excel171" border="0" alt="Excel171" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/01/Excel171_thumb.png" width="244" height="64" /></a> Oo, interesting. The same. </p>
<h3>3. SAS</h3>
<p>Google and Excel may be the niche players in calculators’ family. Why not try to use some programming languages?</p>
<p> <span id="more-216"></span>
<p>As a SAS programmer, my handy tool is SAS of course.</p>
<p>First, I use <strong>SAS data step</strong> with its build-in function fact(*):</p>
<blockquote><p><font face="Courier New">data _null_;        <br />&#160;&#160;&#160; x=fact(170);         <br />&#160;&#160;&#160; y=fact(171);         <br />&#160;&#160;&#160; put x= y=;         <br />run;</font></p>
</blockquote>
<p>and I get</p>
<blockquote><p>NOTE: Invalid argument to function FACT at line 49 column 7.      <br /><font color="#ff0000">x=7.257416E306 y=.</font>       <br /><font color="#ff0000">x=7.257416E306 y=. _ERROR_=1 _N_=1</font>       <br />NOTE: Mathematical operations could not be performed at the following places. The results of the operations have been set to missing values.</p>
</blockquote>
<p>Expected or unexpected? I don’t know how this fact(*) function is defined, and&#160; try to define a function to calculate the factorials by myself. In SAS 9.2, you can use <strong>PROC FCMP</strong>(also available at 9.1.3 as a experimental procedure):</p>
<blockquote><p><font face="Courier New">proc fcmp outlib = work.funcs.math ;        <br />&#160;&#160;&#160; function factorial(k) ;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; if k = 0 then return(1) ;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; z = k ; *preserve k ;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; x = factorial(k-1) ;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; k = z ; *recover k ;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; k = k * x ;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; return(k) ;         <br />&#160;&#160;&#160; endsub ;         <br />quit ; </font></p>
<p><font face="Courier New">options cmplib=work.funcs ; </font></p>
</blockquote>
<p>Use this self-defined function to get 170!</p>
<blockquote><p><font face="Courier New">proc fcmp ;        <br />&#160;&#160;&#160; x = factorial (170) ;         <br />&#160;&#160;&#160; put x = ;         <br />run ; </font></p>
</blockquote>
<p>The FCMP procedure returns</p>
<blockquote><p>x=7.257416E306</p>
</blockquote>
<p>Try to calculate 171! ?</p>
<blockquote><p><font face="Courier New">proc fcmp ;        <br />&#160;&#160;&#160; y = factorial (171) ;         <br />&#160;&#160;&#160; put y = ;         <br />run ;</font></p>
</blockquote>
<p>Just get the overflow error. The interaction stops at 170!:</p>
<blockquote><p>ERROR: An overflow occurred during execution in function &#8216;factorial&#8217; in statement number 7 at&#160;&#160; line 10 column 1.      <br />&#160;&#160;&#160;&#160;&#160;&#160; The statement was:       <br />&#160;&#160;&#160; 1&#160;&#160;&#160;&#160;&#160; (10:1)&#160;&#160;&#160; k = (k=171) * (<font color="#ff0000">x=7.257416E306</font>)</p>
</blockquote>
<p>The above function definitions use recursion. Recursion may have some limitation on efficiency. We could try the loop without recursion. <strong>SAS/IML</strong> doesn’t support recursion. Let SAS/IML to the court:</p>
<blockquote><p><font face="Courier New">proc iml;        <br />&#160;&#160;&#160; start factorial (n);         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; fact=1;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; do i=1 to n;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; fact=fact*i;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; end;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; return (fact);         <br />&#160;&#160;&#160; finish factorial;</font></p>
<p><font face="Courier New">&#160;&#160;&#160; x= factorial (170);        <br />&#160;&#160;&#160; print x;</font></p>
<p><font face="Courier New">&#160;&#160;&#160; y= factorial (171);        <br />&#160;&#160;&#160; print y;         <br />quit;</font></p>
</blockquote>
<p>Again, I get 170!</p>
<blockquote><p>&#160;&#160;&#160; x      <br />7.257E306</p>
</blockquote>
<p>and a overflow error for 171!</p>
<blockquote><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; y= factorial (171);      <br />ERROR: Overflow error in *.</p>
</blockquote>
<p>Turing, Von Neumann and Tony, what happened?</p>
<h3>4. R</h3>
<p>When SAS failed, lots of voices pop up: use R! OK, Rction!</p>
<blockquote><p><font color="#ff0000">&gt; x=factorial(170);x</font>       <br />[1] 7.257416e+306       <br /><font color="#ff0000">&gt; y=factorial(171);y</font>       <br />Warning message:       <br />In factorial(171) : value out of range in &#8216;gammafn&#8217;       <br />[1] Inf</p>
</blockquote>
<h3>5. C++</h3>
<p>I don’t want to lose my patience. Think C++(use both recursive and non-recursive methods):</p>
<blockquote><p><font face="Courier New">#include &lt;iostream&gt;        <br />using namespace std; </font></p>
<p><font face="Courier New">double factRecursive(double num);        <br />double factNonRecursive(double num); </font></p>
<p><font face="Courier New">int main()        <br />{         <br />&#160;&#160;&#160; cout&lt;&lt;endl;&#160;&#160;&#160; <br />&#160;&#160;&#160; cout&lt;&lt;&quot;Recursive: the factorial of 170 is &quot;&lt;&lt;factRecursive(170)&lt;&lt;endl;         <br />&#160;&#160;&#160; cout&lt;&lt;&quot;Recursive: the factorial of 171 is &quot;&lt;&lt;factRecursive(171)&lt;&lt;endl;         <br />&#160;&#160;&#160; cout&lt;&lt;endl;&#160;&#160; </font></p>
<p><font face="Courier New">&#160;&#160;&#160; cout&lt;&lt;&quot;NonRecursive: the factorial of 170 is &quot;&lt;&lt;factNonRecursive(170)&lt;&lt;endl;        <br />&#160;&#160;&#160; cout&lt;&lt;&quot;NonRecursive: the factorial of 171 is &quot;&lt;&lt;factNonRecursive(171)&lt;&lt;endl;         <br />&#160;&#160;&#160; cout&lt;&lt;endl;&#160;&#160;&#160; </font></p>
<p><font face="Courier New">return 0;        <br />} </font></p>
<p><font face="Courier New">double factRecursive (double num)        <br />{         <br />&#160;&#160;&#160; if (num==0)         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; return 1;         <br />&#160;&#160;&#160; else         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; return num*factRecursive(num-1);         <br />} </font></p>
<p><font face="Courier New">double factNonRecursive (double num)        <br />{         <br />&#160;&#160;&#160; double fact=1;         <br />&#160;&#160;&#160; for (double i=2;i&lt;=num;i++) fact *=i;         <br />&#160;&#160;&#160; return fact;         <br />}</font></p>
</blockquote>
<p>Unfortunately, same story once more:</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/01/Cpp.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Cpp" border="0" alt="Cpp" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/01/Cpp_thumb.png" width="449" height="121" /></a></p>
<p>Well. The story&#8217;s played out like this. It may be not the limitable of the language but the machine. I check which is the largest numbers my computer supports:</p>
<blockquote><p><font face="Courier New">#include &lt;iostream&gt;        <br />#include &lt;cfloat&gt; </font></p>
<p><font face="Courier New">using namespace std; </font></p>
<p><font face="Courier New">int main()        <br />{         <br />&#160; cout&lt;&lt;&quot;maxinum double value of machine: &quot;&lt;&lt;DBL_MAX&lt;&lt;endl;         <br />&#160; return 0; </font><font face="Courier New">}</font></p>
</blockquote>
<blockquote><pre>maxinum double value of machine: <font color="#ff0000">1.79769e+308</font></pre>
</blockquote>
<p>Now everything’s in the open. The factorial of 170 is about 7.257416e+306. 171! is too big to be supported by my PC. </p>
<p>(Note: I put these codes in <a href="http://codepad.org">http://codepad.org</a>, a online complier. if you don’t have any C++ complier in your machine, you can see the codes and outputs in:<a href="http://codepad.org/xnneavsw">http://codepad.org/xnneavsw</a>&#160; and <a href="http://codepad.org/3FeEC9t2">http://codepad.org/3FeEC9t2</a>)</p>
<h3>6. <a href="http://www.wolframalpha.com/" target="_blank">WolframAlpha</a></h3>
<p>Struggled for hours, I turn to <a href="http://www.wolframalpha.com" target="_blank">WolframAlpha</a> computing platform. It returns <a href="http://www.wolframalpha.com/input/?i=171!" target="_blank">the factorial of 171</a> AT LAST:</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/01/WA171.gif"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="WA171" border="0" alt="WA171" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/01/WA171_thumb.gif" width="454" height="128" /></a>&#160;<a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/01/WA171_s.gif"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="WA171_s" border="0" alt="WA171_s" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/01/WA171_s_thumb.gif" width="477" height="52" /></a>&#160; AT LAST we know the factorial of 171 has 310 digits. </p>
</p>
<h3>7. Windows Calculator</h3>
<p>I try to use Windows build-in calculator. Amazing, it is powerful:</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/01/winCalc.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="winCalc" border="0" alt="winCalc" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/01/winCalc_thumb.png" width="323" height="250" /></a></p>
<h3>8. Python</h3>
<p>Return to programming language.&#160; First, I defined a function(recursive version) in Python and then use its MATH library:</p>
<blockquote>
<p><font face="Courier New">&gt;&gt;&gt; def factorial(n):<br />
      <br />&#160;&#160;&#160; if n==0: </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; return 1 </p>
<p>&#160;&#160;&#160; else: </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; return n*factorial(n-1) </font></p>
<p><font face="Courier New"><font color="#ff0000">&gt;&gt;&gt; factorial(170)</font> </p>
<p>7257415615307998967396728211129263114716991681296451376 </p>
<p>5435777989005618434017061578523507492426174595114909912 </p>
<p>3783852077666602256544275302532890077320751090240043028 </p>
<p>0058295603966612599658257104398558294257568966313439612 </p>
<p>2625710949468067112055688804571933402126614528000000000 </p>
<p>00000000000000000000000000000000L </p>
<p><font color="#ff0000">&gt;&gt;&gt; factorial(171)</font> </p>
<p>1241018070217667823424840524103103992616605577501693185 </p>
<p>3889518036119960752216917529927519781204875855764649595 </p>
<p>0167038705280988985869071076733124203221848436431047357 </p>
<p>7889968548278290754541561964852153468318044293239598173 </p>
<p>6968996572359039476161522785581800611763651084288000000 </p>
<p>00000000000000000000000000000000000L</font></p>
</blockquote>
<blockquote>
<p>&gt;&gt;&gt; import math<br />
    <br /><font color="#ff0000">&gt;&gt;&gt; math.factorial(171)</font> </p>
<p>1241018070217667823424840524103103992616605577501693185 </p>
<p>3889518036119960752216917529927519781204875855764649595 </p>
<p>0167038705280988985869071076733124203221848436431047357 </p>
<p>7889968548278290754541561964852153468318044293239598173 </p>
<p>6968996572359039476161522785581800611763651084288000000 </p>
<p>00000000000000000000000000000000000L</p>
</blockquote>
<p>Amazing, Python beats up C++! </p>
<p><em>(to be continued :</em></p>
<p><em>Too Big to Be Accurate(2): <font color="#ff0000">Approximation</font> </em></p>
<p><em>)</em></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=tZ35VlDVVGk:VRThDIUsVMU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=tZ35VlDVVGk:VRThDIUsVMU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=tZ35VlDVVGk:VRThDIUsVMU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=tZ35VlDVVGk:VRThDIUsVMU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=tZ35VlDVVGk:VRThDIUsVMU:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=tZ35VlDVVGk:VRThDIUsVMU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/tZ35VlDVVGk" height="1" width="1"/>]]></content:encoded><description>Calculate the factorial of 171 (171!)? Just TRY! It is equal to 171*170*169*….2*1. 1. Google calculator As Google fanatics, I first try to search the answer via Google: Whoops, nothing interested returned! Type “170!” and get the output: Why kinda things happened in this calculator? 171! is just equal to 171*170!. 2. Excel Switch to [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2011/01/22/big-numbers/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">3</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2011/01/22/big-numbers/</feedburner:origLink></item><item><title>Feature Selection: Collections for Self Study</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/oZoknaAoQZ4/</link><category>data mining</category><category>feature selection</category><category>fselector</category><category>R</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Fri, 14 Jan 2011 18:58:44 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2011/01/15/feature-selection-collections-for-self-study/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Recently I start to learn the algorithms and applications of <a href="http://en.wikipedia.org/wiki/Feature_selection" target="_blank">feature selection</a>. The term  “Feature”, wildly used in machine learning and data mining literatures,  simply means “Variable”. In some practices, for example, a neural network model uses a decision tree as input; the tree performs the function of variables selection.</p>
<p>The Arizona State University is maintaining a repository of feature selection, including original documentations, Matlab packages and user guide for the following popular algorithms so far:</p>
<blockquote><p>BLogReg<br />
CFS<br />
Chi Square<br />
FCBF<br />
Fisher Score<br />
Gini Index<br />
Information Gain<br />
Kruskal-Wallis<br />
mRMR<br />
Relief-F<br />
SBMLR<br />
T-test<br />
SPEC<br />
<em><span style="color: #ff0000;">see</span></em> <a href="http://featureselection.asu.edu/software.php" target="_blank">http://featureselection.asu.edu/software.php</a></p></blockquote>
<p>A R package, <a href="http://cran.r-project.org/web/packages/FSelector/index.html" target="_blank">FSelector</a>, is also useful for step-by-step studying. This package covers:</p>
<blockquote><p><strong>Filters:<br />
</strong>*cfs<br />
*chi-squared<br />
*consistency<br />
*correlation<br />
&#8211;linear.correlation<br />
&#8211;rank.correlation<br />
*entropy.based<br />
&#8211;information.gain<br />
&#8211;gain.ratio<br />
&#8211;symmetrical.uncertainty<br />
*OneR<br />
*random.forest.importance<br />
*relif-F</p>
<p><strong>Wrappers:</strong><br />
*best.first.search<br />
*exhaustive.search<br />
*greedy.search<br />
&#8211;backward.search<br />
&#8211;forward.search<br />
*hill.climbing.search</p></blockquote>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=oZoknaAoQZ4:Tgp-Wybj3vw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=oZoknaAoQZ4:Tgp-Wybj3vw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=oZoknaAoQZ4:Tgp-Wybj3vw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=oZoknaAoQZ4:Tgp-Wybj3vw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=oZoknaAoQZ4:Tgp-Wybj3vw:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=oZoknaAoQZ4:Tgp-Wybj3vw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/oZoknaAoQZ4" height="1" width="1"/>]]></content:encoded><description>Recently I start to learn the algorithms and applications of feature selection. The term  “Feature”, wildly used in machine learning and data mining literatures,  simply means “Variable”. In some practices, for example, a neural network model uses a decision tree as input; the tree performs the function of variables selection. The Arizona State University is [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2011/01/15/feature-selection-collections-for-self-study/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2011/01/15/feature-selection-collections-for-self-study/</feedburner:origLink></item><item><title>Decision Trees in SAS Enterprise Miner and SPSS Clementine</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/Nbc9kvlcjQc/</link><category>data mining</category><category>Industry Review</category><category>SAS</category><category>C5.0</category><category>CART</category><category>CHAID</category><category>decision tree</category><category>IBM</category><category>QUEST</category><category>SPSS</category><category>SPSS Clementine</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Tue, 04 Jan 2011 04:44:50 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2011/01/04/decision-trees-in-sas-enterprise-miner-and-spss-clementine/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Decision trees are included in SAS Enterprise Miner(EM). The counterpart is SPSS Clementine, which should be called IBM SPSS Modeler for precision after IBM’s acquisition of SPSS.</p>
<p>Recently I read a paper on the comparisons of SAS EM, SPSS Clementine and IBM Intelligent Miner on their decision tree and cluster technology:</p>
<blockquote><p><em><a href="http://www.gimi.us/CLUTE_INSTITUTE/ORLANDO_2010/Article%2520452.pdf" target="_blank">Decision Tree Induction &amp; Clustering Techniques in SAS Enterprise Miner, SPSS Clementine, and IBM Intelligent Miner – A Comparative Analysis</a></em> by Abdullah M. Al Ghoson, Virginia Commonwealth University </p>
</blockquote>
<p>The output is not that surprising. SAS EM plays better in performance, functionality and auxiliary task support but worse in usability.</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/01/SAS_VS_SPSS.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="SAS_VS_SPSS" border="0" alt="SAS_VS_SPSS" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/01/SAS_VS_SPSS_thumb.png" width="503" height="476" /></a> </p>
<p>Here are few comments on decision trees implementations in SAS EM and SPSS Clementine based on my own experiences. Some advises for beginners are also supplied.</p>
<p>There are four nodes in SPSS Clementine to supports four trees algorithms respectively: <font color="#ff0000">C5.0</font>, Classification And Regression Trees (<font color="#ff0000">CART</font>),&#160; Quick, Unbiased, Efficient Statistical Tree(<font color="#ff0000">QUEST</font>) and Chi-squared Automatic Interaction Detector(<font color="#ff0000">CHAID</font>),&#160; which are most famous and popular in decision trees family.</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/01/SPSS_4_trees.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="SPSS_4_trees" border="0" alt="SPSS_4_trees" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/01/SPSS_4_trees_thumb.png" width="412" height="105" /></a> Note that CART(R) is a registered trademark of California Statistical Software, Inc., and is licensed exclusively to Salford Systems, San Diego, California. So SPSS Clementine uses C&amp;R Tree as name.</p>
<p>In SAS EM, there is only one decision tree node:</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/01/SAS_tree.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="SAS_tree" border="0" alt="SAS_tree" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2011/01/SAS_tree_thumb.png" width="155" height="74" /></a> The algorithms behind this node is called SAS tree algorithms, which incorporate and extend the four mentioned before. Just change the settings in decision tree node, you can get the trees you want. </p>
<p>Obviously, SAS tree algorithms is superior than the separated ones in SPSS Clementine for expansibility and flexibility. But at the other hand, the complexities increase. For a newbie user of SAS EM, he/she may wonder which trees he/she is training. A SPSS Clementine users just picks up a node and says: OK, I am now training a CART or CHAID.—he/she would communicate with others more smoothly.</p>
<p>Regardless of the industry application, I think this is the educational benefit of SPSS Clementine. Since almost every data mining book introduces decision trees by separated algorithms(such as ID3/C4.5/C5.0, CART, QUEST, CHAID, . . .), the beginners using SPSS Clementine as instructional tool may get the clear ideas about the algorithms one by one. Once he/she get the full understanding of the differences among tree algorithms, he/she would train trees in SAS EM more comfortable.</p>
<p>What’s more, SPSS Clementine supplies rich supporting documentations for beginners and self learners , such as Tutorial, User Guide, Algorithms Guide, Node Reference. The official documentations of SAS EM 5.x and 6.x are relatively poor. Yes there is a good SAS Help and Documentation for SAS EM 4.3 including <em>Getting Started with Enterprise Miner</em>. EM4.3 is a traditional AF application but EM5.x and above are Java client incorporated in SAS analysis platform(they are totally different!). For EM5.x and above, only installation guides and a plain reference are available.</p>
<p>SAS Institute may have its own marketing strategies. No rich references available, the Institute DOES offer <a href="https://support.sas.com/edu/prodcourses.html?code=MINER&amp;ctry=US" target="_blank">rich training programs</a> in data mining and Enterprise Miner application. Wooo, the big-budget purchasers of SAS EM can also afford the trainings.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=Nbc9kvlcjQc:qvPLlJOVwaI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=Nbc9kvlcjQc:qvPLlJOVwaI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=Nbc9kvlcjQc:qvPLlJOVwaI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=Nbc9kvlcjQc:qvPLlJOVwaI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=Nbc9kvlcjQc:qvPLlJOVwaI:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=Nbc9kvlcjQc:qvPLlJOVwaI:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/Nbc9kvlcjQc" height="1" width="1"/>]]></content:encoded><description>Decision trees are included in SAS Enterprise Miner(EM). The counterpart is SPSS Clementine, which should be called IBM SPSS Modeler for precision after IBM’s acquisition of SPSS. Recently I read a paper on the comparisons of SAS EM, SPSS Clementine and IBM Intelligent Miner on their decision tree and cluster technology: Decision Tree Induction &amp;#38; [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2011/01/04/decision-trees-in-sas-enterprise-miner-and-spss-clementine/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">4</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2011/01/04/decision-trees-in-sas-enterprise-miner-and-spss-clementine/</feedburner:origLink></item><item><title>SAS Data Step’s Built-in Loop: An illustrated Example</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/m-Y_LUaURsQ/</link><category>SAS</category><category>C++</category><category>implicit built-in loop</category><category>Loop</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Mon, 03 Jan 2011 01:29:40 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2011/01/03/sas-data-steps-built-in-loop-an-illustrated-example/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Some newbie SAS programmers take SAS as their first programming language even learned. Sometimes they are confused by the concept of “data step’s built-in loop” even after reading the well-written <em>The Little SAS Book: A Primer</em>:</p>
<blockquote><p>DATA steps also have an underlying structure, an implicit, built-in loop. You don’t tell SAS to execute this loop: SAS does it automatically. Memorize this:</p>
<p><strong>DATA steps execute line by line and observation by observation.</strong></p></blockquote>
<p>Programmers could memorize the statement above and apply it well in their programming practices, but still find it hard to get the vivid idea about the so called <strong>implicit</strong> built-in loop. –This post would make it easy.</p>
<p>The following will show an <strong>explicit</strong> loop example in C++. Note that you do not need to know any about C++ to get the idea. Suppose that a data file <em>data.dat</em> in D driver holds three numbers</p>
<blockquote><p>1<br />
2<br />
3</p></blockquote>
<p>The question is how to (read and) print out these numbers and their sums.  Following is the C++ approach (<strong>just read the bold session</strong>):</p>
<blockquote><p><span style="font-family: 'Courier New';">#include &lt;iostream&gt;<br />
#include &lt;fstream&gt;<br />
using namespace std;<br />
int main()<br />
{<br />
int x;<br />
int sum=0;<br />
ifstream inFile;<br />
inFile.open(&#8220;d:data.dat&#8221;);<br />
inFile &gt;&gt; x; </span></p>
<p><span style="font-family: 'Courier New';"><strong> while (<span style="color: #ff0000;">!inFile.eof( )</span>)<br />
{<br />
cout&lt;&lt;x&lt;&lt;endl;<br />
sum = sum + x;<br />
inFile &gt;&gt; x;<br />
}</strong> </span></p>
<p><span style="font-family: 'Courier New';"> inFile.close( );<br />
cout &lt;&lt; &#8220;Sum = &#8221; &lt;&lt; sum &lt;&lt; endl;<br />
return 0;<br />
}</span></p></blockquote>
<p>There is an <strong>explicit</strong> loop in these C++ codes: while (<span style="color: #ff0000;">!inFile.eof( )</span>) .  While it is not at the end of infile, the codes above will keep print out the numbers and do the accumulation. The final output is</p>
<blockquote><p>1<br />
2<br />
3<br />
sum=6</p></blockquote>
<p>The following SAS codes produce the exactly same output:</p>
<blockquote><p><span style="font-family: 'Courier New';">data _null_;<br />
infile &#8220;d:\data.dat&#8221; end=eof;<br />
input x;<br />
sum+x;<br />
put x;<br />
if eof then put sum=;<br />
run;</span></p></blockquote>
<p>Note that SAS codes do not need an <strong>explicit</strong> loop to reach to the end of file. There is a so called <strong>implicit</strong> built-in loop.&lt;the end&gt;</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=m-Y_LUaURsQ:CDAqL0x5UhU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=m-Y_LUaURsQ:CDAqL0x5UhU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=m-Y_LUaURsQ:CDAqL0x5UhU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=m-Y_LUaURsQ:CDAqL0x5UhU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=m-Y_LUaURsQ:CDAqL0x5UhU:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=m-Y_LUaURsQ:CDAqL0x5UhU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/m-Y_LUaURsQ" height="1" width="1"/>]]></content:encoded><description>Some newbie SAS programmers take SAS as their first programming language even learned. Sometimes they are confused by the concept of “data step’s built-in loop” even after reading the well-written The Little SAS Book: A Primer: DATA steps also have an underlying structure, an implicit, built-in loop. You don’t tell SAS to execute this loop: [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2011/01/03/sas-data-steps-built-in-loop-an-illustrated-example/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2011/01/03/sas-data-steps-built-in-loop-an-illustrated-example/</feedburner:origLink></item><item><title>SGF: Caesars Palace in Las Vegas again</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/o8bGGL3jXMM/</link><category>misc</category><category>SAS</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Thu, 30 Dec 2010 02:13:08 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2010/12/30/sgf-caesars-palace-in-las-vegas-again/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<blockquote><pre>The mechanic, who wishes to do his work well, must first </pre>
<pre>sharpen his tools.</pre>
<pre> --<i>Confucian Analects</i>. BOOK XV.WEI LING KUNG.CHAP.IX.</pre>
</blockquote>
<p>My paper <em><a href="http://sgf2011.confnav.com/sgf2011/web/sessions/detail.html?id=20101023091009653775000000" target="_blank">Work Smarter than Harder-tools for growing up a SAS programmer</a></em> was accepted by <a href="http://support.sas.com/events/sasglobalforum/2011/" target="_blank">SAS Global Forum 2011.</a> It would be my first time to attend SAS user group conference worldwide. The draft version is available at</p>
<p><a title="http://jiangtanghu.com/docs/en/SGF2011_JiangtangHU(draft).pdf" href="http://jiangtanghu.com/docs/en/SGF2011_JiangtangHU(draft).pdf">http://jiangtanghu.com/docs/en/SGF2011_JiangtangHU(draft).pdf</a></p>
<p>Welcome for any comments.</p>
<p>The SGF2011 will be held at Caesars Palace in Las Vegas, Nevada. The interesting thing is that, as far as I know, Caesars Palace in Las Vegas was also the host for SUGI 1978(Jan 30-Feb 1, 1978). looking forward to seeing my SAS gurus in Caesars Palace next year, a place of history.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=o8bGGL3jXMM:fn9flhIZe_I:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=o8bGGL3jXMM:fn9flhIZe_I:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=o8bGGL3jXMM:fn9flhIZe_I:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=o8bGGL3jXMM:fn9flhIZe_I:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=o8bGGL3jXMM:fn9flhIZe_I:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=o8bGGL3jXMM:fn9flhIZe_I:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/o8bGGL3jXMM" height="1" width="1"/>]]></content:encoded><description>The mechanic, who wishes to do his work well, must first sharpen his tools. --Confucian Analects. BOOK XV.WEI LING KUNG.CHAP.IX. My paper Work Smarter than Harder-tools for growing up a SAS programmer was accepted by SAS Global Forum 2011. It would be my first time to attend SAS user group conference worldwide. The draft version [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2010/12/30/sgf-caesars-palace-in-las-vegas-again/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2010/12/30/sgf-caesars-palace-in-las-vegas-again/</feedburner:origLink></item><item><title>A SAS Programmer’s End Year Haiku</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/M2iBV45YlKE/</link><category>misc</category><category>SAS</category><category>haiku</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Thu, 30 Dec 2010 00:18:20 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2010/12/30/a-sas-programmers-end-year-haiku/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><a href="http://www.jiangtanghu.com/blog/2008/12/10/haiku-from-sas-rd-staff-2/" target="_blank">End year Haiku</a> again!</p>
<p>Yesterday I finished my project, wrote a Haiku to colleagues worldwide to say happy new year, then closed my desktop, said goodbye to colleagues still in office:</p>
<blockquote><p>In December my baby born</p>
<p>my project deliveries followed on</p>
<p>Now my computers shutdown</p>
<p>do until(6 Jan 2011) I will be OOO</p>
<p>Please take blessings from John</p>
</blockquote>
<p>Happy New Year!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=M2iBV45YlKE:FFxgzLTn1iw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=M2iBV45YlKE:FFxgzLTn1iw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=M2iBV45YlKE:FFxgzLTn1iw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=M2iBV45YlKE:FFxgzLTn1iw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=M2iBV45YlKE:FFxgzLTn1iw:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=M2iBV45YlKE:FFxgzLTn1iw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/M2iBV45YlKE" height="1" width="1"/>]]></content:encoded><description>End year Haiku again! Yesterday I finished my project, wrote a Haiku to colleagues worldwide to say happy new year, then closed my desktop, said goodbye to colleagues still in office: In December my baby born my project deliveries followed on Now my computers shutdown do until(6 Jan 2011) I will be OOO Please take [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2010/12/30/a-sas-programmers-end-year-haiku/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2010/12/30/a-sas-programmers-end-year-haiku/</feedburner:origLink></item><item><title>Blogging SAS</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/2JHRBv1Gsl4/</link><category>misc</category><category>SAS</category><category>Blog</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Tue, 30 Nov 2010 05:16:52 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2010/11/30/sas-blog/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Almost at the same time, there are two SAS blogs aggregators popping up to the web for SAS programmers worldwide, one in Chinese, the other, English:</p>
<blockquote><p><a href="http://saslist.com/">http://saslist.com/</a>&#160; in Chinese, maintained by <a href="http://saslist.com/sxlion/">sxlion</a>, also the owner of a SAS information site,&#160; <a href="http://saslist.net/">http://saslist.net/</a></p>
<p><a href="http://sas-x.com/">http://sas-x.com/</a>&#160;&#160; in English, maintained by <a href="http://www.r-statistics.com/">Tal Galili</a>, also the owner of R blogs aggregator, <a href="http://r-bloggers.com/">http://r-bloggers.com/</a></p>
</blockquote>
<p>I try to express in a very symmetrical way. What’s more (and interesting), these two aggregators share a same WordPress template. My blogs, <a href="http://jiangtanghu.com/cn">in Chinese</a> and <a href="http://www.jiangtanghu.com/blog">in English</a>, are also the members of these aggregators respectively. </p>
<p>I view this is the first wave for SAS programmers to embrace the Web2.0 world. If interested, you could also add your SAS blogs in </p>
<blockquote><p><a href="http://sas-x.com/add-your-blog/">http://sas-x.com/add-your-blog/</a></p>
</blockquote>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=2JHRBv1Gsl4:JmOaJE5kEIw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=2JHRBv1Gsl4:JmOaJE5kEIw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=2JHRBv1Gsl4:JmOaJE5kEIw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=2JHRBv1Gsl4:JmOaJE5kEIw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=2JHRBv1Gsl4:JmOaJE5kEIw:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=2JHRBv1Gsl4:JmOaJE5kEIw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/2JHRBv1Gsl4" height="1" width="1"/>]]></content:encoded><description>Almost at the same time, there are two SAS blogs aggregators popping up to the web for SAS programmers worldwide, one in Chinese, the other, English: http://saslist.com/&amp;#160; in Chinese, maintained by sxlion, also the owner of a SAS information site,&amp;#160; http://saslist.net/ http://sas-x.com/&amp;#160;&amp;#160; in English, maintained by Tal Galili, also the owner of R blogs aggregator, [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2010/11/30/sas-blog/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">3</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2010/11/30/sas-blog/</feedburner:origLink></item><item><title>Recursion: Biblical Evidences</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/RtXqb2Et0M8/</link><category>Logic</category><category>SAS</category><category>recursion</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Fri, 05 Nov 2010 18:58:56 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2010/11/06/recursion-bible/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p>
<blockquote><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <strong> To Iterate is Human, to Recurse, Divine.</strong>&#160; </p>
<p>&#160;&#160;&#160;&#160;&#160; &#8211;by <a href="http://en.wikipedia.org/wiki/L._Peter_Deutsch">L. Peter Deutsch</a>, creator of Ghostscript. (I also love his saying “<em>The best thing about a Boolean is even if you are wrong, you are only off by a bit</em>”)</p>
</blockquote>
<p>I learned this quote from <a href="http://en.wikipedia.org/wiki/Anthony_James_Barr">Tony Barr</a>, designer and developer of <a href="http://en.wikipedia.org/wiki/SAS_(software)">SAS</a> (the Statistical Analysis System).&#160; He also used the <a href="http://en.wikipedia.org/wiki/Recursive_descent_parser">Recursive Descent</a> method to develop SAS complier. Now Tony is working for AMOR (A Model of Reality). AMOR is the <strong>self-defining</strong> system for modeling ideas and concepts (or human knowledge).—Recurse again: in AMOR, the type is defined by the type of type, and, the type of type is also defined by the type of type of type . . .</p>
<p>To help to understand the DIVINE part of recursion, Tony gave two examples from the <em>Bible:</em></p>
<p>1. The Golden Rule is recursive.</p>
<blockquote><p>Do unto others as you would have them do unto you. (<em>see</em> <a href="http://en.wikisource.org/wiki/Bible_(King_James)/Matthew#7:12">Matthew 7:12</a>, or <a href="http://en.wikisource.org/wiki/Bible_(King_James)/Luke#6:31">Luke 6:31</a>)</p>
</blockquote>
<p>2. God indentify himself in a recursive way.</p>
<blockquote><p>Moses asked God for his name. Then God said to Moses, “I AM THAT I AM.” (<em>see</em> <a href="http://www.sacred-texts.com/bib/kjv/exo003.htm">Exodus 3.14</a>)</p>
</blockquote>
<p>I’d like add two items (from a programmer’s perspective <strong>rather than</strong> Biblical Theology):</p>
<p>3. Recursion at the very start</p>
<blockquote><p>In the beginning was the Word, and the Word was with God, and the Word was God. (<em>see</em> <a href="http://bible.cc/john/1-1.htm">John 1.1</a>; also <em>see</em> <a href="http://www.wired.com/wired/archive/10.12/holytech_pr.html">here</a>)</p>
</blockquote>
<p>4. The Trinity recursive way</p>
<blockquote><p>First, there is only one God in Christian doctrine. God the Son duplicates the nature of God the Father in every way exactly, and so God the Spirit. And what’s about God the Father? <em>see </em>above.</p>
</blockquote>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=RtXqb2Et0M8:XkBvOijr6R0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=RtXqb2Et0M8:XkBvOijr6R0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=RtXqb2Et0M8:XkBvOijr6R0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=RtXqb2Et0M8:XkBvOijr6R0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=RtXqb2Et0M8:XkBvOijr6R0:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=RtXqb2Et0M8:XkBvOijr6R0:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/RtXqb2Et0M8" height="1" width="1"/>]]></content:encoded><description>&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; To Iterate is Human, to Recurse, Divine.&amp;#160; &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;#8211;by L. Peter Deutsch, creator of Ghostscript. (I also love his saying “The best thing about a Boolean is even if you are wrong, you are only off by a bit”) I learned this quote from Tony Barr, designer and developer of SAS (the Statistical [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2010/11/06/recursion-bible/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2010/11/06/recursion-bible/</feedburner:origLink></item><item><title>Power of Logic Operators: a trick</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/znnmYgVvohQ/</link><category>Logic</category><category>SAS</category><category>logic operator</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Wed, 03 Nov 2010 16:09:12 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/?p=146</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Suppose you should group people based on their ages as follows:</p>
<blockquote>
<div>
<table border="0" cellspacing="0" cellpadding="2" width="155" align="center">
<tbody>
<tr>
<td width="51" valign="top">ID</td>
<td width="57" valign="top">Age</td>
<td width="45" valign="top">agegrp</td>
</tr>
<tr>
<td width="51" valign="top">001</td>
<td width="57" valign="top">1</td>
<td width="45" valign="top">1</td>
</tr>
<tr>
<td width="51" valign="top">002</td>
<td width="57" valign="top">4</td>
<td width="45" valign="top">2</td>
</tr>
<tr>
<td width="51" valign="top">003</td>
<td width="57" valign="top">5</td>
<td width="45" valign="top">2</td>
</tr>
<tr>
<td width="51" valign="top">004</td>
<td width="57" valign="top">5</td>
<td width="45" valign="top">2</td>
</tr>
<tr>
<td width="51" valign="top">005</td>
<td width="57" valign="top">2</td>
<td width="45" valign="top">1</td>
</tr>
<tr>
<td width="51" valign="top">006</td>
<td width="57" valign="top">4</td>
<td width="45" valign="top">2</td>
</tr>
<tr>
<td width="51" valign="top">007</td>
<td width="57" valign="top">5</td>
<td width="45" valign="top">2</td>
</tr>
<tr>
<td width="51" valign="top">008</td>
<td width="57" valign="top">2</td>
<td width="45" valign="top">1</td>
</tr>
<tr>
<td width="51" valign="top">009</td>
<td width="57" valign="top">9</td>
<td width="45" valign="top">3</td>
</tr>
<tr>
<td width="51" valign="top">010</td>
<td width="60" valign="top">8</td>
<td width="56" valign="top">3</td>
</tr>
</tbody>
</table>
</div>
</blockquote>
<p>and the rules:</p>
<blockquote><p>age&lt;4,           group 1</p>
<p>4&lt;=age&lt;6,     group 2</p>
<p>6&lt;=age&lt;10,  group 3</p></blockquote>
<p>It is a very simple question and you could use the <strong>if/else </strong>statement without thinking:</p>
<blockquote><p><span style="font-family: 'Courier New';">data age;<br />
input ID $  age;<br />
datalines;<br />
001 1<br />
002 4<br />
003 5<br />
004 5<br />
005 2<br />
006 4<br />
007 5<br />
008 2<br />
009 9<br />
010 8<br />
; </span></p>
<p><span style="font-family: 'Courier New';">data age1;<br />
set age;<br />
<span style="color: #ff0000;">if </span>age&lt;4   then agegrp=1;<br />
<span style="color: #ff0000;">else if</span> age&lt;6   then agegrp=2;<br />
else agegrp=3;<br />
run;<br />
proc  print;run;</span></p></blockquote>
<p>or, you could use <strong>proc format</strong> to map data:</p>
<blockquote><p><span style="font-family: 'Courier New';">proc <span style="color: #ff0000;">format</span>;<br />
value agegrp<br />
low-&lt;4=&#8221;1&#8243;<br />
4-&lt;7  =&#8221;2&#8243;<br />
7-&lt;10  =&#8221;3&#8243;<br />
other =&#8221;"<br />
;<br />
run; </span></p>
<p><span style="font-family: 'Courier New';">data age2;<br />
set age;<br />
<span style="color: #ff0000;"> agegrp2=put(age,agegrp1.);</span><br />
run;<br />
proc  print;run;</span></p></blockquote>
<p>And try to use logic operators. It is a <strong>ONE-LINE-OF-CODE</strong> approach:</p>
<blockquote><p><span style="font-family: 'Courier New';">data age3;<br />
set age;<br />
<span style="color: #ff0000;"> agegrp3=1+(age&gt;3)+(age&gt;5);</span><br />
run;<br />
proc  print;run;</span></p></blockquote>
<p>In SAS, a logic express returns to 1 or 0 according the true of false of the express. The logic behind the above statement is:</p>
<ul>
<li>age group is set to 1 at the beginning;</li>
<li>if age&gt;3, age group adds 1;</li>
<li>if age&gt;5, add 1.</li>
</ul>
<p>This easy-to-follow logic can apply to other scenarios(flags, for example):</p>
<p><span style="font-size: 13.1944px;"> flag=value&gt;50;</span></p>
<p><span style="font-size: 13.1944px;"> select value&gt;50 as flag    <em>(in proc sql)</em></span></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=znnmYgVvohQ:VbwdmmJv9oc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=znnmYgVvohQ:VbwdmmJv9oc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=znnmYgVvohQ:VbwdmmJv9oc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=znnmYgVvohQ:VbwdmmJv9oc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=znnmYgVvohQ:VbwdmmJv9oc:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=znnmYgVvohQ:VbwdmmJv9oc:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/znnmYgVvohQ" height="1" width="1"/>]]></content:encoded><description>Suppose you should group people based on their ages as follows: ID Age agegrp 001 1 1 002 4 2 003 5 2 004 5 2 005 2 1 006 4 2 007 5 2 008 2 1 009 9 3 010 8 3 and the rules: age&amp;#60;4,           group 1 4&amp;#60;=age&amp;#60;6,     group 2 6&amp;#60;=age&amp;#60;10,  group [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2010/11/04/power-of-logic-operators-a-trick/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2010/11/04/power-of-logic-operators-a-trick/</feedburner:origLink></item><item><title>Recursive Referencing and Binomial Proportion Interval</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/_TZ3UGeYQyM/</link><category>Logic</category><category>misc</category><category>statistics</category><category>Binomial proportion inverval</category><category>Inception</category><category>Newcombe</category><category>recursion</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Wed, 03 Nov 2010 05:47:44 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2010/11/03/recursive-referencing/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>To understand <a href="http://en.wikipedia.org/wiki/Recursion">recursion</a>, one of the most important concepts in programming languages, you could watch the movie, Chris Nolan’s <em><a href="www.inceptionmovie.com">Inception</a></em>: it is about a dream within a dream within a dream, …and, read two statistical papers by Professor <a href="http://medicine.cf.ac.uk/en/person/prof-robert-gordon-newcombe/">Robert Newcombe</a>, one of the most <a href="http://medicine.cf.ac.uk/en/person/prof-robert-gordon-newcombe/publications/">prolific statisticians</a>:</p>
<ul>
<li><cite><a href="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&amp;db=pubmed&amp;dopt=Abstract&amp;list_uids=9595616&amp;query_hl=1"><strong>Two-sided confidence intervals for the single proportion: comparison of seven methods.</strong></a> </cite>      <br />Newcombe RG, <font color="#ff0000"><cite>Stat Med</cite> , Volume 17 , 8 (April 1998) pp.857-<strong>872</strong></font><strong> </strong></li>
<li><cite><a href="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&amp;db=pubmed&amp;dopt=Abstract&amp;list_uids=9595617&amp;query_hl=1"><strong>Interval estimation for the difference between independent proportions: comparison of eleven methods.</strong></a> </cite>      <br />Newcombe RG, <font color="#ff0000"><cite>Stat Med</cite> , Volume 17 , 8 (April 1998) pp.<strong>873</strong>-890</font> </li>
</ul>
<p>These two widely cited papers evaluate 7 and 11 methods to calculate single proportion (paper <font color="#ff0000">A</font>) and the difference between proportions (paper <font color="#ff0000">B</font>), respectively. Further more, they were in the same issue of <a href="http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1097-0258"><em>Statistics in Medicine</em></a>(Volume 17, 1998), and, they were also cross referenced! So here is a live story about recursive referencing(thanks to Prof. Newcombe):</p>
<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2010/11/megamonalisa_recursion.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="megamonalisa_recursion" border="0" alt="megamonalisa_recursion" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2010/11/megamonalisa_recursion_thumb.jpg" width="245" height="371" /></a></p>
<ul>
<ul>
<li>An author writes two papers, A and B;</li>
<li>Paper B is in the&#160; bibliographic reference session of paper A;</li>
<li>Paper A is also in the&#160; bibliographic reference session of paper B;</li>
<li>Paper A and paper B are in the same issue of a journal.</li>
</ul>
</ul>
<p><font color="#ff0000">Note</font> that for Prof. Newcombe’s two linked papers, it is common and acceptable in publication practices. Recently I used these two wonderful papers to learn CI calculation and this post just want to lead to the concept of “recursion”&#160; (reference in reference in reference).</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=_TZ3UGeYQyM:fVyif0frgaU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=_TZ3UGeYQyM:fVyif0frgaU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=_TZ3UGeYQyM:fVyif0frgaU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=_TZ3UGeYQyM:fVyif0frgaU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=_TZ3UGeYQyM:fVyif0frgaU:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=_TZ3UGeYQyM:fVyif0frgaU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/_TZ3UGeYQyM" height="1" width="1"/>]]></content:encoded><description>To understand recursion, one of the most important concepts in programming languages, you could watch the movie, Chris Nolan’s Inception: it is about a dream within a dream within a dream, …and, read two statistical papers by Professor Robert Newcombe, one of the most prolific statisticians: Two-sided confidence intervals for the single proportion: comparison of [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2010/11/03/recursive-referencing/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2010/11/03/recursive-referencing/</feedburner:origLink></item><item><title>Play Matrix within SAS(1): basic files processing</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/Fv80pQB8fWw/</link><category>SAS</category><category>IML</category><category>Matrix</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Fri, 29 Oct 2010 06:02:31 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2010/10/29/sas-iml-basic/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Recently I read Rick Wicklin’s <a href="http://blogs.sas.com/iml/index.php">IML blog</a> with great interests(and anticipation for his fore-coming IML book,&#160; <em><a href="http://support.sas.com/publishing/authors/wicklin.html">Statistical Programming with SAS/IML Software</a></em>). SAS programmers have the following programming tools to facilitate their daily work:</p>
<ul>
<li>SAS data step: the basic SAS; a generation IV programming language, similar with other procedural languages such as C. </li>
<li>SAS Proc SQL: SAS’s implementation of standard SQL(<a href="http://en.wikipedia.org/wiki/SQL-92">SQL-92</a>). </li>
<li>SAS IML(Interactive Matrix Language): SAS’s matrix manipulation language(like R and Matlab).&#160; SAS IML Studio also supply IMLPlus programming language(IML+), an enhanced version of IML. </li>
<li>SAS SCL(SAS Component Language): build in SAS/AF software, an object oriented programming(OOP) language for applications development. </li>
</ul>
<p>I am a heavy user of data steps and SQL and want to invest some bit on matrix manipulation. Although other wonderful languages available(such as R and Matlab), I found IML is a good choice for SAS programmers like me. It is well integrated within SAS system, and very important, almost all of the SAS Base functions and call routines are also supported by IML. Here some notes of IML 101(codes are self explanatory from a SAS Base point of view):</p>
<h1><strong>1. IML style of ‘hello world’</strong> </h1>
<blockquote><p><font face="Courier New"><font color="#ff0000">proc iml</font>;         <br />&#160;&#160;&#160; text=&quot;Hello World!&quot;;         <br />&#160;&#160;&#160; <font color="#ff0000">print</font> &quot;IML saying&quot; text;         <br /><font color="#ff0000">quit</font>;</font></p>
</blockquote>
<p>and you got in output window:</p>
<blockquote><p>IML saying Hello World!</p>
</blockquote>
<p>Like Proc SQL, IML begins with “<font face="Courier New"><font color="#ff0000">proc iml</font></font>” , end with ”<font color="#ff0000">quit</font>”, and every statements end with a semicolon. The key word “<font color="#ff0000">print</font>” (an IML statement), just like “put” statement in data steps.</p>
<p>An enhanced version of Hello World: </p>
<blockquote><p><font face="Courier New"><font color="#ff0000">options </font>nocenter nodate nonumber; </font></p>
<p><font face="Courier New">proc iml;        <br />&#160;&#160;&#160; <font color="#ff0000">reset</font> printall; </font></p>
<p><font face="Courier New">&#160;&#160;&#160; text=&quot;Hello World!&quot;;        <br />&#160;&#160;&#160; print &quot;in &amp;sysdate. IML saying&quot; text;         <br />quit;</font></p>
</blockquote>
<p>Some SAS global options added(“<font face="Courier New">nocenter nodate nonumber</font>”). The IML statement “<font color="#ff0000">reset</font>&quot;, works like “<font face="Courier New"><font color="#ff0000">options</font></font>” statement to set some processing options within the IML(and you can guess the meaning of the options “printall”, just print all. . . it is your turn to check the output window).</p>
<p>A SAS system macro variable “&amp;sysdate” is presented to encourage you to add any programming elements in SAS Base to IML. </p>
<h1><strong>2. How to create a matrix manually</strong></h1>
<p>Actually, we have already create a matrix named “text” in the previous hello-world codes. It is a character <font color="#ff0000">scalar</font>(matrix with only one element). If we want to avoid the SAS data steps’ style of assignment,&#160; we can use <font color="#ff0000"><em>{}</em></font> to enclose matrix elements:</p>
<blockquote><p>a={“a”};&#160; /*a _char_ scalar */      <br />b={1};&#160;&#160;&#160;&#160; /*a _num_ scalar*/</p>
</blockquote>
<p>and a 2*3 matrix:</p>
<blockquote><p>c={1 2 3<font color="#ff0000">,        <br /></font>&#160;&#160;&#160;&#160;&#160; 2 3 4}; /*2 rows, 3 cols*/</p>
</blockquote>
<p>Commas(<font color="#ff0000">,</font>) are used to separate rows.</p>
<h1>3. How to create a matrix by functions</h1>
<p>Some matrix reshaping functions:</p>
<blockquote><p><font face="Courier New">a=<font color="#ff0000">I</font>(3);&#160;&#160;&#160;&#160; /*creates a 3*3 identity matrix*/         <br />b=<font color="#ff0000">J</font>(2,3,5); /*creates a 2*3 matrix of identical values*/         <br />e=<font color="#ff0000">do</font>(1,9,2); /*produces series, from 1 to 9, by increment 2*/         <br />c=<font color="#ff0000">block</font>(a,b);/*forms a block-diagonal matrice*/         <br />d=<font color="#ff0000">diag</font>(a);&#160;&#160; /*creates a diagonal matrix*/         <br />m=<font color="#ff0000">repeat</font>(a,4,3); /*create a (3*4)*(3*3) matrix by repeating*/         <br />n=<font color="#ff0000">T</font>(b);&#160;&#160; /*transpose*/</font></p>
</blockquote>
<h1>4. How to create a matrix by reading a SAS data set</h1>
<blockquote><p><font face="Courier New">proc iml;        <br />&#160;&#160;&#160; <font color="#ff0000">use</font> sashelp.class;         <br />&#160;&#160;&#160; <font color="#ff0000">read</font> all var <font color="#ff0000">_char_</font>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="#ff0000">into</font> class_char;         <br />&#160;&#160;&#160; read all var <font color="#ff0000">_num_</font>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; into class_num;         <br />&#160;&#160;&#160; read all var <font color="#ff0000">{&quot;Age&quot; &quot;Height&quot; &quot;Weight&quot;}</font> into class_num2;         <br />&#160;&#160;&#160; <font color="#ff0000">close</font> sashelp.class; </font></p>
<p><font face="Courier New">&#160;&#160;&#160; print class_char class_num class_num2;        <br />quit;</font></p>
</blockquote>
<p>Note that it is a good habit to close the data file after reading or using it(<em>see</em> Rick Wicklin’s <em><a href="http://blogs.sas.com/iml/index.php?/archives/8-Five-Reasons-to-CLOSE-Your-Data-Sets.html">Five Reasons to CLOSE Your Data Sets</a></em>).</p>
<h1>5. How to output a matrix to SAS dataset</h1>
<blockquote><p><font face="Courier New">proc iml;        <br />&#160;&#160;&#160; use sashelp.class;         <br />&#160;&#160;&#160; read all var _num_ into class_num;         <br />&#160;&#160;&#160; close sashelp.class; </font></p>
<p><font face="Courier New">&#160;&#160;&#160; <font color="#ff0000">create</font> work.class_num <font color="#ff0000">from</font> class_num;        <br />&#160;&#160;&#160; <font color="#ff0000">append</font> <font color="#ff0000">from</font> class_num;        <br />&#160;&#160;&#160; <font color="#ff0000">show datasets</font>;        <br />quit;</font></p>
</blockquote>
<h1>&#160;</h1>
<h1>6. How to format a matrix</h1>
<p>/*version I: use matrix options*/</p>
<blockquote><p><font face="Courier New">proc iml;       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; use sashelp.class;        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; col={&quot;Age&quot; &quot;Height&quot; &quot;Weight&quot;};        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; read all var col into class;        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; read all var{name} into row;        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; close sashelp.class; </font></p>
<p><font face="Courier New">&#160;&#160;&#160;&#160;&#160;&#160;&#160; print class[<font color="#ff0000">rowname</font>=row         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="#ff0000">colname</font>=col         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="#ff0000">format</font>=5.2         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="#ff0000">label</font>=&quot;test, label&quot;];        <br />quit;</font> </p>
</blockquote>
<p>/*version II: use mattib statement*/</p>
<blockquote><p><font face="Courier New">proc iml;       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; use sashelp.class;        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; col={&quot;Age&quot; &quot;Height&quot; &quot;Weight&quot;};        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; read all var col into class;        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; read all var{name} into row;        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; close sashelp.class; </font></p>
<p><font face="Courier New">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="#ff0000">mattrib</font> class rowname=row        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; colname=col        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; label=&quot;test, label&quot;        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; format=5.2;        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; print class;        <br />quit;</font> </p>
</blockquote>
<p>/*version III: avoid hardcoding—use IML function and operations*/</p>
<blockquote><p><font face="Courier New">proc iml;       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; use sashelp.class;        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="#ff0000">col=T(contents(sashelp,class)[3:5]);</font>        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; read all var col into class;        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; read all var{name} into row;        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; close sashelp.class; </font></p>
<p><font face="Courier New">&#160;&#160;&#160;&#160;&#160;&#160;&#160; mattrib class rowname=row       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; colname=col        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; label=&quot;test, label&quot;        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; format=5.2;        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; print class;        <br />quit;</font></p>
</blockquote>
<p><font face="Courier New"><em><strong>(IML matrix operations: to be continued)</strong></em></font></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=Fv80pQB8fWw:l0ETsEvCMzk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=Fv80pQB8fWw:l0ETsEvCMzk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=Fv80pQB8fWw:l0ETsEvCMzk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=Fv80pQB8fWw:l0ETsEvCMzk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=Fv80pQB8fWw:l0ETsEvCMzk:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=Fv80pQB8fWw:l0ETsEvCMzk:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/Fv80pQB8fWw" height="1" width="1"/>]]></content:encoded><description>Recently I read Rick Wicklin’s IML blog with great interests(and anticipation for his fore-coming IML book,&amp;#160; Statistical Programming with SAS/IML Software). SAS programmers have the following programming tools to facilitate their daily work: SAS data step: the basic SAS; a generation IV programming language, similar with other procedural languages such as C. SAS Proc SQL: [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2010/10/29/sas-iml-basic/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2010/10/29/sas-iml-basic/</feedburner:origLink></item><item><title>SAS Algorithmically(1): Newton-Raphson method</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/Fw_g0omy__E/</link><category>SAS</category><category>algorithms</category><category>Newthon-Raphson</category><category>numeric precision</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Thu, 21 Oct 2010 06:39:42 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2010/10/21/sas-algorithmically1-newton-raphson-method/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>A good reference for the basic algorithms of Newton-Raphson method to calculate the square root of a number, <em>see</em></p>
<blockquote><p><a href="http://mathforum.org/library/drmath/view/52644.html">http://mathforum.org/library/drmath/view/52644.html</a></p>
</blockquote>
<p>And the SAS codes(self-explanatory):</p>
<blockquote><p><font face="Courier New">data root;        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; /*question: find the square root of 4*/         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; x=4;&#160; </font></p>
<p><font face="Courier New">&#160;&#160;&#160;&#160;&#160;&#160;&#160; /*first choose a rough approximation of sqrt(4);        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; actually, you can start with any numbers*/         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; y0=1;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></p>
<p><font face="Courier New">&#160;&#160;&#160;&#160;&#160;&#160;&#160; count=0;/*init count number*/ </font></p>
<p><font face="Courier New">&#160;&#160;&#160;&#160;&#160;&#160;&#160; do until (w&lt;1e-8); /*set a small tolerance error*/        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; count=count+1;&#160;&#160; /*accumulate count number*/         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; y=(y0+x/y0)/2;&#160;&#160; /*Newton&#8217;s formula*/         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; w=abs(y-y0); /*if close, exit;*/         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; y0=y;&#160;&#160;&#160;&#160;&#160;&#160;&#160; /* otherwise, keep the new one*/         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; end; </font></p>
<p><font face="Courier New">&#160;&#160;&#160;&#160;&#160;&#160;&#160; output;        <br />run;</font></p>
</blockquote>
<p>The outputs:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p>
<blockquote><p>x&#160;&#160;&#160; y0&#160;&#160;&#160; count&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; w&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; y </p>
<p>4&#160;&#160;&#160;&#160; 2&#160;&#160;&#160;&#160;&#160; 6&#160;&#160;&#160;&#160;&#160; 2.2204E-15&#160;&#160;&#160; 2 </p>
</blockquote>
<p>After 6 iterations, Newton-Raphson(also called <strong>divide-and-average</strong>) gets an approximated square root. See what happed during each iteration compared the output generated by SAS function,sqrt():</p>
<blockquote><p><font face="Courier New">data root;        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; x=4;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; y0=1;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; count=0;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; do until (w&lt;1e-8);&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; count=count+1;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; y=(y0+x/y0)/2;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; w=abs(y-y0);         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; y0=y;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if y =sqrt(x) then is_eq_sqrt=&quot;YES&quot;;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else is_eq_sqrt=&quot;NO&quot;;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; output;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; end;         <br />run;</font></p>
</blockquote>
<p>Outputs:</p>
<blockquote><p>x&#160;&#160;&#160;&#160;&#160;&#160; y0&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; count&#160;&#160;&#160;&#160;&#160;&#160;&#160; w&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; y&#160;&#160;&#160;&#160; is_eq_sqrt </p>
<p>4&#160;&#160;&#160; 2.50000&#160;&#160;&#160;&#160;&#160; 1&#160;&#160;&#160;&#160;&#160; 1.50000&#160;&#160;&#160; 2.50000&#160;&#160;&#160;&#160; NO      <br />4&#160;&#160;&#160; 2.05000&#160;&#160;&#160;&#160;&#160; 2&#160;&#160;&#160;&#160;&#160; 0.45000&#160;&#160;&#160; 2.05000&#160;&#160;&#160;&#160; NO       <br />4&#160;&#160;&#160; 2.00061&#160;&#160;&#160;&#160;&#160; 3&#160;&#160;&#160;&#160;&#160; 0.04939&#160;&#160;&#160; 2.00061&#160;&#160;&#160;&#160; NO       <br />4&#160;&#160;&#160; 2.00000&#160;&#160;&#160;&#160;&#160; 4&#160;&#160;&#160;&#160;&#160; 0.00061&#160;&#160;&#160; 2.00000&#160;&#160;&#160;&#160; NO       <br />4&#160;&#160;&#160; 2.00000&#160;&#160;&#160;&#160;&#160; 5&#160;&#160;&#160;&#160;&#160; 0.00000&#160;&#160;&#160; <font color="#ff0000">2.00000&#160;&#160;&#160;&#160; NO</font>       <br />4&#160;&#160;&#160; 2.00000&#160;&#160;&#160;&#160;&#160; 6&#160;&#160;&#160;&#160;&#160; 0.00000&#160;&#160; <font color="#ff0000">2.00000</font>&#160;&#160;&#160;&#160; <font color="#ff0000">YES </font>&#160;&#160;&#160;&#160; </p>
</blockquote>
<p>What’s the difference between count 5 and 6 since their y values look the same? We reset the tolerance value to 1e-3 rather than 1e-8, and get the outputs:</p>
<blockquote><p>x&#160;&#160;&#160;&#160;&#160;&#160; y0&#160;&#160;&#160;&#160;&#160; count&#160;&#160;&#160;&#160;&#160;&#160; w&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; y&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; is_eq_sqrt </p>
<p>4&#160;&#160;&#160; 2.50000&#160;&#160;&#160;&#160;&#160; 1&#160;&#160;&#160;&#160;&#160; 1.50000&#160;&#160;&#160; 2.50000&#160;&#160;&#160;&#160;&#160; NO     <br />4&#160;&#160;&#160; 2.05000&#160;&#160;&#160;&#160;&#160; 2&#160;&#160;&#160;&#160;&#160; 0.45000&#160;&#160;&#160; 2.05000&#160;&#160;&#160;&#160;&#160; NO      <br />4&#160;&#160;&#160; 2.00061&#160;&#160;&#160;&#160;&#160; 3&#160;&#160;&#160;&#160;&#160; 0.04939&#160;&#160;&#160; 2.00061&#160;&#160;&#160;&#160;&#160; NO      <br />4&#160;&#160;&#160; 2.00000&#160;&#160;&#160;&#160;&#160; 4&#160;&#160;&#160;&#160;&#160; 0.00061&#160;&#160;&#160; 2.00000&#160;&#160;&#160;&#160;&#160; NO&#160;&#160;&#160;&#160;&#160;&#160; </p>
</blockquote>
<p>The system get a faster convergence at an higher error rate, with an approximated&#160; value little away from sqrt(4). </p>
<p>We should have a deep understanding of how SAS stores numeric values, which deserves a full session to discuss, to unearth the mystery. Some basic references:</p>
<ul>
<li><em><a href="http://support.sas.com/documentation/cdl/en/lrcon/62955/HTML/default/a000695157.htm">Numeric Precision in SAS Software</a></em></li>
<li><em><a href="http://support.sas.com/techsup/technote/ts654.pdf">Numeric Precision 101</a></em></li>
<li><em><a href="http://support.sas.com/techsup/technote/ts230.html">Dealing with Numeric Representation Error in SAS Applications</a></em></li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=Fw_g0omy__E:G6bck5dh2qM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=Fw_g0omy__E:G6bck5dh2qM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=Fw_g0omy__E:G6bck5dh2qM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=Fw_g0omy__E:G6bck5dh2qM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=Fw_g0omy__E:G6bck5dh2qM:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=Fw_g0omy__E:G6bck5dh2qM:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/Fw_g0omy__E" height="1" width="1"/>]]></content:encoded><description>A good reference for the basic algorithms of Newton-Raphson method to calculate the square root of a number, see http://mathforum.org/library/drmath/view/52644.html And the SAS codes(self-explanatory): data root; &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /*question: find the square root of 4*/ &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; x=4;&amp;#160; &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /*first choose a rough approximation of sqrt(4); &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; actually, you can start with any numbers*/ &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; y0=1;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2010/10/21/sas-algorithmically1-newton-raphson-method/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2010/10/21/sas-algorithmically1-newton-raphson-method/</feedburner:origLink></item><item><title>Happy SAS Graphing!</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/vBMajiK4rFc/</link><category>SAS</category><category>Graph</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Sun, 17 Oct 2010 05:02:33 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2010/10/17/happy-sas-graphing/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>I’m not a <a href="http://www.r-project.org/">R</a> user. Instead, I’m an observer. For example, I love the R Graph Gallery:</p>
<blockquote><p><a href="http://addictedtor.free.fr/graphiques/thumbs.php">http://addictedtor.free.fr/graphiques/thumbs.php</a></p></blockquote>
<p>As a SAS programmer, I also love <a href="http://robslink.com/">Robert Allison</a>&#8216;s SAS/Graph Examples and <a href="http://www.datavis.ca">Michael Friendly</a>&#8216;s SAS Graphic Programs and Macros (the only two SAS graph galleries available on website maintained by users):</p>
<blockquote><p><a href="http://robslink.com/SAS/Home.htm">http://robslink.com/SAS/Home.htm</a></p>
<p><a href="http://www.datavis.ca/sasmac/">http://www.datavis.ca/sasmac/</a></p></blockquote>
<p>I used to be a casual user of SAS Graph. I’d like to add Graph into my toolbox in the following month: half of it due to the encouragement of the two SAS graph gurus, the other half SAS 9.2’s exciting enhancement on graphics.</p>
<p>p.s: the official SAS graph  gallery:</p>
<p><a href="http://support.sas.com/sassamples/graphgallery/index.html">http://support.sas.com/sassamples/graphgallery/index.html</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=vBMajiK4rFc:4Thz5c_yCNI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=vBMajiK4rFc:4Thz5c_yCNI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=vBMajiK4rFc:4Thz5c_yCNI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=vBMajiK4rFc:4Thz5c_yCNI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=vBMajiK4rFc:4Thz5c_yCNI:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=vBMajiK4rFc:4Thz5c_yCNI:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/vBMajiK4rFc" height="1" width="1"/>]]></content:encoded><description>I’m not a R user. Instead, I’m an observer. For example, I love the R Graph Gallery: http://addictedtor.free.fr/graphiques/thumbs.php As a SAS programmer, I also love Robert Allison&amp;#8216;s SAS/Graph Examples and Michael Friendly&amp;#8216;s SAS Graphic Programs and Macros (the only two SAS graph galleries available on website maintained by users): http://robslink.com/SAS/Home.htm http://www.datavis.ca/sasmac/ I used to be a [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2010/10/17/happy-sas-graphing/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2010/10/17/happy-sas-graphing/</feedburner:origLink></item><item><title>Logics in mathematics and in daily life: a statistical programming example</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/USPeoJO-4B4/</link><category>Logic</category><category>SAS</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Fri, 08 Oct 2010 07:47:00 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2010/10/08/logics-in-mathematics-and-in-daily-life-a-statistical-programming-example/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Refresh some <a href="http://en.wikipedia.org/wiki/Contraposition">basic logical propositions</a> (or statements):</p>
<blockquote><p><font color="#ff0000">implication</font>:&#160;&#160;&#160;&#160;&#160;&#160; if&#160;&#160;&#160;&#160;&#160;&#160; P then&#160;&#160;&#160;&#160;&#160;&#160; Q (P<strong>—</strong>&gt;Q)</p>
<p><font color="#ff0000">inverse</font>:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if not P then not Q (-P<strong>—</strong>&gt;-Q)</p>
<p>converse:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if&#160;&#160;&#160;&#160;&#160;&#160; Q then&#160;&#160;&#160;&#160;&#160;&#160; P (Q<strong>—</strong>&gt;P)</p>
<p><font color="#ff0000">contrapositive</font>: if not Q then not P (-Q<strong>—</strong>&gt;-P)</p>
<p>contradition:&#160;&#160;&#160; if&#160;&#160;&#160;&#160;&#160;&#160; P then not Q (P<strong>—</strong>&gt;-Q)</p>
</blockquote>
<p>Mathematically or logically speaking, if the <font color="#ff0000">implication</font> statement holds, then the <font color="#ff0000">contrapositive</font> holds, but the <font color="#ff0000">inverse</font> does not hold, i.e., <em>if P then Q</em>, then we can get <em>if not Q then not P</em>, but we can not get <em>if not P then not Q</em>.</p>
<p>That’s all logics needed here and Let’s turn to the ambiguous English in daily life. <a href="http://en.wikipedia.org/wiki/James_Munkres">James R. Munkres</a> of MIT gave an example in <em><a href="http://www.amazon.com/Topology-2nd-James-Munkres/dp/0131816292/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1286432430&amp;sr=1-1">Topology</a></em> (2nd edition, 2000, P.7):</p>
<blockquote><p>Mr. Jones, if&#160; you get a grade below&#160; 70 on&#160; the final, you are going to flunk&#160; this course.</p>
</blockquote>
<p>We adapt it in a logical <font color="#ff0000">implication</font> form:</p>
<blockquote><p>Mr. Jones, if <font color="#ff0000">P </font>then <font color="#ff0000">Q</font>, where</p>
<p><font color="#ff0000">P</font>: you get a grade below&#160; 70 on&#160; the final</p>
<p><font color="#ff0000">Q</font>: you are going to flunk&#160; this course</p>
</blockquote>
<p>Considering the context, we can also get that the <font color="#ff0000">inverse</font> holds: if you get a grade above er or equal to 70, then you are going to pass this course(if not P then not Q ).</p>
<p>Question: when do statistical programming, what types of logics you use? </p>
<p>Answer: Not all mathematically. <em>see</em></p>
<blockquote><p>if score&lt;70 then grade=&quot;flunk&quot;;&#160; *<strong><em>if <font color="#ff0000">P</font> then <font color="#ff0000">Q</font></em></strong>;       <br />else&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; grade=&quot;pass&quot;;&#160; *<strong><em>if not P then not Q</em></strong>;</p>
</blockquote>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=USPeoJO-4B4:NFp0b7txhrQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=USPeoJO-4B4:NFp0b7txhrQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=USPeoJO-4B4:NFp0b7txhrQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=USPeoJO-4B4:NFp0b7txhrQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=USPeoJO-4B4:NFp0b7txhrQ:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=USPeoJO-4B4:NFp0b7txhrQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/USPeoJO-4B4" height="1" width="1"/>]]></content:encoded><description>Refresh some basic logical propositions (or statements): implication:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; P then&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Q (P—&amp;#62;Q) inverse:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if not P then not Q (-P—&amp;#62;-Q) converse:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Q then&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; P (Q—&amp;#62;P) contrapositive: if not Q then not P (-Q—&amp;#62;-P) contradition:&amp;#160;&amp;#160;&amp;#160; if&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; P then not Q (P—&amp;#62;-Q) Mathematically or logically speaking, if the implication statement holds, then the contrapositive holds, [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2010/10/08/logics-in-mathematics-and-in-daily-life-a-statistical-programming-example/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2010/10/08/logics-in-mathematics-and-in-daily-life-a-statistical-programming-example/</feedburner:origLink></item><item><title>XML and SAS</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/f7cVt400A7I/</link><category>CDISC</category><category>SAS</category><category>XML</category><category>Perl Regular Expression</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Wed, 06 Oct 2010 20:44:38 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2010/10/07/xml-sas/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Last month, I gave a talk, <em>XML: the SAS Approach</em>, in <a href="http://www.cdisc.org/interchange-china#2329">CDISC Interchange China 2010</a>(at the Medical School of Fudan University, Shanghai, 2010-09-15). <a href="http://www.fda.gov/">FDA</a> favors <a href="http://www.cdisc.org/">CDISC</a> and <a href="http://www.hl7.org/">HL7</a>, the two XML based standards, and SAS programmers in biopharmaceutical industry&#160; need incorporate the XML technology into their toolboxes. Fortunately, you don’t need to be an XML expert then to play XML in your daily work, and, SAS system DOES offer multiple tools and applications to handle XML files, i.e. import and export XML data:</p>
<ul>
<li>SAS data steps approach:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; import and export </li>
<li><a href="http://support.sas.com/rnd/base/xmlengine/sxle913/index.html">SAS XML Libname engine</a>:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; import and export </li>
<li><a href="http://support.sas.com/rnd/base/ods/odsmarkup/odsxml/">SAS ODS XML statement</a>(ODS MARKUP):&#160;&#160; export </li>
<li><a href="http://support.sas.com/rnd/base/cdisc/proccdisc/index.html">PROC CDISC</a>:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; import and export </li>
<li><a href="http://www.sas.com/apps/demosdownloads/92_SDL_sysdep.jsp;jsessionid=75E543A04B4ED91EFE8B8D16B73954A1.tc4j3apps1?packageID=000513&amp;jmpflag=N">SAS XML Mapper</a>:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; import </li>
<li><a href="http://www.sas.com/apps/demosdownloads/cdiscviewer_PROD__sysdep.jsp;jsessionid=75E543A04B4ED91EFE8B8D16B73954A1.tc4j3apps1?packageID=000343&amp;jmpflag=N">SAS CDISC Viewer</a>:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <em>as if</em>&#160; import </li>
</ul>
<p>The <a href="http://www.sas.com/apps/demosdownloads/cdiscviewer_PROD__sysdep.jsp;jsessionid=75E543A04B4ED91EFE8B8D16B73954A1.tc4j3apps1?packageID=000343&amp;jmpflag=N">SAS CDISC Viewer</a> and <a href="http://support.sas.com/rnd/base/cdisc/proccdisc/index.html">PROC CDISC</a> procedure are some bit toys, and the rest really work. The Perl Regular Expression(PRX) approach is also presented to export and import XML data. </p>
<p>A simple demo. First, use FILE and PUT statements to generate an XML file:</p>
<blockquote><p>data _null_;      <br />&#160;&#160;&#160; file &quot;export.xml&quot;;       <br />&#160;&#160;&#160; put &#8216;&lt;?xml version=&quot;1.0&quot; encoding=&quot;windows-1252&quot; ?&gt;&#8217;;       <br />&#160;&#160;&#160; put &#8216;&lt;ROWSET&gt;&#8217;;       <br />&#160;&#160;&#160; put &#8216;&lt;ROW&gt;&#8217;;       <br />&#160;&#160;&#160; put &#8216;&lt;text&gt; <font color="#ff0000">Welcome to CDISC Interchange 2010 China</font> &lt;/text&gt;&#8217;;       <br />&#160;&#160;&#160; put &#8216;&lt;/ROW&gt;&#8217;;       <br />&#160;&#160;&#160; put &#8216;&lt;ROW&gt;&#8217;;       <br />&#160;&#160;&#160; put &#8216;&lt;text&gt; <font color="#ff0000">We are in Shanghai!</font> &lt;/text&gt;&#8217;;       <br />&#160;&#160;&#160; put &#8216;&lt;/ROW&gt;&#8217;;       <br />&#160;&#160;&#160; put &#8216;&lt;/ROWSET&gt;&#8217;;&#160; <br />run;</p>
</blockquote>
<p>Then read the whole XML file to SAS dataset:</p>
<blockquote><p>data import0 ;      <br />&#160;&#160;&#160; infile &quot;export.xml&quot; dsd missover truncover lrecl = 1024;       <br />&#160;&#160;&#160; input line $1024.;       <br />&#160;&#160;&#160; if line = &#8221; then delete;       <br />run;</p>
</blockquote>
<p>Third step, extract the information you want(the text between &lt;text&gt; and &lt;/text&gt; tags) using&#160; Perl Regular Expression:</p>
<blockquote><p>data import (keep = line );      <br />&#160;&#160;&#160;&#160; retain queName ;       <br />&#160;&#160;&#160;&#160; retain line ;       <br />&#160;&#160;&#160;&#160; set import0;&#160;&#160;&#160;&#160;&#160; </p>
<p>&#160;&#160;&#160;&#160; /*use PRX to capture the structure of XML data;*/      <br />&#160;&#160;&#160;&#160; If _n_=1 then do;       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; queName=prxparse(&#8216;/^\&lt;text\&gt; /&#8217;);       <br />&#160;&#160;&#160;&#160; end;       <br />&#160;&#160;&#160;&#160; queNameN=prxmatch(queName,line); </p>
<p>&#160;&#160;&#160; /*use PRX to remove the XXML tags;*/      <br />&#160;&#160;&#160;&#160; if queNameN&gt;0 then do;       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; rx1=prxparse(&quot;s/&lt;.*?&gt;//&quot;);       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; call prxchange(rx1,99,line);       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; output;       <br />&#160;&#160;&#160;&#160; end;&#160;&#160;&#160;&#160;&#160; <br />run;</p>
</blockquote>
<p> The logic of PRX approach to process XML data is very simple and can be easily modified according to your needs:</p>
<ul>
<li>complicate and utilize the PRX codes to capture the hierarchical structure of XML data. </li>
<li>remove XML tags and output the information to SAS dataset.</li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=f7cVt400A7I:_lotTvYufdw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=f7cVt400A7I:_lotTvYufdw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=f7cVt400A7I:_lotTvYufdw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=f7cVt400A7I:_lotTvYufdw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=f7cVt400A7I:_lotTvYufdw:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=f7cVt400A7I:_lotTvYufdw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/f7cVt400A7I" height="1" width="1"/>]]></content:encoded><description>Last month, I gave a talk, XML: the SAS Approach, in CDISC Interchange China 2010(at the Medical School of Fudan University, Shanghai, 2010-09-15). FDA favors CDISC and HL7, the two XML based standards, and SAS programmers in biopharmaceutical industry&amp;#160; need incorporate the XML technology into their toolboxes. Fortunately, you don’t need to be an XML [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2010/10/07/xml-sas/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2010/10/07/xml-sas/</feedburner:origLink></item><item><title>On three statistical realms</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/UkDkZj1u40Y/</link><category>misc</category><category>statistics</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Tue, 05 Oct 2010 20:37:51 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2010/10/06/on-three-statistical-realms/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Peter Petocz and Anna Reid(2010) grouped three levels of students’ conceptions of statistics:</p>
<ul>
<li>Level I:&#160;&#160; focus on <strong>techniques</strong> </li>
<li>Level II:&#160; focus on <strong>using data</strong> </li>
<li>Level III: focus on <strong>meaning</strong> </li>
</ul>
<p>I found the three conceptions could be easily interpreted as the three kinds of state of learning and using statistics based on my personal experience:</p>
<ul>
<li>State I: focus on <strong>techniques</strong>—As a student of Economics and (then) Software Engineering, I needed some statistics techniques to support my study on data mining and machine learning. So I invested a lot on some fancy skills such as logistic regression, decision tree,&#160; neural network and even support vector machine in graduate school and SAS R&amp;D(as an intern). In most time, I just thrown data to the models and checked their functionality and feasibility(<em>Wula-IT-WORKS! </em>or <em>Oops-crash-again</em>). When looking back, I’d just have to say these techniques were toys played in labs. </li>
<li>State II:&#160; focus on <strong>using data—</strong>Now I worked as a SAS programmer(also titled as statistical analyst) in pharma. All data are not just the rows and columns in the tables. They are SUBJECTS! Statistical techniques are used carefully to display and interpret the story of real world. Why the denominator is 999 while 1000 subjects were recruited in this trial? Because subject 001-127, male, 23 months of age,&#160; discontinued due to his father’s wish and opinion! </li>
<li>State III: focus on <strong>meaning</strong>—Peter Petocz and Anna Reid concluded that, regarding the MEANING conception of statistics, “statistics is an inclusive tool used to make sense of the world and develop personal meanings.” The last state of any realms ideal, is always sounded like philosophy or religion. That may be a life in a statistical way or style(If got it, I would change my blog’s title as <em>From a Statistical Point of View^</em>). </li>
</ul>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;-some notes on non-statistics&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>1. three kinds of state of Chan</p>
<ul>
<li>just mountain</li>
<li>isn’t mountain</li>
<li>still mountain</li>
</ul>
<p>2. three realm ideal of Wang Guowei</p>
<ul>
<li>heaven is integrated with man:</li>
</ul>
<blockquote><p>Last night the west wind shriveled the green-clad trees,</p>
<p>Alone I climb the high tower</p>
<p>To gaze my fill along the road to the horizon.</p>
</blockquote>
<ul>
<li>knowledge is integrated with practice</li>
</ul>
<blockquote><p>My clothes grow daily more loose, yet care I not.</p>
<p>For you am I thus wasting away in sorrow and pain.</p>
</blockquote>
<ul>
<li>feeling is integrated with scenery</li>
</ul>
<blockquote><p>I sought her in the crowd a hundred, a thousand times.</p>
<p>Suddenly with a turn of the head [I saw her],</p>
<p>That one there where the lamplight was fading.</p>
</blockquote>
<p><strong>Reference:</strong></p>
<p>Peter Petocz and Anna Reid. <em>On Becoming a Statistician—A Qualitative View</em>. International Statistical Review(2010), 78,2,271</p>
<p>WANG Guowei. <a href="http://www.en84.com/article-3828-1.html">Ren jian ci hua</a><i>. translated by </i>Adele Austin Rickett.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=UkDkZj1u40Y:88lLrMX885g:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=UkDkZj1u40Y:88lLrMX885g:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=UkDkZj1u40Y:88lLrMX885g:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=UkDkZj1u40Y:88lLrMX885g:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=UkDkZj1u40Y:88lLrMX885g:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=UkDkZj1u40Y:88lLrMX885g:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/UkDkZj1u40Y" height="1" width="1"/>]]></content:encoded><description>Peter Petocz and Anna Reid(2010) grouped three levels of students’ conceptions of statistics: Level I:&amp;#160;&amp;#160; focus on techniques Level II:&amp;#160; focus on using data Level III: focus on meaning I found the three conceptions could be easily interpreted as the three kinds of state of learning and using statistics based on my personal experience: State [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2010/10/06/on-three-statistical-realms/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2010/10/06/on-three-statistical-realms/</feedburner:origLink></item><item><title>From A Logical Point of View</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/UkPZ-sGxxxA/</link><category>misc</category><category>from a logical point of view</category><category>quine</category><category>robert mitchum</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Mon, 21 Dec 2009 07:53:47 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2009/12/21/from-a-logical-point-of-view/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><a href="http://www.jiangtanghu.com/blog/wp-content/uploads/2009/12/QUIFRO.jpg"><img style="display: inline; border-width: 0px;" title="QUIFRO" src="http://www.jiangtanghu.com/blog/wp-content/uploads/2009/12/QUIFRO_thumb.jpg" border="0" alt="QUIFRO" width="158" height="244" /></a></p>
<p><span style="font-size: small;">This blog, “<a href="http://www.jiangtanghu.com/blog/">From A Logical Point of View</a>”, is not supposed to be owned by a logician. Actually, the book, <em><a href="http://www.amazon.com/Logical-Point-View-Logico-Philosophical-Revised/dp/0674323513">From A Logical Point of View</a></em>, is a collection of logical and philosophical essays by <a href="http://www.wvquine.org/">W.V.Quine</a>(1908-2000), an American philosopher and mathematician. </span></p>
<p><span style="font-size: small;">A story about this book. <em><a href="http://www.gugalyrics.com/ROBERT-MITCHUM-FROM-A-LOGICAL-POINT-OF-VIEW-LYRICS/411924/">From A Logical Point of View</a></em>, was a calypso song by <a href="http://en.wikipedia.org/wiki/Robert_Mitchum">Robert Mitchum</a>, an US actor, composer and singer. Quine enjoyed this music and used it as his new book, which is Quine’s best seller. Now I love this book and give the name to my blog from a logical point of view^.</span></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=UkPZ-sGxxxA:jwntNdRFvdg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=UkPZ-sGxxxA:jwntNdRFvdg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=UkPZ-sGxxxA:jwntNdRFvdg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=UkPZ-sGxxxA:jwntNdRFvdg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=UkPZ-sGxxxA:jwntNdRFvdg:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=UkPZ-sGxxxA:jwntNdRFvdg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/UkPZ-sGxxxA" height="1" width="1"/>]]></content:encoded><description>This blog, “From A Logical Point of View”, is not supposed to be owned by a logician. Actually, the book, From A Logical Point of View, is a collection of logical and philosophical essays by W.V.Quine(1908-2000), an American philosopher and mathematician. A story about this book. From A Logical Point of View, was a calypso [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2009/12/21/from-a-logical-point-of-view/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2009/12/21/from-a-logical-point-of-view/</feedburner:origLink></item><item><title>Work With Oracle: A Quick Sheet for SAS Programmers</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/5hlkAdgLboM/</link><category>Database</category><category>SAS</category><category>Oracle</category><category>Oracle Database 10g Express Edition</category><category>SAS SQL Pass-Through Facility</category><category>SQL</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Thu, 03 Dec 2009 17:33:00 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2009/12/04/work-with-oracle-a-quick-sheet-for-sas-programmers-2/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>(Note: All the followings are tested on Windows XP environment.)</p>
<p><strong>0. Install Oracle Database 10g Express Edition</strong></p>
<p>Fast (and free) to download, easy to deploy and simple to admin&#8211;for learning and testing purpose, Oracle Database 10g Express Edition (Oracle Database XE, a mini version of Oracle Database 10<em>g</em> Release 2) are strongly recommended:</p>
<p>0.1  Download it at <a href="http://www.oracle.com/technology/software/products/database/xe/index.html">its homepage</a>(206MB);</p>
<p>0.2 Install it following default settings;</p>
<p>0.3 Unlock accounts for HR and SCOTT. In a windows DOS prompt, using  the following scripts: </p>
<blockquote><pre>sqlplus sys/<span style="color:#ff0000;"><em>YourSysPassword</em> </span>as sysdba</pre>
<pre>alter user HR account unlock</pre>
<pre>alter user HR identified by <em><span style="color:#ff0000;">YourHRPassword</span></em></pre>
<pre>alter user SCOTT account unlock</pre>
<pre>alter user SCOTT identified by TIGER</pre>
</blockquote>
<pre>Or you can accomplish these tasks within the Oracle web application:</pre>
<blockquote><pre><a title="http://localhost:8081/apex" href="http://localhost:8081/apex">http://localhost:8081/apex</a></pre>
</blockquote>
<p><strong>1. Connect Oracle using SAS libname engine</strong></p>
<blockquote><p><em>libname SCOTT oracle user=&#8221;SCOTT&#8221; password=&#8221;TIGER&#8221; path=&#8217;xe&#8217; ;</em></p>
</blockquote>
<pre>Note: <em>xe</em> is the default path for Oracle Database XE.</pre>
<p><strong>2. Connect Oracle using SQL Procedure Pass-Through Facility</strong></p>
<blockquote><p><em>proc sql   ;<br />    connect to oracle as orcl  <br />    (user=&#8221;SCOTT&#8221;  password=&#8221;TIGER&#8221; path=&#8217;xe&#8217;);</em></p>
<p><em>    select * <br />    from connection to orcl  </em></p>
<p><span style="color:#ff0000;"><em>       (</em></span></p>
<p><span style="color:#ff0000;"><em>   <strong>SELECT …</strong></em></span></p>
<p><span style="color:#ff0000;"><em><strong><span class="Apple-style-span" style="font-weight: normal; ">    ) ;</span></strong></em></span></p>
<p><em>    disconnect from orcl;</p>
<p>quit;</em></p>
</blockquote>
<p>Note: 1) In this approach, Oracle, instead of SAS, processes the SQL statement (i.e., you use the more powerful and flexible Oracle SQL syntax instead of SAS Proc SQL procedure for querying. For more, se<em>e <a href="http://support.sas.com/documentation/cdl/en/lrcon/61722/HTML/default/a001044413.htm">SAS Doc</a></em>)<em>.</em></p>
<p><em>          </em>  2) Your Oracle SQL codes should be placed in the <span style="color:#ff0000;">RED</span> blocks, and end without a semicolon(;):</p>
<blockquote><p><em>select *</p>
<p>from  emp</em></p>
</blockquote>
<p>           3) Only basic Oracle SQL statements (<em>select, create table</em>, . . .)can pass through this facility.</p>
<p><strong>3. Load SAS datasets to Oracle database</strong></p>
<blockquote><p>proc copy in=sashelp<br />           out=scott;<br />    select class;<br />run;</p>
</blockquote>
<p><strong>4. Misc: Some differences between Oracle SQL and SAS Proc SQL</strong></p>
<p><strong>4.1  Table aliases</strong></p>
<p>Oracle: <em>from employees a;</em></p>
<p>SAS:<em> from employees a;</em> or</p>
<blockquote><p>    <em>from employees <span style="color:#ff0000;">as</span> a;</em></p>
</blockquote>
<p><strong>4.2 Column aliases</strong></p>
<p>Oracle: don’t use single quotation marks(‘’).</p>
<blockquote><p><em>select  job_id <span style="color:#ff0000;">as job</span>, job_id <span style="color:#ff0000;">job</span>, job_id <span style="color:#ff0000;">as &#8220;job&#8221; <span style="color:#000000;">,</span> <strike>job_id <span style="color:#ff0000;">as ‘job’</span></strike></span></em></p>
</blockquote>
<p>SAS:</p>
<blockquote><p><em>select  job_id <span style="color:#ff0000;">as job</span>,  job_id <span style="color:#ff0000;">&#8220;job&#8221;</span> ,  job_id  <span style="color:#ff0000;">&#8216;job&#8217;</span>,  <strike><span style="color:#ff0000;">job_id  job</span></strike></em></p>
</blockquote>
<p><strong>4.3  Literal Character Strings</strong></p>
<p>Oracle: Date and character literal values must be enclosed within single quotation marks(‘’).</p>
<p>SAS: Use both single and double quotation marks.</p>
<p><strong>4.4  Order the null value</strong></p>
<p>Oracle: Null values are displayed last for ascending sequences and first for descending sequences.</p>
<p>SAS: Null values are displayed first for ascending sequences and last for descending sequences.</p>
<p><strong>4.5  Nesting Group Functions</strong></p>
<blockquote><p><em>select   max(avg(salary))<br />from     employees<br />group by department_id</em></p>
</blockquote>
<p>SAS log:</p>
<blockquote><p>ERROR: Summary functions nested in this way are not supported.</p>
</blockquote>
<p>Optional approach for SAS:<br />
<blockquote>
<p><em>select max(avg) as max<br />from(<br />    select   avg(salary) as avg<br />    from     employees<br />    group by department_id )</em></p>
</blockquote>
<p><strong>4.6   row number(_n_)</strong></p>
<p>Oracle:</p>
<blockquote><p>select   <span style="color:#ff0000;">rownum</span><br />from     employees</p>
</blockquote>
<p>SAS:</p>
<blockquote><p>select   <span style="color:#ff0000;">monotonic()</span><br />from     employees</p>
</blockquote>
<p>Note: <span style="color:#ff0000;">monotonic()</span> is an undocumented function of SAS, <em>see<span class="Apple-style-span" style="font-style: normal; "><a href="http://www2.sas.com/proceedings/sugi29/040-29.pdf">http://www2.sas.com/proceedings/sugi29/040-29.pdf</a></span></em></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=5hlkAdgLboM:goaCFUkX11g:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=5hlkAdgLboM:goaCFUkX11g:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=5hlkAdgLboM:goaCFUkX11g:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=5hlkAdgLboM:goaCFUkX11g:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=5hlkAdgLboM:goaCFUkX11g:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=5hlkAdgLboM:goaCFUkX11g:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/5hlkAdgLboM" height="1" width="1"/>]]></content:encoded><description>(Note: All the followings are tested on Windows XP environment.) 0. Install Oracle Database 10g Express Edition Fast (and free) to download, easy to deploy and simple to admin&amp;#8211;for learning and testing purpose, Oracle Database 10g Express Edition (Oracle Database XE, a mini version of Oracle Database 10g Release 2) are strongly recommended: 0.1 Download [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2009/12/04/work-with-oracle-a-quick-sheet-for-sas-programmers-2/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2009/12/04/work-with-oracle-a-quick-sheet-for-sas-programmers-2/</feedburner:origLink></item><item><title>Run data mining codes following William Potts</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/ZAoN7gG73LE/</link><category>data mining</category><category>SAS</category><category>SAS Enterprise Miner</category><category>William Potts</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Thu, 19 Mar 2009 20:41:00 PDT</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2009/03/20/run-data-mining-codes-following-william-potts-2/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<div><font face=Arial>FYI: <em>SAS Enterprise Miner and SAS Text Miner  Procedures: Reference for SAS 9.1.3</em>, see:</font></div>
<div><font face=Arial></font>&nbsp;</div>
<div><font face=Arial><a  href="http://support.sas.com/documentation/onlinedoc/miner/emtmsas913/listing.html">http://support.sas.com/documentation/onlinedoc/miner/emtmsas913/listing.html</a></font></div>
<div><font face=Arial></font>&nbsp;</div>
<div><font face=Arial>This entry DOES exist in the SAS Support website, but it  can&#8217;t be found by any search engine or documentation tree view. </font><font  face=Arial>You&#8217;re recommended to download these files immediately due to SAS&#8217;s  easy-dead hyperlinks.^-^ </font></div>
<div><font face=Arial></font>&nbsp;</div>
<div><font face=Arial>ps.SAS Institute provides no support for the use of  Enterprise Miner and Text Miner Procedures when they are invoked directly,  outside of the Enterprise Miner graphical user  interface.</font></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=ZAoN7gG73LE:KXbYKaIP22w:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=ZAoN7gG73LE:KXbYKaIP22w:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=ZAoN7gG73LE:KXbYKaIP22w:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=ZAoN7gG73LE:KXbYKaIP22w:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=ZAoN7gG73LE:KXbYKaIP22w:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=ZAoN7gG73LE:KXbYKaIP22w:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/ZAoN7gG73LE" height="1" width="1"/>]]></content:encoded><description>FYI: SAS Enterprise Miner and SAS Text Miner Procedures: Reference for SAS 9.1.3, see: &amp;#160; http://support.sas.com/documentation/onlinedoc/miner/emtmsas913/listing.html &amp;#160; This entry DOES exist in the SAS Support website, but it can&amp;#8217;t be found by any search engine or documentation tree view. You&amp;#8217;re recommended to download these files immediately due to SAS&amp;#8217;s easy-dead hyperlinks.^-^ &amp;#160; ps.SAS Institute provides [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2009/03/20/run-data-mining-codes-following-william-potts-2/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2009/03/20/run-data-mining-codes-following-william-potts-2/</feedburner:origLink></item><item><title>Free Machine Learning Courses (Stanford) in YouTube</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/b0gIfa8Yl7o/</link><category>data mining</category><category>machine learning</category><category>stanford</category><category>youtube</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Sun, 01 Mar 2009 18:28:00 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2009/03/02/free-machine-learning-courses-stanford-in-youtube-2/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<div><font face=Arial>FYI:</font></div>
<div><font face=Arial></font>&nbsp;</div>
<div><font face=Arial><a  href="http://www.youtube.com/view_play_list?p=A89DCFA6ADACE599">http://www.youtube.com/view_play_list?p=A89DCFA6ADACE599</a></font></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=b0gIfa8Yl7o:TsA_cA0GIpg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=b0gIfa8Yl7o:TsA_cA0GIpg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=b0gIfa8Yl7o:TsA_cA0GIpg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=b0gIfa8Yl7o:TsA_cA0GIpg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=b0gIfa8Yl7o:TsA_cA0GIpg:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=b0gIfa8Yl7o:TsA_cA0GIpg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/b0gIfa8Yl7o" height="1" width="1"/>]]></content:encoded><description>FYI: &amp;#160; http://www.youtube.com/view_play_list?p=A89DCFA6ADACE599</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2009/03/02/free-machine-learning-courses-stanford-in-youtube-2/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2009/03/02/free-machine-learning-courses-stanford-in-youtube-2/</feedburner:origLink></item><item><title>SAS User Books and Data Mining Software Comparision: Quick Links</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/EKuVZ4yB884/</link><category>data mining</category><category>SAS</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Mon, 16 Feb 2009 22:55:00 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2009/02/17/sas-user-books-and-data-mining-software-comparision-quick-links-2/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<ol>
<li><span style="font-family: Arial; font-size: x-small;"><a href="http://support.sas.com/publishing/pdfs/jan09.pdf">SAS Books Catalog(Jan,    2009)</a></span></li>
<li><span style="font-family: Arial; font-size: x-small;"><em><a href="http://www.mayato.com/index.php?option=com_content&amp;task=view&amp;id=105&amp;Itemid=96&amp;lang=en">Data    Mining Software 2009: Succesul Analyses at Affordable Prices</a></em>(Nov.    2008, by mayato)</span></li>
</ol>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=EKuVZ4yB884:IKO1_2fa2NI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=EKuVZ4yB884:IKO1_2fa2NI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=EKuVZ4yB884:IKO1_2fa2NI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=EKuVZ4yB884:IKO1_2fa2NI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=EKuVZ4yB884:IKO1_2fa2NI:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=EKuVZ4yB884:IKO1_2fa2NI:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/EKuVZ4yB884" height="1" width="1"/>]]></content:encoded><description>SAS Books Catalog(Jan, 2009) Data Mining Software 2009: Succesul Analyses at Affordable Prices(Nov. 2008, by mayato)</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2009/02/17/sas-user-books-and-data-mining-software-comparision-quick-links-2/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2009/02/17/sas-user-books-and-data-mining-software-comparision-quick-links-2/</feedburner:origLink></item><item><title>Basel II on Incremental Risk Charge(IRC): Quick Links</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/LgV39IDkX5o/</link><category>Quantitative finance</category><category>basel II</category><category>Incremental Risk Charge</category><category>IRC</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Wed, 11 Feb 2009 17:37:00 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2009/02/12/basel-ii-on-incremental-risk-chargeirc-quick-links-2/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<ol>
<li><span style="font-family: Arial; font-size: x-small;"><a href="http://www.bis.org/publ/bcbs149.pdf">Basel Committee on Banking    Supervision(Jan, 2009). Guidelines for computing capital for incremental    default risk in the trading book. Consultative document.    January.</a></span></li>
<li><span style="font-family: Arial; font-size: x-small;"><a href="http://www.riskmetrics.com/sites/default/files/Research20090200.pdf">IRC    Comments</a> by RiskMetrics</span></li>
</ol>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=LgV39IDkX5o:iNbKC98A5aQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=LgV39IDkX5o:iNbKC98A5aQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=LgV39IDkX5o:iNbKC98A5aQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=LgV39IDkX5o:iNbKC98A5aQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=LgV39IDkX5o:iNbKC98A5aQ:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=LgV39IDkX5o:iNbKC98A5aQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/LgV39IDkX5o" height="1" width="1"/>]]></content:encoded><description>Basel Committee on Banking Supervision(Jan, 2009). Guidelines for computing capital for incremental default risk in the trading book. Consultative document. January. IRC Comments by RiskMetrics</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2009/02/12/basel-ii-on-incremental-risk-chargeirc-quick-links-2/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2009/02/12/basel-ii-on-incremental-risk-chargeirc-quick-links-2/</feedburner:origLink></item><item><title>FYI: Dashboard using SAS/Graph</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/-G1FKdIaWak/</link><category>SAS</category><category>Dashboard</category><category>Graph</category><category>SASk</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Mon, 12 Jan 2009 23:01:00 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2009/01/13/fyi-dashboard-using-sasgraph-2/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><a href="http://1.bp.blogspot.com/_qlX7zyUQhog/SWw8f0hrkmI/AAAAAAAABFs/kciTZXVbaTU/s1600-h/dashboard.gif" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5290670179627012706" style="cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_qlX7zyUQhog/SWw8f0hrkmI/AAAAAAAABFs/kciTZXVbaTU/s320/dashboard.gif" border="0" alt="" /></a></p>
<p><span style="font-style: italic;">see</span>,<a href="http://support.sas.com/kb/26/134.html"> http://support.sas.com/kb/26/134.html</a></p>
<ul>
<li>Slider chart indicator:
<ul>
<li><a href="http://support.sas.com/kb/26104.html">SAS program version</a></li>
<li><a href="http://support.sas.com/kb/26114.html">stored process version</a></li>
<li><a href="http://support.sas.com/kb/26124.html">portlet version</a></li>
</ul>
</li>
<li>Slider chart dashboard:
<ul>
<li><a href="http://support.sas.com/kb/26105.html">SAS program version</a></li>
<li><a href="http://support.sas.com/kb/26115.html">stored process version</a></li>
<li><a href="http://support.sas.com/kb/26125.html">portlet version</a></li>
</ul>
</li>
<li>Bullet graph indicator:
<ul>
<li><a href="http://support.sas.com/kb/26106.html">SAS program version</a></li>
<li><a href="http://support.sas.com/kb/26116.html">stored process version</a></li>
<li><a href="http://support.sas.com/kb/26126.html">portlet version</a></li>
</ul>
</li>
<li>Bullet graph dashboard:
<ul>
<li><a href="http://support.sas.com/kb/26107.html">SAS program version</a></li>
<li><a href="http://support.sas.com/kb/26117.html">stored process version</a></li>
<li><a href="http://support.sas.com/kb/26127.html">portlet version</a></li>
</ul>
</li>
<li>Dial meter indicator:
<ul>
<li><a href="http://support.sas.com/kb/26108.html">SAS program version</a></li>
<li><a href="http://support.sas.com/kb/26118.html">stored process version</a></li>
<li><a href="http://support.sas.com/kb/26128.html">portlet version</a></li>
</ul>
</li>
<li>Dial meter dashboard:
<ul>
<li><a href="http://support.sas.com/kb/26109.html">SAS program version</a></li>
<li><a href="http://support.sas.com/kb/26119.html">stored process version</a></li>
<li><a href="http://support.sas.com/kb/26129.html">portlet version</a></li>
</ul>
</li>
<li>Bar chart indicator:
<ul>
<li><a href="http://support.sas.com/kb/26110.html">SAS program version</a></li>
<li><a href="http://support.sas.com/kb/26120.html">stored process version</a></li>
<li><a href="http://support.sas.com/kb/26130.html">portlet version</a></li>
</ul>
</li>
<li>Bar chart dashboard:
<ul>
<li><a href="http://support.sas.com/kb/26111.html">SAS program version</a></li>
<li><a href="http://support.sas.com/kb/26121.html">stored process version</a></li>
<li><a href="http://support.sas.com/kb/26131.html">portlet version</a></li>
</ul>
</li>
<li>Telesales dashboard:
<ul>
<li><a href="http://support.sas.com/kb/26112.html">SAS program version</a></li>
<li><a href="http://support.sas.com/kb/26122.html">stored process version</a></li>
<li><a href="http://support.sas.com/kb/26132.html">portlet version</a></li>
</ul>
</li>
<li>Web marketing analysis dashboard:
<ul>
<li><a href="http://support.sas.com/kb/26113.html">SAS program version</a></li>
<li><a href="http://support.sas.com/kb/26123.html">stored process version</a></li>
<li><a href="http://support.sas.com/kb/26133.html">portlet version</a></li>
</ul>
</li>
</ul>
<p>You would also like, <span style="font-style: italic;">Santa&#8217;s Dashboard</span>:<br />
<a href="http://jiangtanghu.blogspot.com/2008/12/santa-and-sas-again-santa-dashboard.html">http://jiangtanghu.blogspot.com/2008/12/santa-and-sas-again-santa-dashboard.html</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=-G1FKdIaWak:pbBUylCvdLs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=-G1FKdIaWak:pbBUylCvdLs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=-G1FKdIaWak:pbBUylCvdLs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=-G1FKdIaWak:pbBUylCvdLs:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=-G1FKdIaWak:pbBUylCvdLs:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=-G1FKdIaWak:pbBUylCvdLs:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/-G1FKdIaWak" height="1" width="1"/>]]></content:encoded><description>see, http://support.sas.com/kb/26/134.html Slider chart indicator: SAS program version stored process version portlet version Slider chart dashboard: SAS program version stored process version portlet version Bullet graph indicator: SAS program version stored process version portlet version Bullet graph dashboard: SAS program version stored process version portlet version Dial meter indicator: SAS program version stored process version [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2009/01/13/fyi-dashboard-using-sasgraph-2/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2009/01/13/fyi-dashboard-using-sasgraph-2/</feedburner:origLink></item><item><title>R or SAS: Quick Links to the Recent Debates</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/cr6okPALWJ0/</link><category>Industry Review</category><category>SAS</category><category>New York Times</category><category>R</category><category>SAS-L</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Mon, 12 Jan 2009 18:37:00 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2009/01/13/r-or-sas-quick-links-to-the-recent-debates-2/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><span style="font-family: Arial;"> </span></p>
<div><strong><br />
Original post, 7 Jan, 2009</strong></div>
<div><strong> </strong></div>
<div>New York Times, <a href="http://www.nytimes.com/2009/01/07/technology/business-computing/07program.html" target="_blank"><em><span style="color: #669966;">Data Analysts Captivated by R&#8217;s  Power</span></em></a> by<a href="http://topics.nytimes.com/top/reference/timestopics/people/v/ashlee_vance/index.html?inline=nyt-per" target="_blank"><span style="color: #669966;">Ashlee Vance</span></a>.</div>
<div></div>
<div><strong><br />
Key Point</strong></div>
<div></div>
<div>The popularity of R at universities could threaten SAS Institute.</div>
<div></div>
<div><strong><br />
A Controversial Review by Anee Milley from SAS</strong></div>
<div><strong> </strong></div>
<div>We have customers who build engines for aircraft. I am happy they are not  using freeware when I get on a jet.</div>
<div></div>
<div><strong><br />
7 Jan, 2009, </strong><a href="http://www.listserv.uga.edu/cgi-bin/wa?A1=ind0901b&amp;L=sas-l#44" target="_blank"><span style="color: #669966;"><strong>SAS-L</strong></span></a></div>
<div></div>
<div>Discussion in <a href="http://www.listserv.uga.edu/cgi-bin/wa?A1=ind0901b&amp;L=sas-l#44" target="_blank"><span style="color: #669966;">SAS-L</span></a>, the most popular SAS mailing  list. Most voices call for the incorporate both R and SAS.</div>
<div></div>
<div><strong><br />
7 Jan, 2009, </strong><a href="http://groups.google.com/group/r-help-archive/browse_thread/thread/5502fdc60d063833/352fc11a5b833f12" target="_blank"><span style="color: #669966;"><strong>R-help</strong></span></a></div>
<div></div>
<div>Cheer for the victory of R.</div>
<div></div>
<div><strong><br />
8 Jan, 2009, </strong><a href="http://topics.nytimes.com/top/reference/timestopics/people/v/ashlee_vance/index.html?inline=nyt-per" target="_blank"><span style="color: #669966;"><strong>Ashlee  Vance</strong></span></a><strong>&#8216;s blog</strong></div>
<div></div>
<div><a href="http://bits.blogs.nytimes.com/2009/01/08/r-you-ready-for-r/" target="_blank"><em><span style="color: #669966;">R You Ready for R</span></em></a>, with  lots of comments</div>
<div></div>
<div><strong><br />
9 Jan, 2009, </strong><a href="http://groups.google.com/group/sasconsulting/topics" target="_blank"><span style="color: #669966;"><strong>SAS Consulting</strong></span></a></div>
<div></div>
<div><strong><br />
9 Jan, 2009, Anee Milley</strong></div>
<div><a href="http://blogs.sas.com/sascom/index.php?/archives/434-This-post-is-rated-R.html" target="_blank"><em><span style="color: #669966;">This Post Is Rated R</span></em></a>,  stating the viewpoints from SAS about open source software: support  and participant.</div>
<div></div>
<div>For more, see <a href="http://blogsearch.google.com/blogsearch?hl=en&amp;ie=UTF-8&amp;q=R+SAS&amp;btnG=Search+Blogs" target="_blank"><span style="color: #669966;">Google Blog  Search</span></a>.</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=cr6okPALWJ0:3T2xxlLNYPE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=cr6okPALWJ0:3T2xxlLNYPE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=cr6okPALWJ0:3T2xxlLNYPE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=cr6okPALWJ0:3T2xxlLNYPE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=cr6okPALWJ0:3T2xxlLNYPE:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=cr6okPALWJ0:3T2xxlLNYPE:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/cr6okPALWJ0" height="1" width="1"/>]]></content:encoded><description>Original post, 7 Jan, 2009 New York Times, Data Analysts Captivated by R&amp;#8217;s Power byAshlee Vance. Key Point The popularity of R at universities could threaten SAS Institute. A Controversial Review by Anee Milley from SAS We have customers who build engines for aircraft. I am happy they are not using freeware when I get [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2009/01/13/r-or-sas-quick-links-to-the-recent-debates-2/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2009/01/13/r-or-sas-quick-links-to-the-recent-debates-2/</feedburner:origLink></item><item><title>Options Pricing Using SAS</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/o6HNmAWXaag/</link><category>SAS</category><category>Black</category><category>Black-Scholes</category><category>Call</category><category>Currency Option</category><category>Exchange Option</category><category>Financial Engineering</category><category>Financial Functions</category><category>Futures Option</category><category>Garman-Kohlhagen</category><category>Margrabe</category><category>Options</category><category>Put</category><category>SAS9.2</category><category>Stock Option</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Tue, 06 Jan 2009 00:20:00 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2009/01/06/options-pricing-using-sas-2/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>There are some new financial functions in SAS9.2 Base, including 8 options pricing  functions(formerly in SAS Risk Dimension). These functions can compute the price of both call and put  options on different underlying assets (stock, futures, currency, and exchange  asset), using the following models respectively:</p>
<blockquote>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Black-Scholes" target="_blank"><span style="color: #669966;">Black-Scholes model</span></a>，the traditional stock options    pricing model, <em>see</em> <a href="http://riem.swufe.edu.cn/new/techupload/course/200742423245359181.pdf" target="_blank"><span style="color: #669966;">Fischer Black and Myron Scholes    (1973)</span></a> ;</li>
</ul>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Black_model" target="_blank"><span style="color: #669966;">Black model</span></a>，extension of    Black-Scholes model on futures option (also called Black-76 model)，<em>see </em><a href="http://math.ucalgary.ca/%7Eware/jc/black76_slides.pdf" target="_blank"><span style="color: #669966;">Fischer Black(1976)</span></a>;</li>
</ul>
<ul>
<li><a href="http://www.riskglossary.com/link/garman_kohlhagen_1983.htm" target="_blank"><span style="color: #669966;">Garman-Kohlhagen model</span></a>，pricing    model on foreign currency options，<em>see </em><a href="http://ideas.repec.org/a/eee/jimfin/v2y1983i3p231-237.html" target="_blank"><span style="color: #669966;">Mark Garman and Steven    Kohlhagen(1983)</span></a> ;</li>
</ul>
<ul>
<li><a href="http://www.sitmo.com/eq/671" target="_blank"><span style="color: #669966;">Margrabe model</span></a>，on exchange    options，<em>see </em><a href="http://www.er.ethz.ch/teaching/Margrabe_Option.pdf" target="_blank"><span style="color: #669966;">William Margrabe(1978)</span></a>.</li>
</ul>
</blockquote>
<table border="0" cellspacing="0" cellpadding="2" width="473">
<tbody>
<tr>
<td width="137" valign="top">Model</td>
<td width="103" valign="top">Underlying</td>
<td width="119" valign="top">Call</td>
<td width="112" valign="top">Put</td>
</tr>
<tr>
<td width="134" valign="top">Black model</td>
<td width="104" valign="top">Futures</td>
<td width="120" valign="top">BLACK<span style="color: #ff0000;">CL</span>PRC</td>
<td width="112" valign="top">BLACK<span style="color: #ff0000;">PT</span>PRC</td>
</tr>
<tr>
<td width="133" valign="top">Black-Scholes model</td>
<td width="105" valign="top">Stock</td>
<td width="121" valign="top">BLKSH<span style="color: #ff0000;">CL</span>PRC</td>
<td width="112" valign="top">BLKSH<span style="color: #ff0000;">PT</span>PRC</td>
</tr>
<tr>
<td width="132" valign="top">Garman-Kohlhagen model</td>
<td width="105" valign="top">Currency</td>
<td width="122" valign="top">GARKH<span style="color: #ff0000;">CL</span>PRC</td>
<td width="112" valign="top">GARKH<span style="color: #ff0000;">PT</span>PRC</td>
</tr>
<tr>
<td width="133" valign="top">Margrabe model</td>
<td width="105" valign="top">Exchange</td>
<td width="122" valign="top">MARGR<span style="color: #ff0000;">CL</span>PRC</td>
<td width="112" valign="top">MARGR<span style="color: #ff0000;">PT</span>PRC</td>
</tr>
</tbody>
</table>
<ul>
<li>BLACKCLPRC: calculates the call price for European options on futures, based on the Black model.</li>
</ul>
<ul>
<li>BLACKPTPRC: calculates the put price for European options on futures, based on the Black model.</li>
</ul>
<ul>
<li>BLKSHCLPRT: calculates the call price for European options, based on the Black-Scholes model.</li>
</ul>
<ul>
<li>BLKSHPTPRT: calculates the put price for European options, based on the Black-Scholes model.</li>
</ul>
<ul>
<li>GARKHCLPRC: calculates the call price for European options on currencies, based on the Garman-Kohlhagen model.</li>
</ul>
<ul>
<li>GARKHPTPRC: calculates the put price for European options on currencies, based on the Garman-Kohlhagen model.</li>
</ul>
<ul>
<li>MARGRCLPRC: calculates the call price for European options on exchange assets, based on the Margrabe model.</li>
</ul>
<ul>
<li>MARGRPTPRC: calculates the put price for European options on exchange assets, based on the Margrabe model.</li>
</ul>
<p>For more，see SAS9.2 online help，<em>Functions and CALL Routines by Category:  Financial</em>：<br />
<a href="http://support.sas.com/documentation/cdl/en/lrdict/59540/HTML/default/a000245860.htm"><span style="color: #669966;">http://support.sas.com/documentation/cdl/en/lrdict/59540/HTML/default/a000245860.htm</span></a></p>
<p>Note: A good web site for options pricing with different models, <a title="http://www.montegodata.co.uk/" href="http://www.montegodata.co.uk/"><span style="color: #669966;">http://www.montegodata.co.uk/</span></a></p>
<p><span style="color: #669966;"> </span></p>
<div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a25c1b69-c356-4773-9162-c96f6558b8e8" class="wlWriterEditableSmartContent" style="margin: 0px; padding: 0px; display: inline;">del.icio.us  Tags: <a rel="tag" href="http://del.icio.us/popular/SAS"><span style="color: #669966;">SAS</span></a>,<a rel="tag" href="http://del.icio.us/popular/Base"><span style="color: #669966;">Base</span></a>,<a rel="tag" href="http://del.icio.us/popular/ETS"><span style="color: #669966;">ETS</span></a>,<a rel="tag" href="http://del.icio.us/popular/SAS9.2"><span style="color: #669966;">SAS9.2</span></a>,<a rel="tag" href="http://del.icio.us/popular/Financial%20Functions"><span style="color: #669966;">Financial Functions</span></a>,<a rel="tag" href="http://del.icio.us/popular/Options"><span style="color: #669966;">Options</span></a>,<a rel="tag" href="http://del.icio.us/popular/Call"><span style="color: #669966;">Call</span></a>,<a rel="tag" href="http://del.icio.us/popular/Put"><span style="color: #669966;">Put</span></a>,<a rel="tag" href="http://del.icio.us/popular/Pricing"><span style="color: #669966;">Pricing</span></a>,<a rel="tag" href="http://del.icio.us/popular/Black-Scholes%20model"><span style="color: #669966;">Black-Scholes model</span></a>,<a rel="tag" href="http://del.icio.us/popular/Black%20model"><span style="color: #669966;">Black model</span></a>,<a rel="tag" href="http://del.icio.us/popular/Black-76"><span style="color: #669966;">Black-76</span></a>,<a rel="tag" href="http://del.icio.us/popular/Garman-Kohlhagen%20model"><span style="color: #669966;">Garman-Kohlhagen model</span></a>,<a rel="tag" href="http://del.icio.us/popular/Margrabe%20model"><span style="color: #669966;">Margrabe model</span></a>,<a rel="tag" href="http://del.icio.us/popular/Futures%20Option"><span style="color: #669966;">Futures Option</span></a>,<a rel="tag" href="http://del.icio.us/popular/Stock%20Option"><span style="color: #669966;">Stock Option</span></a>,<a rel="tag" href="http://del.icio.us/popular/Currency%20Option"><span style="color: #669966;">Currency Option</span></a>,<a rel="tag" href="http://del.icio.us/popular/Exchange%20Option"><span style="color: #669966;">Exchange Option</span></a>,<a rel="tag" href="http://del.icio.us/popular/Financial%20Engineering"><span style="color: #669966;">Financial Engineering</span></a></div>
<p><span style="font-family: Arial; font-size: 85%;"> </span></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=o6HNmAWXaag:MAPG53-7H50:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=o6HNmAWXaag:MAPG53-7H50:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=o6HNmAWXaag:MAPG53-7H50:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=o6HNmAWXaag:MAPG53-7H50:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=o6HNmAWXaag:MAPG53-7H50:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=o6HNmAWXaag:MAPG53-7H50:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/o6HNmAWXaag" height="1" width="1"/>]]></content:encoded><description>There are some new financial functions in SAS9.2 Base, including 8 options pricing functions(formerly in SAS Risk Dimension). These functions can compute the price of both call and put options on different underlying assets (stock, futures, currency, and exchange asset), using the following models respectively: Black-Scholes model，the traditional stock options pricing model, see Fischer Black [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2009/01/06/options-pricing-using-sas-2/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2009/01/06/options-pricing-using-sas-2/</feedburner:origLink></item><item><title>Happy New Year</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/ZJ_1TKsxfdA/</link><category>misc</category><category>Happy New Year</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Thu, 01 Jan 2009 07:45:00 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2009/01/01/happy-new-year-2/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<div class="gmail_quote">新年快乐 ( Xin Nian Kuai Le),</p>
<div class="gmail_quote">
<div>Guten  Rutsch ins neue Jahr,<br />
Bonne Année,<br />
Nav varsh ki shubh kamnayey,<br />
Felice Anno Nuovo,<br />
Feliz Año Nuevo,<br />
Feliz Ano Novo,<br />
明けましておめでとうございます (Akemashite Omedetô),<br />
Gelukkig Nieuwjaar,<br />
Szczęśliwego Nowego Roku,<br />
Καλή Χρονιά (Kalí Chroniá),<br />
Seh Heh Bok  Mani Bat Uh Seyo,<br />
חג חנוכה שמח (Hag Hanukkah Sameah),<br />
Cчастливого Нового  Года,</div>
<p>Happy New Year,</p>
</div>
</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=ZJ_1TKsxfdA:KuRkLV9wj4Y:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=ZJ_1TKsxfdA:KuRkLV9wj4Y:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=ZJ_1TKsxfdA:KuRkLV9wj4Y:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=ZJ_1TKsxfdA:KuRkLV9wj4Y:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=ZJ_1TKsxfdA:KuRkLV9wj4Y:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=ZJ_1TKsxfdA:KuRkLV9wj4Y:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/ZJ_1TKsxfdA" height="1" width="1"/>]]></content:encoded><description>新年快乐 ( Xin Nian Kuai Le), Guten Rutsch ins neue Jahr, Bonne Année, Nav varsh ki shubh kamnayey, Felice Anno Nuovo, Feliz Año Nuevo, Feliz Ano Novo, 明けましておめでとうございます (Akemashite Omedetô), Gelukkig Nieuwjaar, Szczęśliwego Nowego Roku, Καλή Χρονιά (Kalí Chroniá), Seh Heh Bok Mani Bat Uh Seyo, חג חנוכה שמח (Hag Hanukkah Sameah), Cчастливого Нового Года, [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2009/01/01/happy-new-year-2/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2009/01/01/happy-new-year-2/</feedburner:origLink></item><item><title>Links: Risk Intelligence Vendors Review: 2008</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/qBOmPoJHwQo/</link><category>Industry Review</category><category>Celnet</category><category>FinTech100</category><category>Risk</category><category>Risk Intelligence</category><category>Risk Vendors</category><category>RiskTech100</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Thu, 25 Dec 2008 00:26:00 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2008/12/25/links-risk-intelligence-vendors-review-2008-2/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<div><span style="font-family: Arial;">You can get the big picture viewing different  sources(REMEMBER: A vendor&#8217;s research methodology is as important as its  rating):</p>
<p></span></div>
<div></div>
<div><span style="font-family: Arial;">Chartis RiskTech 100 (October 2008)</span></div>
<div><span style="font-family: Arial;"><a href="http://www.chartisresearch.com/showreport.asp?id=46">http://www.chartisresearch.com/showreport.asp?id=46</a></p>
<p><a href="http://2.bp.blogspot.com/_qlX7zyUQhog/SVNELKlQf2I/AAAAAAAABBk/O9jIagazNHU/s1600-h/RiskTech100-2008.PNG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5283641746445598562" style="cursor: pointer; width: 320px; height: 290px;" src="http://2.bp.blogspot.com/_qlX7zyUQhog/SVNELKlQf2I/AAAAAAAABBk/O9jIagazNHU/s320/RiskTech100-2008.PNG" border="0" alt="" /></a></p>
<p></span></div>
<div><span style="font-family: Arial; font-size: 85%;"> </span></div>
<div><img src="cid:01d201c9666a$7afda6e0$22121bac@apac.sas.com" border="0" alt="" hspace="0" align="baseline" /></div>
<div><span style="font-family: Arial;"> </span></div>
<div><span style="font-family: Arial;"><br />
FinTech100(2008)</span></div>
<div><span style="font-family: Arial;"><a href="http://www.americanbanker.com/article.html?id=20081112EGE9065B">http://www.americanbanker.com/article.html?id=20081112EGE9065B</a></p>
<p></span></div>
<div><span style="font-family: Arial;"> </span></div>
<div><span style="font-family: Arial;">FinTech100(2008): Top 25 Enterprise Companies</span></div>
<div><span style="font-family: Arial;"><a href="http://www.americanbanker.com/article.html?id=200811125HE027YZ">http://www.americanbanker.com/article.html?id=200811125HE027YZ</a></p>
<p></span></div>
<div><span style="font-family: Arial;"> </span></div>
<div><span style="font-family: Arial;">FinTech100(2008): Banking Top 10</span></div>
<div><span style="font-family: Arial;"><a href="http://www.americanbanker.com/article.html?id=20081112UMI813RM">http://www.americanbanker.com/article.html?id=20081112UMI813RM</a></p>
<p></span></div>
<div><span style="font-family: Arial;"> </span></div>
<div><span style="font-family: Arial;">FinTech100(2008): Capital Market Top 10</span></div>
<div><span style="font-family: Arial;"><a href="http://www.americanbanker.com/article.html?id=20081112N00MER4M">http://www.americanbanker.com/article.html?id=20081112N00MER4M</a></p>
<p></span></div>
<div><span style="font-family: Arial;"> </span></div>
<div><span style="font-family: Arial;">FinTech100(2008): Insurance Top 10</span></div>
<div><span style="font-family: Arial;"><a href="http://www.americanbanker.com/article.html?id=200811125LHKU4ZO">http://www.americanbanker.com/article.html?id=200811125LHKU4ZO</a></p>
<p></span></div>
<div><span style="font-family: Arial;"> </span></div>
<div><span style="font-family: Arial;">Celnet Credit Risk/Basel II Vendors(2008):</span></div>
<div><span style="font-family: Arial;"><a href="http://www.celent.com/PressReleases/200804143/FinCreditRiskVendors.asp">http://www.celent.com/PressReleases/200804143/FinCreditRiskVendors.asp</a><br />
</span><a href="http://2.bp.blogspot.com/_qlX7zyUQhog/SVNEYBQ4f9I/AAAAAAAABBs/3LU_2yt0-Ac/s1600-h/Celent10.PNG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5283641967282520018" style="cursor: pointer; width: 320px; height: 238px;" src="http://2.bp.blogspot.com/_qlX7zyUQhog/SVNEYBQ4f9I/AAAAAAAABBs/3LU_2yt0-Ac/s320/Celent10.PNG" border="0" alt="" /></a></div>
<div><img src="cid:01d301c9666a$7afda6e0$22121bac@apac.sas.com" border="0" alt="" hspace="0" align="baseline" /></div>
<div><span style="font-family: Arial;"> </span></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=qBOmPoJHwQo:kK9nUvQnplY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=qBOmPoJHwQo:kK9nUvQnplY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=qBOmPoJHwQo:kK9nUvQnplY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=qBOmPoJHwQo:kK9nUvQnplY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=qBOmPoJHwQo:kK9nUvQnplY:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=qBOmPoJHwQo:kK9nUvQnplY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/qBOmPoJHwQo" height="1" width="1"/>]]></content:encoded><description>You can get the big picture viewing different sources(REMEMBER: A vendor&amp;#8217;s research methodology is as important as its rating): Chartis RiskTech 100 (October 2008) http://www.chartisresearch.com/showreport.asp?id=46 FinTech100(2008) http://www.americanbanker.com/article.html?id=20081112EGE9065B FinTech100(2008): Top 25 Enterprise Companies http://www.americanbanker.com/article.html?id=200811125HE027YZ FinTech100(2008): Banking Top 10 http://www.americanbanker.com/article.html?id=20081112UMI813RM FinTech100(2008): Capital Market Top 10 http://www.americanbanker.com/article.html?id=20081112N00MER4M FinTech100(2008): Insurance Top 10 http://www.americanbanker.com/article.html?id=200811125LHKU4ZO Celnet Credit Risk/Basel II Vendors(2008): http://www.celent.com/PressReleases/200804143/FinCreditRiskVendors.asp</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2008/12/25/links-risk-intelligence-vendors-review-2008-2/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2008/12/25/links-risk-intelligence-vendors-review-2008-2/</feedburner:origLink></item><item><title>Links–BI Industry 2008: Review and Prospect</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/z4lg7dWWHJ8/</link><category>Industry Review</category><category>Business Intelligence</category><category>Cloud Computing</category><category>Data Warehouse</category><category>HP</category><category>Informatica</category><category>Open Source</category><category>SAP</category><category>SPSS</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Wed, 24 Dec 2008 01:42:00 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2008/12/24/links-bi-industry-2008-review-and-prospect-2/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<div><span style="font-family: Arial; font-size: 100%;"> </span><span style="font-family: Arial; font-size: 100%;">/*Thanks the hints supplied by: </span></p>
<p><span style="font-family: Arial; font-size: 100%;"> </span></p>
<p><span style="font-family: Arial; font-size: 100%;"><a href="http://blogs.sas.com/bipie/index.php?/archives/43-A-look-back-at-2008-and-some-crystal-ball-predictions....html"><span style="color: #669966;"><em>A look back at 2008 and some crystal ball predictions&#8230;,</em> </span></a>byTammi Kay Geroge, from <a href="http://blogs.sas.com/"><span style="color: #669966;">SASBlog</span></a>*/ </span></p>
<p><span style="font-family: Arial; font-size: 100%;"> </span></p>
<p><span style="font-family: Arial; font-size: 100%;"><a href="http://www.tdwi.org/News/display.aspx?ID=9261"><span style="color: #669966;">Major Data Warehousing Events of 2008 (and Predictions for 2009), </span></a>by Michael Schiff, from <a href="http://www.tdwi.org/"><span style="color: #669966;">TDWI</span></a>, </span></p>
<p><span style="font-family: Arial; font-size: 100%;"> </span></p>
<blockquote><p><span style="font-family: Arial; font-size: 100%;"> </span><span style="font-family: Arial; font-size: 100%;">Major Data Warehousing Events of 2008: </span></p>
<p><span style="font-family: Arial; font-size: 100%;"> </span></p>
<ul><span style="font-family: Arial; font-size: 100%;"></p>
<li>Everyone had an appliance story</li>
<li>Industry consolidations continued</li>
<li>The recessionary environment encourage further BI developments</li>
<li>Open source grew</li>
<p></span></ul>
</blockquote>
<p><span style="font-family: Arial; font-size: 100%;"> </span></p>
<blockquote><p><span style="font-family: Arial; font-size: 100%;"> </span><span style="font-family: Arial; font-size: 100%;">Predictions for 2009: </span></p>
<p><span style="font-family: Arial; font-size: 100%;"> </span></p>
<ul><span style="font-family: Arial; font-size: 100%;"></p>
<li>Further industry consolidation(Informatica by HP, SPSS by SAP)</li>
<li>Cloud computing will come down to earth</li>
<li>Open source growth will accelerate</li>
<li>The IT world will become greener</li>
<li>Major emphasis on solutions rather than tools and technology</li>
<p></span></ul>
</blockquote>
<p><span style="font-family: Arial; font-size: 100%;"> </span></p>
<p><span style="font-family: Arial; font-size: 100%;"><em><a href="http://www.b-eye-network.com/view/9298"><span style="color: #669966;">BusinessIntelligence Tools: Year in Review</span></a></em>，by  Cindi Howson, from<a href="http://www.b-eye-network.com/"><span style="color: #669966;"> BeyeNetwork</span></a></span></p>
<p><span style="font-family: Arial; font-size: 100%;"> </span></p>
<p><span style="font-family: Arial; font-size: 100%;"><em><a href="http://news.zdnet.com/2424-9595_22-255255.html"><span style="color: #669966;">Top Virtualization Trends for 2009</span></a></em>, by John Suit,  from <a href="http://www.zdnet.com/"><span style="color: #669966;">ZDNet</span></a></span></p>
<p><span style="font-family: Arial; font-size: 100%;"> </span></p>
<p><span style="font-family: Arial; font-size: 100%;"><a href="http://www.intelligententerprise.com/blog/archives/2008/12/a_prediction_fo.html"><span style="color: #669966;"><em>Surround the Warehouse: Prediction for 2009</em> </span></a>,  by Neil Raden, from <a href="http://www.intelligententerprise.com/"><span style="color: #669966;">IntelligentEnterprise</span></a></span></p>
<p><span style="font-family: Arial; font-size: 100%;"> </span></p>
</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=z4lg7dWWHJ8:z-jRLy3Vdvw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=z4lg7dWWHJ8:z-jRLy3Vdvw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=z4lg7dWWHJ8:z-jRLy3Vdvw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=z4lg7dWWHJ8:z-jRLy3Vdvw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=z4lg7dWWHJ8:z-jRLy3Vdvw:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=z4lg7dWWHJ8:z-jRLy3Vdvw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/z4lg7dWWHJ8" height="1" width="1"/>]]></content:encoded><description>/*Thanks the hints supplied by: A look back at 2008 and some crystal ball predictions&amp;#8230;, byTammi Kay Geroge, from SASBlog*/ Major Data Warehousing Events of 2008 (and Predictions for 2009), by Michael Schiff, from TDWI, Major Data Warehousing Events of 2008: Everyone had an appliance story Industry consolidations continued The recessionary environment encourage further BI [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2008/12/24/links-bi-industry-2008-review-and-prospect-2/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2008/12/24/links-bi-industry-2008-review-and-prospect-2/</feedburner:origLink></item><item><title>Industry Review: SAS and Teradata Partnership</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/UTg-bHFLos4/</link><category>data mining</category><category>Industry Review</category><category>Anti-Money Laundering</category><category>Business Analytics</category><category>Business Intelligence</category><category>Credit Risk</category><category>Data Warehouse</category><category>Enterprise Intelligence and Optimization Services</category><category>IBM</category><category>Oracle</category><category>SAP</category><category>SAS</category><category>Teradata</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Thu, 18 Dec 2008 18:44:00 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2008/12/19/industry-review-sas-and-teradata-partnership-2/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: Arial; font-size: 100%;">SAS and Teradata  Partnership: Press</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: Arial; font-size: 100%;"> </span></p>
<ol>
<li><span style="font-family: Arial; font-size: 100%;"><a href="http://www.sas.com/news/preleases/SASandTeradataAdvantageProgram.html">Leading Companies See Value in SAS and Teradata  Partnership</a></span></li>
<li><span style="font-family: Arial; font-size: 100%;"><a href="http://www.sas.com/news/preleases/TeradataAdvantageProgram.html">SAS and Teradata Unveil Advantage Program to Bring Powerful In-Database  Solutions and Services to Customers</a></span></li>
<li><span style="font-family: Arial; font-size: 100%;"><a href="http://www.teradata.com/t/page/173874/index.html">SAS and  Teradata Enter into Strategic Partnership</a></span><span style="font-size: 100%;"><span style="font-family: Arial; font-size: 10;"><br />
</span></span></li>
</ol>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: Arial; font-size: 100%;"> </span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 100%;"><span style="font-family: Arial; font-size: 10;"><br />
</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: 100%;"><span style="font-family: Arial; font-size: 10;">In BI industry, the pure players  such as SAS, Teradata and Microstrategy, need to demonstrate their indispensable  values against the megavendors, IBM (acquired Cognos), SAP (acquired Business  Object), Oracle (acquired Hyperion) and Microsoft. Teradata is solely focused on  enterprise data warehouse. SAS, dominating in business analytics (e.g. advanced  statistics and data mining), will check and balance the BI industry due to the  private-hold structure. SAS and Teradata Advantage Program partnership, includes  wide business lines, such as Analytics, AML (Anti-Money Laundering), Credit  Risk, Enterprise Intelligence and Optimization Services. I think It&#8217;s a  effective way to learn from each other in mutual emulation and</span><span style="font-family: Times New Roman;"> </span><span style="font-family: Arial; font-size: 10;">counterbalance the </span><span class="wbtrmn"><span style="font-family: Times New Roman;">concentration</span></span><span style="font-family: Arial; font-size: 10;"> market.</span></span></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=UTg-bHFLos4:AbVFTUk4ExE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=UTg-bHFLos4:AbVFTUk4ExE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=UTg-bHFLos4:AbVFTUk4ExE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=UTg-bHFLos4:AbVFTUk4ExE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=UTg-bHFLos4:AbVFTUk4ExE:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=UTg-bHFLos4:AbVFTUk4ExE:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/UTg-bHFLos4" height="1" width="1"/>]]></content:encoded><description>SAS and Teradata Partnership: Press Leading Companies See Value in SAS and Teradata Partnership SAS and Teradata Unveil Advantage Program to Bring Powerful In-Database Solutions and Services to Customers SAS and Teradata Enter into Strategic Partnership In BI industry, the pure players such as SAS, Teradata and Microstrategy, need to demonstrate their indispensable values against [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2008/12/19/industry-review-sas-and-teradata-partnership-2/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2008/12/19/industry-review-sas-and-teradata-partnership-2/</feedburner:origLink></item><item><title>Santa and SAS Again: Santa’s Dashboard</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/EetpiPLooSY/</link><category>SAS</category><category>Christmas</category><category>Dashboard</category><category>Graph</category><category>Robert Allison</category><category>Santa</category><category>Visualization</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Wed, 17 Dec 2008 17:34:00 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2008/12/18/santa-and-sas-again-santas-dashboard-2/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><a href="http://lh4.ggpht.com/_qlX7zyUQhog/SUmosq74IVI/AAAAAAAABAA/x8sNnZxdwlM/s1600-h/santaDashBoard%5B6%5D.png"><img style="border-width: 0px;" src="http://lh3.ggpht.com/_qlX7zyUQhog/SUmotX9AsmI/AAAAAAAABAE/60L97qotFbI/santaDashBoard_thumb%5B4%5D.png?imgmax=800" border="0" alt="santaDashBoard" width="358" height="358" align="left" /></a></p>
<p><em>(santaDashBoard.png, With permission by Mr. Robert Allison)</em></p>
<p>Merry Christmas again. SAS marketing staff started up an interesting Christmas campaign on <a href="http://jiangtanghu.blogspot.com/2008/12/delivers-right-toys-and-goodies-to.html" target="_blank">how Santa operates his workshop</a>. Here is another wonderful work about <a href="http://www.youtube.com/watch?v=g2oGdKzX8pg">Santa&#8217;s Dashboard</a>, created by SAS senior R&amp;D staff, <a href="http://robslink.com/" target="_blank">Robert Allison</a>.</p>
<p>Robert is a master of graphics and visualization. You can view his SAS/Graph examples in the following link:</p>
<p><a title="http://robslink.com/SAS/Home.htm" href="http://robslink.com/SAS/Home.htm">http://robslink.com/SAS/Home.htm</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=EetpiPLooSY:vujBdVtFMvY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=EetpiPLooSY:vujBdVtFMvY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=EetpiPLooSY:vujBdVtFMvY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=EetpiPLooSY:vujBdVtFMvY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=EetpiPLooSY:vujBdVtFMvY:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=EetpiPLooSY:vujBdVtFMvY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/EetpiPLooSY" height="1" width="1"/>]]></content:encoded><description>(santaDashBoard.png, With permission by Mr. Robert Allison) Merry Christmas again. SAS marketing staff started up an interesting Christmas campaign on how Santa operates his workshop. Here is another wonderful work about Santa&amp;#8217;s Dashboard, created by SAS senior R&amp;#38;D staff, Robert Allison. Robert is a master of graphics and visualization. You can view his SAS/Graph examples [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2008/12/18/santa-and-sas-again-santas-dashboard-2/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2008/12/18/santa-and-sas-again-santas-dashboard-2/</feedburner:origLink></item><item><title>The Making of an Analyst: A Supplement to What Makes a Good Business Analyst</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/-Km3iAeh7Dc/</link><category>Industry Review</category><category>Analyst</category><category>Rajan Chandras</category><category>SAS</category><category>SASCOM</category><category>Ted Cuzzillo</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Tue, 16 Dec 2008 17:40:00 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2008/12/17/the-making-of-an-analyst-a-supplement-to-what-makes-a-good-business-analyst-2/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<div><span style="font-family: Arial;">I once commented the entry,  <a href="http://www.intelligententerprise.com/blog/archives/2008/12/what_makes_a_go.html"><em><span class="HeadGiantblack">What Makes a Good Business Analyst</span></em></a> by  Rajan Chandras, with an easy tone, <em><a href="http://jiangtanghu.blogspot.com/2008/12/if-you-can-make-it-here-you-can-make-it.html">If  You Can Make it Here, You Can Make it Anywhere</a></em>. The standards of a good  analyst conclude by Rajan, in my opinion, are somewhat of very high  bars.</p>
<p></span></div>
<div><span style="font-family: Arial;"> </span></div>
<div><span style="font-family: Arial;">In the recent SASCOM Magazine, Ted Cuzzillo published a  relatively moderate enty, say, <em><a href="http://www.sas.com/news/sascom/2008q4/feature_analyst.html">The Making of  An Analyst</a></em>. This paper is considered the fresh graduates to be an  analysts in their first job hunting. </span><span style="font-family: Arial;">Yes, there two  posts are more compatible than oppositive. Rajan&#8217;s targets are those veteran  analysts with years of experience.</span></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=-Km3iAeh7Dc:LutQLWPRovA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=-Km3iAeh7Dc:LutQLWPRovA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=-Km3iAeh7Dc:LutQLWPRovA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=-Km3iAeh7Dc:LutQLWPRovA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=-Km3iAeh7Dc:LutQLWPRovA:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=-Km3iAeh7Dc:LutQLWPRovA:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/-Km3iAeh7Dc" height="1" width="1"/>]]></content:encoded><description>I once commented the entry, What Makes a Good Business Analyst by Rajan Chandras, with an easy tone, If You Can Make it Here, You Can Make it Anywhere. The standards of a good analyst conclude by Rajan, in my opinion, are somewhat of very high bars. In the recent SASCOM Magazine, Ted Cuzzillo published [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2008/12/17/the-making-of-an-analyst-a-supplement-to-what-makes-a-good-business-analyst-2/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2008/12/17/the-making-of-an-analyst-a-supplement-to-what-makes-a-good-business-analyst-2/</feedburner:origLink></item><item><title>Learn Time Series Analysis: Free Materials for SAS Users</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/RirGEoKFB9I/</link><category>SAS</category><category>ARCH</category><category>ETS</category><category>forecast</category><category>GARCH</category><category>Open Source</category><category>time series</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Tue, 16 Dec 2008 00:07:00 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2008/12/16/learn-time-series-analysis-free-materials-for-sas-users-2/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<div><span style="font-family: Arial; font-size: 100%;">0. A gentle <em><a href="http://www.itl.nist.gov/div898/handbook/pmc/section4/pmc4.htm">Introduction  to Time Series Analysis</a></em>, may serve as fast  learning materials:</span><span style="font-size: 100%;"><br />
</span></div>
<div><span style="font-family: Arial; font-size: 100%;"><a href="http://www.itl.nist.gov/div898/handbook/pmc/section4/pmc4.htm"></p>
<blockquote><p>http://www.itl.nist.gov/div898/handbook/pmc/section4/pmc4.htm</p></blockquote>
<p></a></p>
<p></span></div>
<div><span style="font-family: Arial; font-size: 100%;">1. An open source book(with data and code), <a href="http://statistik.mathematik.uni-wuerzburg.de/timeseries/index.php?id=preamble"><em>A  First Course on Time Series Analysis: examples with SAS</em>, by Prof. Michael  Falk</a>, is available in:</span><span style="font-size: 100%;"><br />
</span></div>
<div><span style="font-family: Arial; font-size: 100%;"><a href="http://statistik.mathematik.uni-wuerzburg.de/timeseries/"></p>
<blockquote><p>http://statistik.mathematik.uni-wuerzburg.de/timeseries/</p></blockquote>
<p></a></p>
<p></span></div>
<div><span style="font-family: Arial; font-size: 100%;">2. A SAS User book, <a href="http://www.sas.com/apps/pubscat/bookdetails.jsp?catid=1&amp;pc=55512"><em>Forecasting  Examples for Business and Economics Using SAS </em>by B.  Cohen</a> (another popular SAS User book for time series is <a href="http://www.sas.com/apps/pubscat/bookdetails.jsp?catid=1&amp;pc=57275"><em>SAS  for Forecasting Time Series</em> by John Brocklebank and David Dickey</a>), is  example-driven approach. You can review and submit the codes to learn SAS for  time series analysis in a comprehensive way&#8211;there are 30 examples  available:</span><span style="font-size: 100%;"><br />
</span></div>
<div><span style="font-family: Arial; font-size: 100%;"></p>
<blockquote><p>1. Forecasting an Autoregressive  Progress<br />
2. Forecasting a Moving Average  Process<br />
3. Forecasting a Seasonal  Process<br />
4. Seasonal Adjustment and  Forecasting<br />
5. Forecasting with Transfer Function  Models<br />
6. Forecasting with Intervention  Models<br />
7. Forecasting Multivariate Time  Series<br />
8. Preparing Time Series Data for  Forecasting<br />
9. Using Macros for Forecasting  Tasks<br />
10. Fitting and Forecasting a Linear Model by  OLS<br />
11. Testing Forecasting Models for Break Points with Chow  Tests<br />
12.  Fitting and Forecasting Linear Models with Linear  Restrictions<br />
13. Fitting and  Forecasting a Linear Model with an AR Error Correction<br />
14. Fitting Linear Models with Heteroscedastic Error  Terms<br />
15. Fitting Linear Models with ARCH-GARCH Error  Terms<br />
16. Assessing Forecast  Accuracy<br />
17. Forecasting Using a Lagged Dependent Variable  Model<br />
18. Static and Dynamic Forecasting Using a Lagged Dependent Variable Model<br />
19. Fitting and Forecasting Polynomial Distributed Lag  Models<br />
20. Fitting and Forecasting Restricted Polynomial Distributed Lag  Models<br />
21. Fitting and Forecasting a Linear System by SUR and  ITSUR<br />
22. Testing and Restricting Parameter Estimates in a Linear System  Forecast<br />
23. Producing Goodness-of-Fit Statistics for Forecasts of a Linear  System o<br />
24. Fitting a Linear System by Instrumental  Methods<br />
25. Linear System Diagnostics and Autoregressive Error  Correction<br />
26.  Creating Forecast confidence Limits with Monte Carlo  Simulation<br />
27. Fitting and  Forecasting a Nonlinear  Model<br />
28. Restricting and Testing Parameters of a Nonlinear Forecasting  Model<br />
29. Producing Forecasts Automatically Using the Time  Series Forecasting Sys<br />
30. Developing Forecasting Models Using the Time  Series Forecasting System</p></blockquote>
<p></span></div>
<div><span style="font-family: Arial; font-size: 100%;">You can get the code with data and proc steps in  SAS website:</span><span style="font-size: 100%;"><br />
</span></div>
<div><span style="font-family: Arial; font-size: 100%;"><a href="http://ftp.sas.com/samples/A55512"></p>
<blockquote><p>http://ftp.sas.com/samples/A55512</p></blockquote>
<p></a></p>
<p></span></div>
<div><span style="font-family: Arial; font-size: 100%;">3. SAS/ETS User&#8217;s Guide and Procedure  Guide in <a href="http://support.sas.com/documentation/index.html">SAS  Product Documentation</a>:</span><span style="font-size: 100%;"><br />
</span></div>
<div><span style="font-family: Arial; font-size: 100%;"><a href="http://support.sas.com/documentation/onlinedoc/ets/index.html"></p>
<blockquote><p>http://support.sas.com/documentation/onlinedoc/ets/index.html</p></blockquote>
<p></a></p>
<p></span></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=RirGEoKFB9I:h3nLcDD_Fio:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=RirGEoKFB9I:h3nLcDD_Fio:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=RirGEoKFB9I:h3nLcDD_Fio:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=RirGEoKFB9I:h3nLcDD_Fio:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=RirGEoKFB9I:h3nLcDD_Fio:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=RirGEoKFB9I:h3nLcDD_Fio:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/RirGEoKFB9I" height="1" width="1"/>]]></content:encoded><description>0. A gentle Introduction to Time Series Analysis, may serve as fast learning materials: http://www.itl.nist.gov/div898/handbook/pmc/section4/pmc4.htm 1. An open source book(with data and code), A First Course on Time Series Analysis: examples with SAS, by Prof. Michael Falk, is available in: http://statistik.mathematik.uni-wuerzburg.de/timeseries/ 2. A SAS User book, Forecasting Examples for Business and Economics Using SAS by [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2008/12/16/learn-time-series-analysis-free-materials-for-sas-users-2/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2008/12/16/learn-time-series-analysis-free-materials-for-sas-users-2/</feedburner:origLink></item><item><title>Links of 2008-12-16: Financial Engineering, Ponzi Scheme, SAS PC Game</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/6DHrDxvPQ7Y/</link><category>Quantitative finance</category><category>SAS</category><category>Financial Engineering</category><category>Madoff</category><category>PC Game</category><category>Ponzi Scheme</category><category>SEC</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Mon, 15 Dec 2008 17:34:00 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2008/12/16/links-of-2008-12-16-financial-engineering-ponzi-scheme-sas-pc-game-2/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<ol>
<li><span style="font-family: Arial; font-size: 100%;"><a href="http://creditspectrum.blogspot.com/2008/12/state-of-financial-engineering.html">The  State of Financial Engineering</a></span></li>
<li><span style="font-family: Arial; font-size: 100%;"><a href="http://en.wikipedia.org/wiki/Ponzi_scheme">Ponzi Scheme</a> Returns: <a href="http://www.sec.gov/news/press/2008/2008-293.htm">SEC Charges Bernard L.  Madoff for Multi-Billion Dollar Ponzi Scheme</a></span></li>
<li><span style="font-family: Arial; font-size: 100%;"><a href="http://wolfensas.subshock.net/">WolfenSAS:  A PC Game written by SAS Code</a></span></li>
</ol>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=6DHrDxvPQ7Y:qXTmHjwactg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=6DHrDxvPQ7Y:qXTmHjwactg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=6DHrDxvPQ7Y:qXTmHjwactg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=6DHrDxvPQ7Y:qXTmHjwactg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=6DHrDxvPQ7Y:qXTmHjwactg:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=6DHrDxvPQ7Y:qXTmHjwactg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/6DHrDxvPQ7Y" height="1" width="1"/>]]></content:encoded><description>The State of Financial Engineering Ponzi Scheme Returns: SEC Charges Bernard L. Madoff for Multi-Billion Dollar Ponzi Scheme WolfenSAS: A PC Game written by SAS Code</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2008/12/16/links-of-2008-12-16-financial-engineering-ponzi-scheme-sas-pc-game-2/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2008/12/16/links-of-2008-12-16-financial-engineering-ponzi-scheme-sas-pc-game-2/</feedburner:origLink></item><item><title>Delivers the Right Toys and Goodies to the Right Boys and Girls: Story of Santa and SAS</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/MX1VIByBkpI/</link><category>SAS</category><category>Business Analytics</category><category>Christmas</category><category>Santa</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Sun, 14 Dec 2008 03:57:00 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2008/12/14/delivers-the-right-toys-and-goodies-to-the-right-boys-and-girls-story-of-santa-and-sas-2/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>How to know the boys and girls&#8217; real demands around the world? and how to predict their demands in next Christmas?</p>
<p>How to purchase toys and goodies with a balance of costs and profits? and how to deliver them more efficiently?</p>
<p>There are lots of questions in the list of Santa, CEO of Santa&#8217;s Workshop. SAS&#8217;s marketing staff held a very creative champion for the coming Christmas. You can watch the<a href="http://www.youtube.com/watch?v=eBtE7XOGZV4&amp;eurl=&amp;feature=player_embedded"> interview with Santa in youtube.com</a>, or read the success story about Santa, <a href="http://www.sas.com/success/santa.html"><em>Santa&#8217;s Secret: Magic? No. It&#8217;s SAS(R) Business Analytics</em></a>.</p>
<p>Merry Christmas.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=MX1VIByBkpI:8ybhhQ770wg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=MX1VIByBkpI:8ybhhQ770wg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=MX1VIByBkpI:8ybhhQ770wg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=MX1VIByBkpI:8ybhhQ770wg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=MX1VIByBkpI:8ybhhQ770wg:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=MX1VIByBkpI:8ybhhQ770wg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/MX1VIByBkpI" height="1" width="1"/>]]></content:encoded><description>How to know the boys and girls&amp;#8217; real demands around the world? and how to predict their demands in next Christmas? How to purchase toys and goodies with a balance of costs and profits? and how to deliver them more efficiently? There are lots of questions in the list of Santa, CEO of Santa&amp;#8217;s Workshop. [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2008/12/14/delivers-the-right-toys-and-goodies-to-the-right-boys-and-girls-story-of-santa-and-sas-2/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2008/12/14/delivers-the-right-toys-and-goodies-to-the-right-boys-and-girls-story-of-santa-and-sas-2/</feedburner:origLink></item><item><title>If You Can Make it Here, You Can Make it Anywhere: On What Makes a Good Business Analyst by Rajan Chandras</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/yeJCr9TdwWk/</link><category>Industry Review</category><category>Assessment</category><category>business analyst</category><category>Forrester</category><category>skills</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Sat, 13 Dec 2008 08:24:00 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2008/12/14/if-you-can-make-it-here-you-can-make-it-anywhere-on-what-makes-a-good-business-analyst-by-rajan-chandras-2/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>In the latest post, <a href="http://www.intelligententerprise.com/blog/archives/2008/12/what_makes_a_go.html"><em><span class="HeadGiantblack">What Makes a Good Business Analyst?</span></em></a>, Rajan Chandras cites some soft items from <span class="hpTopStoryBlurb"> <em>Forrester&#8217;s Business Analyst Assessment Workbook</em>:<br />
</span><span class="hpTopStoryBlurb"> </span></p>
<ul>
<li>Ability to think abstractly, identify patterns, and generate ideas and solutions</li>
<li>Understanding of when and how to escalate issues or needs</li>
<li>Understanding of and ability to delivery the appropriate level of detail needed for each task</li>
<li>Interest in exploring and understanding new concepts and topic areas</li>
<li>Emotionally invested in the work</li>
<li>Ability to learn by shadowing stakeholders</li>
<li>Ability to clearly articulate technology in terms stakeholders can understand</li>
<li>Understanding of the organizational culture and its impact on processes and projects (this one seems obvious, but the latter phrase is more profound than might seem at first glance)</li>
<li>Ability to drive a decision analysis and selection process</li>
<li>Ability to recognize patterns in requirements and categorize them appropriately</li>
</ul>
<p>What&#8217;s more, there are some suggestions by Rajan Chandras himself:<span class="hpTopStoryBlurb"> </span></p>
<ul>
<li>Know the organization&#8217;s external environment: its competitive position, current state of the industry, geographical &amp; social factors, etc.</li>
<li>Know the organization&#8217;s internal environment: its financial position, organization culture, IT maturity, etc.</li>
<li>Adapt to the needs (your language, dress etc.), but be yourself. Imperfect, yet genuine, is fine; falsity comes through easily, and will destroy your credibility in no time.</li>
</ul>
<p><span class="hpTopStoryBlurb">No doubt, no boss can reject such a perfect analyst. But I&#8217;m afraid these standards are suitable for every professionals.</span><span class="hpTopStoryBlurb"> That is to say, they create a model to explain everything. It is too universal to be served as a good filter to select the most proper analysts. She or he may more marketable in any other business line.</span></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=yeJCr9TdwWk:cannftfCHS8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=yeJCr9TdwWk:cannftfCHS8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=yeJCr9TdwWk:cannftfCHS8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=yeJCr9TdwWk:cannftfCHS8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=yeJCr9TdwWk:cannftfCHS8:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=yeJCr9TdwWk:cannftfCHS8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/yeJCr9TdwWk" height="1" width="1"/>]]></content:encoded><description>In the latest post, What Makes a Good Business Analyst?, Rajan Chandras cites some soft items from Forrester&amp;#8217;s Business Analyst Assessment Workbook: Ability to think abstractly, identify patterns, and generate ideas and solutions Understanding of when and how to escalate issues or needs Understanding of and ability to delivery the appropriate level of detail needed [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2008/12/14/if-you-can-make-it-here-you-can-make-it-anywhere-on-what-makes-a-good-business-analyst-by-rajan-chandras-2/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2008/12/14/if-you-can-make-it-here-you-can-make-it-anywhere-on-what-makes-a-good-business-analyst-by-rajan-chandras-2/</feedburner:origLink></item><item><title>Data Mining in Stock Market</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/plYZJvjHbEQ/</link><category>data mining</category><category>Quantitative finance</category><category>decision tree</category><category>parameter tuning</category><category>predictive models</category><category>stock market</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Sat, 13 Dec 2008 07:55:00 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2008/12/13/data-mining-in-stock-market-2/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Data Mining in Stock Market? Is it crazy? or is it just a hopeless try? Every mentor in mathematics and finance educates us that the stock market is too chaotic and <strong>sentimental</strong> to use mathematical models. Most of all gift rock scientists are concentrated in the study of interest of rates and fixed income securities. It sounds profitable to use mathematical and statistical models to predict the price of stock, but there are little successfull stories.</p>
<p>I know I might hold some academic doctrines, so I have interest to monitor any effort to try to forecast stock prices using data mining techniques. Some links from a popular data mining blog , <a href="http://dataminingresearch.blogspot.com/"><em>Data Mining Research</em></a>, are listed as follows:</p>
<ul>
<li><a href="http://dataminingresearch.blogspot.com/2008/09/stock-prediction-using-decision-tree.html">Stock Prediction using Decision Tree</a></li>
<li><a href="http://dataminingresearch.blogspot.com/2008/12/stock-picking-using-data-mining_12.html">Stock Picking using Data Mining: Parameter Tuning</a></li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=plYZJvjHbEQ:rRXjw-Ji5bo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=plYZJvjHbEQ:rRXjw-Ji5bo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=plYZJvjHbEQ:rRXjw-Ji5bo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=plYZJvjHbEQ:rRXjw-Ji5bo:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=plYZJvjHbEQ:rRXjw-Ji5bo:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=plYZJvjHbEQ:rRXjw-Ji5bo:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/plYZJvjHbEQ" height="1" width="1"/>]]></content:encoded><description>Data Mining in Stock Market? Is it crazy? or is it just a hopeless try? Every mentor in mathematics and finance educates us that the stock market is too chaotic and sentimental to use mathematical models. Most of all gift rock scientists are concentrated in the study of interest of rates and fixed income securities. [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2008/12/13/data-mining-in-stock-market-2/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2008/12/13/data-mining-in-stock-market-2/</feedburner:origLink></item><item><title>Haiku from SAS R&amp;D staff</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/FQPVoR4zTO8/</link><category>misc</category><category>SAS</category><category>haiku</category><category>Matsuo Basho</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Tue, 09 Dec 2008 19:37:00 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2008/12/10/haiku-from-sas-rd-staff-2/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<blockquote><p>First prompts are silent.<br />
Subsequent prompts loud and clear.<br />
Now all prompts are heard.</p></blockquote>
<p>Poem from R&amp;D staff?<br />
Yes. Rhyming sonnets were shakespeare-like complex;<br />
they wrote Japanese haiku, showed as above.</p>
<p>The SAS R&amp;D staff should complete some paper work in defects system before changing a code. They use informal descriptive language(HAIKUUU!) in the early stage. <a href="http://blogs.sas.com/sasdummy/" target="_blank">Chris Hemedinger</a>, a senior software engineer at SAS, collected some <a href="http://blogs.sas.com/sasdummy/index.php?/archives/62-Poetry-in-commotion.html" target="_blank">haikus</a> in his blog to show the humor side of SAS R&amp;D staff. It&#8217;s interesting to cite one of the most famous haikus by <a href="http://en.wikipedia.org/wiki/Matsuo_Bash%C5%8D" target="_blank">Matsuo Bashō</a> for comparison:</p>
<blockquote><p>Old pond<br />
a frog jumps<br />
the sound of water</p></blockquote>
<div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:e0bef7d3-3ec5-4580-99ea-fd432ffbdcce" class="wlWriterSmartContent" style="margin: 0px; padding: 0px; display: inline;">del.icio.us Tags: <a rel="tag" href="http://del.icio.us/popular/haiku">haiku</a>,<a rel="tag" href="http://del.icio.us/popular/SAS">SAS</a>,<a rel="tag" href="http://del.icio.us/popular/R&amp;D">R&amp;D</a>,<a rel="tag" href="http://del.icio.us/popular/Matsuo%20Bash%c3%b4">Matsuo Bashô</a></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=FQPVoR4zTO8:_59Fu3YVyZs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=FQPVoR4zTO8:_59Fu3YVyZs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=FQPVoR4zTO8:_59Fu3YVyZs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=FQPVoR4zTO8:_59Fu3YVyZs:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=FQPVoR4zTO8:_59Fu3YVyZs:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=FQPVoR4zTO8:_59Fu3YVyZs:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/FQPVoR4zTO8" height="1" width="1"/>]]></content:encoded><description>First prompts are silent. Subsequent prompts loud and clear. Now all prompts are heard. Poem from R&amp;#38;D staff? Yes. Rhyming sonnets were shakespeare-like complex; they wrote Japanese haiku, showed as above. The SAS R&amp;#38;D staff should complete some paper work in defects system before changing a code. They use informal descriptive language(HAIKUUU!) in the early [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2008/12/10/haiku-from-sas-rd-staff-2/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2008/12/10/haiku-from-sas-rd-staff-2/</feedburner:origLink></item><item><title>Happy grow up</title><link>http://feedproxy.google.com/~r/jiangtanghu/~3/KWsnIBtLRrg/</link><category>misc</category><category>Beijing</category><category>Robert Louis Stevenson</category><category>The Book of Virutes</category><category>W. Bennentt</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jiangtang Hu</dc:creator><pubDate>Tue, 09 Dec 2008 18:21:00 PST</pubDate><guid isPermaLink="false">http://www.jiangtanghu.com/blog/2008/12/10/happy-grow-up-2/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<div><span style="font-family: Arial;"> </span></div>
<div style="margin-right: 0px;" dir="ltr"><span style="font-family: Arial;"></p>
<blockquote><p>Happy hearts and happy faces,<br />
Happy play in grassy  places&#8211;<br />
-<em><a href="http://www.bartleby.com/188/128.html">Good and Bad  Children</a></em> by <a href="http://en.wikipedia.org/wiki/Robert_Louis_Stevenson">Robert Louis  Stevenson</a></p></blockquote>
<p>I read this verse in W. Bennentt&#8217;s popular book,  <em><a href="http://www.amazon.com/Book-Virtues-Treasury-Great-Stories/dp/0671683063">The  Book of Virtues</a></em>, during the bus-to-company time this morning. It&#8217;s  interesting to read Stevenson&#8217;s <em>Treasure Island</em>, of course in Chinese  edition when I was young.</p>
<p></span></div>
<div><span style="font-family: Arial; font-size: 85%;"> </span></div>
<div><span style="font-family: Arial;">Yes, it sounds &#8220;uncool&#8221;, &#8211;I went to work, with technical  documents in my bag, and read a for-children book. A grown-up with childlike  innocence? dare not say. I just read the book to fresh my mind and my  English.</p>
<p></span></div>
<div></div>
<div><span style="font-family: Arial;">It snows little Beijing. </span></div>
<p><span style="font-family: Arial;"> </span></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=KWsnIBtLRrg:QMN3L6RdyLg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=KWsnIBtLRrg:QMN3L6RdyLg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?i=KWsnIBtLRrg:QMN3L6RdyLg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=KWsnIBtLRrg:QMN3L6RdyLg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=KWsnIBtLRrg:QMN3L6RdyLg:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/jiangtanghu?a=KWsnIBtLRrg:QMN3L6RdyLg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/jiangtanghu?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/jiangtanghu/~4/KWsnIBtLRrg" height="1" width="1"/>]]></content:encoded><description>Happy hearts and happy faces, Happy play in grassy places&amp;#8211; -Good and Bad Children by Robert Louis Stevenson I read this verse in W. Bennentt&amp;#8217;s popular book, The Book of Virtues, during the bus-to-company time this morning. It&amp;#8217;s interesting to read Stevenson&amp;#8217;s Treasure Island, of course in Chinese edition when I was young. Yes, it [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jiangtanghu.com/blog/2008/12/10/happy-grow-up-2/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.jiangtanghu.com/blog/2008/12/10/happy-grow-up-2/</feedburner:origLink></item></channel></rss>

