Chapter 36. Gretl and R
330
The above syntax, despite being already quite useful by itself, shows its full power when it is used
in conjunction with user-written functions. Example36.2 shows how to define a gretl function that
calls R internally.
36.6 Performance issues with R
Risa large andcomplexprogram, which takes an appreciable time to initialize itself.5 In interactive
use this not a significant problem,but ifyou have a gretl script that callsR repeatedly the cumulated
start-up costs can become bothersome. To get around this, gretl calls the R shared library by
preference; in this case the start-up cost is borne only once, on the first invocation of R code from
within gretl.
Support for the R shared library is built into the gretl packages for MS Windows and OS X—but
the advantage is realized only if the library is in fact available at run time. If you are building gretl
yourself on Linux and wish to make use of the R library, you should ensure (a) that R has been
built with the shared library enabled (specify --enable-R-shlib when configuring your build of
R), and(b) that the pkg-config program is able to detect your R installation. We do not link to the
Rlibrary at build time, rather we open it dynamically on demand. The gretl GUI has an item under
the Tools/Preferences menu which enables you to select the path to the library, if it is not detected
automatically.
If you have the R shared library installed but want to force gretl to call the R executable instead,
you can do
set R_lib off
36.7 Further use of the R library
Besides improving performance, as noted above, use of the R shared library makes possible a
further refinement. That is, you can define functions in R, within a foreign block, then call those
functions later in your script much as if they were gretl functions. This is illustrated below.
set R_functions on
foreign language=R
plus_one <- function(q) {
z = q+1
invisible(z)
}
end foreign
scalar b=R.plus_one(2)
The R function plus_one is obviously trivial in itself, but the example shows a couple of points.
First, for this mechanism to work you need to enable R_functions via the set command. Second,
to avoid collision with the gretl function namespace, calls to functions defined in this way must be
prefixed with “R.”, as in R.plus_one.
Built-in R functions may also be called in this way, once R_functions is set on. For example one
can invoke R’s choose function, which computes binomial coefficients:
set R_functions on
scalar b=R.choose(10,4)
Note, however, that the possibilities for use ofbuilt-in R functionsare limited; only functions whose
arguments and return values are sufficiently generic (basically scalars or matrices) will work.
5
Aboutone third ofa secondonanIntelCore Duomachine of2009 vintage.
Convert pdf to ppt online - software SDK cloud:C# Create PDF from PowerPoint Library to convert pptx, ppt to PDF in C#.net, ASP.NET MVC, WinForms, WPF
Online C# Tutorial for Creating PDF from Microsoft PowerPoint Presentation
www.rasteredge.com
Convert pdf to ppt online - software SDK cloud:VB.NET Create PDF from PowerPoint Library to convert pptx, ppt to PDF in vb.net, ASP.NET MVC, WinForms, WPF
VB.NET Tutorial for Export PDF file from Microsoft Office PowerPoint
www.rasteredge.com
Chapter 37
Gretl and Ox
37.1 Introduction
Ox, written by Jurgen A. Doornik (seeDoornik2007), is described by its author as “an object-
oriented statistical system. At its core is a powerful matrix language, which is complemented by
acomprehensive statistical library. Among the special features of Ox are its speed [and] well-
designed syntax.... Ox comes in two versions: Ox Professional and Ox Console. Ox is available for
Windows, Linux, Mac (OS X), and several Unix platforms.” (www.doornik.com)
Ox is proprietary, closed-source software. The command-line version of the program is, however,
available free of change for academic users. Quoting again from Doornik’s website: “The Console
(command line) versions may be used freely for academic research and teaching purposes only....
The Ox syntax is public, and, of course, you may do with your own Ox code whatever you wish.”
If you wish to use Ox in conjunction with gretl please refer todoornik.com for further details on
licensing.
As the reader will no doubt have noticed, most other software that we discuss in thisGuide is open-
source and freely available for all users. We make an exception for Ox on the grounds that it is
indeed fast and well designed, and that its statistical library—along with various add-on packages
that are also available—has exceptional coverage of cutting-edge techniques in econometrics. The
gretl authors have used Ox for benchmarking some of gretl’s more advanced features such as
dynamic panel models and state space models.
1
37.2 Ox support in gretl
The support offered for Ox in gretl is similar to that offered for R, as discussed in chapter36.
+
To enable support for Ox, go to the Tools/Preferences/General menu item and look under the Programs
tab. Find the entry for the pathtothe oxl executable, that is, theprogram that runs Oxfiles (on MSWindows
it is called oxl.exe). Adjustthe pathif it’s not already right for your system and youshould be ready to go.
With support enabled, you can open and edit Ox programs in the gretl GUI. Clicking the “execute”
icon in the editor window will send your code to Ox for execution. Figures37.1 and Figure37.2
showan Ox program and part of its output.
In addition you can embed Ox code within a gretl script using a foreign block, as described in
connection with R. A trivial example, which simply prints the gretl data matrixwithin Ox, is shown
below:
open data4-1
matrix m = { dataset }
mwrite(m, "gretl.mat", 1)
foreign language=Ox
#include <oxstd.h>
main()
{
1
For a review of Ox, see Cribari-Netoand Zarkos (2003) and for a (somewhat dated) comparison of Ox with other
matrix-oriented packagessuchasGAUSS, seeSteinhaus(1999).
331
software SDK cloud:Online Convert PowerPoint to PDF file. Best free online export
Online Powerpoint to PDF Converter. Download Free Trial. Convert a PPTX/PPT File to PDF. Just upload your file by clicking on the blue
www.rasteredge.com
software SDK cloud:How to C#: Convert PDF, Excel, PPT to Word
How to C#: Convert PDF, Excel, PPT to Word. Online C# Tutorial for Converting PDF, MS-Excel, MS-PPT to Word. PDF, MS-Excel, MS-PPT to Word Conversion Overview.
www.rasteredge.com
Chapter 37. Gretl and Ox
332
Figure 37.1: Ox editing window
Figure 37.2: Output from Ox
software SDK cloud:How to C#: Convert Word, Excel and PPT to PDF
How to C#: Convert Word, Excel and PPT to PDF. Online C# Tutorial for Converting MS Office Word, Excel and PowerPoint to PDF. MS Office
www.rasteredge.com
software SDK cloud:C# PDF Convert: How to Convert MS PPT to Adobe PDF Document
C# PDF Convert: How to Convert MS PPT to Adobe PDF Document. Provide Free Demo Code for PDF Conversion from Microsoft PowerPoint in C# Program.
www.rasteredge.com
Chapter 37. Gretl and Ox
333
decl gmat = gretl_loadmat("gretl.mat");
print(gmat);
}
end foreign
The above example illustrates how a matrix can be passed from gretl to Ox. We use the mwrite
function to write a matrix into the user’s “dotdir” (see section14.2), then in Ox we use the function
gretl_loadmat to retrieve the matrix.
How does gretl_loadmat come to be defined? When gretl writes out the Ox program correspond-
ing to your foreign block it does two things in addition. First, it writes a small utility file named
gretl_io.ox into your dotdir. This contains a definition for gretl_loadmat and also for the
function gretl_export (see below). Second, gretl interpolates into your Ox code a line which in-
cludes this utility file (it is inserted right after the inclusion of oxstd.h, which is needed in all Ox
programs). Note that gretl_loadmat expects to find the named file in the user’s dotdir.
37.3 Illustration: replication of DPD model
Example37.1 shows a more ambitious case. This script replicates one of the dynamic panel data
models inArellanoandBond(1991), first using gretl and then using Ox; we then check the relative
differences between the parameter estimates produced by the two programs (which turn out to be
reassuringly small).
Unlike the previous example, in this case we pass the dataset from gretl to Ox as a CSV file in
order to preserve the variable names. Note the use of the internal variable csv_na to get the right
representation of missing values for use with Ox—and also note that the --send-data option for
the foreign command is not available in connection with Ox.
We get the parameter estimates back from Ox using gretl_export on the Ox side and mread on
the gretl side. The gretl_export function takes two arguments, a matrix and a file name. The file
is written into the user’s dotdir, from where it can be picked up using mread. The final portion of
the output from Example37.1 is shown below:
? matrix oxparm = mread("oxparm.mat", 1)
Generated matrix oxparm
? eval abs((parm - oxparm) ./ oxparm)
1.4578e-13
3.5642e-13
5.0672e-15
1.6091e-13
8.9808e-15
2.0450e-14
1.0218e-13
2.1048e-13
9.5898e-15
1.8658e-14
2.1852e-14
2.9451e-13
1.9398e-13
software SDK cloud:C# TIFF: Learn to Convert MS Word, Excel, and PPT to TIFF Image
PPTXDocument doc = new PPTXDocument(@"demo.pptx"); if (null == doc) throw new Exception("Fail to load PowerPoint Document"); // Convert PPT to Tiff.
www.rasteredge.com
software SDK cloud:VB.NET PowerPoint: Process & Manipulate PPT (.pptx) Slide(s)
This VB.NET online tutorial page can help you processing control add-on can do PPT creating, loading powerful & profession imaging controls, PDF document, image
www.rasteredge.com
Chapter 37. Gretl and Ox
334
Example 37.1: Estimation of dynamic panel data model via gretl andOx
open abdata.gdt
# Take first differences of the independent variables
genr Dw = diff(w)
genr Dk = diff(k)
genr Dys = diff(ys)
# 1-step GMM estimation
arbond 2 ; n Dw Dw(-1) Dk Dys Dys(-1) 0 --time-dummies
matrix parm = $coeff
# Write CSV file for Ox
set csv_na .NaN
store @dotdir/abdata.csv
# Replicate using the Ox DPD package
foreign language=Ox
#include <oxstd.h>
#import <packages/dpd/dpd>
main ()
{
decl dpd = new DPD();
dpd.Load("@dotdir/abdata.csv");
dpd.SetYear("YEAR");
dpd.Select(Y_VAR, {"n", 0, 2});
dpd.Select(X_VAR, {"w", 0, 1, "k", 0, 0, "ys", 0, 1});
dpd.Select(I_VAR, {"w", 0, 1, "k", 0, 0, "ys", 0, 1});
dpd.Gmm("n", 2, 99); // GMM-type instrument
dpd.SetDummies(D_CONSTANT + D_TIME);
dpd.SetTest(2, 2); // Sargan, AR 1-2 tests
dpd.Estimate();
// 1-step estimation
decl parm = dpd.GetPar();
gretl_export(parm, "oxparm.mat");
delete dpd;
}
end foreign
# Compare the results
matrix oxparm = mread("oxparm.mat", 1)
eval abs((parm - oxparm) ./ oxparm)
software SDK cloud:VB.NET PowerPoint: Convert & Render PPT into PDF Document
VB.NET PowerPoint - Render PPT to PDF in VB.NET. How to Convert PowerPoint Slide to PDF Using VB.NET Code in .NET. Visual C#. VB.NET. Home > .NET Imaging SDK >
www.rasteredge.com
software SDK cloud:VB.NET PowerPoint: Read & Scan Barcode Image from PPT Slide
VB.NET PPT PDF-417 barcode scanning SDK to detect PDF-417 barcode image from PowerPoint slide. VB.NET APIs to detect and decode
www.rasteredge.com
Chapter 38
Gretl and Octave
38.1 Introduction
GNU Octave, written by John W. Eaton and others, is described as “a high-level language, primar-
ily intended for numerical computations.” The program is oriented towards “solving linear and
nonlinear problems numerically” and “performing other numerical experiments using a language
that is mostly compatible with Matlab.” (www.gnu.org/software/octave) Octave is available in
source-code form (naturally, for GNU software) and also in the form ofbinary packages for MS Win-
dows and Mac OS X. Numerous contributed packages that extend Octave’s functionality in various
ways can be found atoctave.sf.net.
38.2 Octave support in gretl
The support offered for Octave in gretl is similar to that offered for R (chapter36). For example,
you can open and edit Octave scripts in the gretl GUI. Clicking the “execute” icon in the editor
window will send your code to Octave for execution. Figures38.1 and Figure38.2 show an Octave
script and itsoutput; in this example we use the function logistic_regression to replicate some
results fromGreene(2000).
In addition you can embed Octave code within a gretl script using a foreign block, as described
in connection with R. A trivial example, which simply loads and prints the gretl data matrix within
Octave, is shown below. (Note that in Octave, appending “;” to a line suppresses verbose output;
leaving off the semicolon results in printing of the object that is produced, if any.)
open data4-1
matrix m = { dataset }
mwrite(m, "gretl.mat", 1)
foreign language=Octave
gmat = gretl_loadmat("gretl.mat")
end foreign
We use the mwrite function to write a matrix into the user’s “dotdir” (see section14.2), then in Oc-
taveweusethe function gretl_loadmatto retrieve thematrix. The“magic” behindgretl_loadmat
works in essentially the same way as for Ox (chapter37).
38.3 Illustration: spectral methods
We now present a more ambitious example which exploits Octave’s handling of the frequency
domain (and also its ability to use code written for MATLAB), namely estimation of the spec-
tral coherence of two time series. For this illustration we require two extra Octave packages
fromoctave.sf.net, namely those supporting spectral functions (specfun) and signal process-
ing (signal). After downloading the packages you can install them from within Octave as follows
(using version numbers as of March 2010):
pkg install specfun-1.0.8.tar.gz
pkg install signal-1.0.10.tar.gz
335
Chapter 38. Gretl and Octave
336
Figure 38.1: Octave editing window
Figure 38.2: Output from Octave
Chapter 38. Gretl and Octave
337
In addition we need some specialized MATLAB files made available by Mario Forni of the Univer-
sity ofModena, athttp://morgana.unimore.it/forni_mario/matlab.htm. The files neededare
coheren2.m, coheren.m, coher.m, cospec.m, crosscov.m, crosspec.m, crosspe.m and spec.m.
These are in a form appropriate for MS Windows. On Linuxyou couldrun the following shell script
toget the files andremove the Windows end-of-file character(which preventsthe filesfrom running
under Octave):
SITE=http://morgana.unimore.it/forni_mario/MYPROG
# download files and delete trailing Ctrl-Z
for f in \
coheren2.m \
coheren.m \
coher.m \
cospec.m \
crosscov.m \
crosspec.m \
crosspe.m \
spec.m ; do
wget $SITE/$f && \
cat $f | tr -d \\032 > tmp.m && mv tmp.m $f
done
The Forni files should be placed in some appropriate directory, and you should tell Octave where
to find them by adding that directory to Octave’s loadpath. On Linux this can be done via an entry
in one’s ~/.octaverc file. For example
addpath("~/stats/octave/forni");
Alternatively, an addpath directive can be written into the Octave script that calls on these files.
With everything set up on the Octave side we now write a gretl script (see Example38.1) which
opens a time-series dataset, constructs and writes a matrix containing two series, and defines a
foreign block containing the Octave statements needed to produce the spectral coherence matrix.
The matrix is exported via the gretl_export function, which is automatically defined for you; this
function takes two arguments, a matrix and a file name. The file is written into the user’s “dotdir”,
from where it can be picked up using mread. Finally, we produce a graph from the matrix in gretl.
In the script this is sent to the screen; Figure38.3 shows the same graph in PDF format.
Chapter 38. Gretl and Octave
338
Example 38.1: Estimation of spectral coherence via Octave
open data9-7
matrix xy = { PRIME, UNEMP }
mwrite(xy, "xy.mat", 1)
foreign language=Octave
# uncomment and modify the following if necessary
# addpath("~/stats/octave/forni");
xy = gretl_loadmat("xy.mat");
x = xy(:,1);
y = xy(:,2);
# note: the last parameter is the Bartlett window size
h = coher(x, y, 8);
gretl_export(h, "h.mat");
end foreign
h = mread("h.mat", 1)
colnames(h, "coherence")
gnuplot 1 --time-series --with-lines --matrix=h --output=display
-0.5
-0.4
-0.3
-0.2
-0.1
0
0.1
0.2
0.3
0.4
0
10
20
30
40
50
60
coherence
Figure 38.3: Spectral coherenceestimated viaOctave
Chapter 39
Gretl and Stata
Stata (www.stata.com) is closed-source, proprietary (and expensive) software and as such is not a
natural companion to gretl. Nonetheless,given Stata’s popularity it is desirableto havea convenient
way of comparing results across the two programs, and to that end we provide some support for
Stata code under the foreign command.
+
Toenable supportfor Stata, go to the Tools/Preferences/General menu item and look under the Programs
tab. Find the entry for the path to the Stata executable. Adjust the path if it’s not already right for your
system and youshould be ready togo.
The following example illustrates what’s available. You can send the current gretl dataset to Stata
usingthe --send-data flag. And having defineda matrixwithin Stata you can export it foruse with
gretl via the gretl_export command: this takes two arguments, the name of the matrix to export
and the filename to use; the file is written to the user’s “dotdir”, from where it can be retrieved
using the mread() function.
1
To suppress printed output from Stata you can add the --quiet flag
to the foreign block.
Example 39.1: Comparison of clustered standard errors with Stata
function matrix stata_reorder (matrix se)
# stata puts the intercept last, but gretl puts it first
scalar n = rows(se)
return se[n] | se[1:n-1]
end function
open data4-1
ols 1 0 2 3 --cluster=bedrms
matrix se = $stderr
foreign language=stata --send-data
regress price sqft bedrms, vce(cluster bedrms)
matrix vcv = e(V)
gretl_export vcv "vcv.mat"
end foreign
matrix stata_vcv = mread("vcv.mat", 1)
stata_se = stata_reorder(sqrt(diag(stata_vcv)))
matrix check = se - stata_se
print check
In addition you can edit “pure” Stata scripts in the gretl GUI and send them for execution as with
native gretl scripts.
Note that Stata coerces all variable names to lower-case on data input, so even if series names in
1
We do not currently offer the complementary functionality of gretl_loadmat, which enables reading of matrices
written by gretl’smwrite() functionin Ox andOctave. Thisisnotatalleasy to implementin Statacode.
339
Documents you may be interested
Documents you may be interested