UNPKG

6.41 kBMarkdownView Raw
1rlab -- A JavaScript Scientific Library like R
2
3## Introduction
4
5The rlab is a A JavaScript Scientific Library like R.
6
7It's based on `lodash.js , jStat.js and numeric.js`
8
9## Install
10
11```
12npm install rlab
13```
14
15## Use rlab
16
17file : probabilityEx.js
18
19```javascript
20var R = require("rlab");
21var dice = R.steps(1,6);
22log("sample(1:6, 10)", R.samples(dice, 10));
23log("runif(10,0,1)=", R.runif(10, 0, 1).str());
24log("rnorm(10,5,1)=", R.rnorm(10, 5, 1).str());
25log("dnorm(5,5,1)=", R.dnorm(5, 5, 1));
26log("pnorm(5,5,1)=", R.pnorm(5, 5, 1));
27log("qnorm(0.5,5,1)=", R.qnorm(0.5, 5, 1));
28log("rbinom(10, 5, 0.5)=", R.rbinom(10,5,0.5));
29log("dbinom(4, 5, 0.5)=", R.dbinom(4,5,0.5));
30log("dbinom(5, 5, 0.5)=", R.dbinom(5,5,0.5));
31log("pbinom(4, 5, 0.5)=", R.pbinom(4,5,0.5));
32log("qbinom(0.9, 5, 0.5)=", R.qbinom(0.9,5,0.5));
33
34```
35
36run :
37
38```
39$ node probabilityEx.js
40sample(1:6, 10) [ 3, 5, 3, 2, 3, 3, 1, 2, 4, 3 ]
41runif(10,0,1)= [0.9119,0.5899,0.6839,0.1350,0.6894,0.9512,0.8186,0.5826,0.4279,0
42.5125]
43rnorm(10,5,1)= [5.8961,5.4312,6.0002,5.3623,5.5281,4.4413,6.2144,5.7173,5.3111,1
44.3146]
45dnorm(5,5,1)= 0.3989422804014327
46pnorm(5,5,1)= 0.5
47qnorm(0.5,5,1)= 5
48rbinom(10, 5, 0.5)= [ 2, 1, 2, 2, 4, 4, 1, 4, 3, 2 ]
49dbinom(4, 5, 0.5)= 0.15625
50dbinom(5, 5, 0.5)= 0.03125
51pbinom(4, 5, 0.5)= 0.96875
52qbinom(0.9, 5, 0.5)= 4
53```
54
55file : statisticsEx.js
56
57```javascript
58var R = require("rlab");
59var v = [1,3,5];
60log("v.max()=", v.max());
61log("v.min()=", v.min());
62log("v.sum()=", v.sum());
63log("v.normalize()=", v.normalize());
64log("v.normalize().sum()=", v.normalize().sum());
65log("v.product()=", v.product());
66log("v.mean()=", v.mean());
67log("v.range()=", v.range());
68log("v.median()=", v.median());
69log("v.variance()=", v.variance());
70log("v.sd()=", v.sd(), " sd^2=", v.sd()*v.sd());
71log("v.cov(v)=", v.cov(v), "v.cor(v)=", v.cor(v));
72log("factorial(5)=", R.factorial(5));
73```
74
75run :
76
77```
78$ node statisticsEx.js
79v.max()= 5
80v.min()= 1
81v.sum()= 9
82v.normalize()= [ 0.1111111111111111, 0.3333333333333333, 0.5555555555555556 ]
83v.normalize().sum()= 1
84v.product()= 15
85v.mean()= 1
86v.range()= 4
87v.median()= 3
88v.variance()= 2.6666666666666665
89v.sd()= 1.632993161855452 sd^2= 2.6666666666666665
90v.cov(v)= 4 v.cor(v)= 1
91factorial(5)= 120
92```
93
94file : testEx.js
95
96```javascript
97var R = require("rlab");
98var v = [1,3,5];
99
100var x = R.rnorm(10, 0, 0.1);
101log("x=", x.str());
102log("x.sort()=", x.sort().str());
103
104var t1=R.ttest({x:x, mu:0});
105R.report(t1);
106```
107
108run :
109
110```
111$ node testEx.js
112x= [-0.1405,0.0495,-0.1850,0.0824,0.0687,-0.0854,-0.1049,-0.1171,0.0947,-0.1592]
113
114x.sort()= [-0.0854,-0.1049,-0.1171,-0.1405,-0.1592,-0.1850,0.0495,0.0687,0.0824,
1150.0947]
116=========== report ==========
117name : ttest(X)
118h : H0:mu=0
119alpha : 0.0500
120op : =
121pvalue : 0.0003
122ci : [-0.2599,-0.1101]
123df : 9.0000
124mean : -0.1850
125sd : 0.1047
126```
127
128file : matrixEx.js
129
130```javascript
131var M = require("rlab").M;
132var v = [1,2,3];
133log("v.sin()=", v.sin());
134log("v.norm2()=", v.norm2());
135log("v.norm2Squared()=", v.norm2Squared());
136
137var A = [[1,2,3],[4,5,6],[7,3,9]];
138var AiA = A.inv().dot(A);
139log("AiA=\n", AiA.strM());
140log("AiA.tr()=\n", AiA.tr().strM());
141log("A=\n", A.str());
142log("A.mul(0.1)=\n", A.mul(0.1).strM());
143log("A.row(1)=", A.row(1));
144log("A.col(1)=", A.col(1));
145log("A.sumM()=", A.sumM());
146log("A.rowSum()=", A.rowSum());
147log("A.colSum()=", A.colSum());
148log("A.mean(row)=", A.rowMean().str());
149log("A.mean(col)=", A.colMean().str());
150
151var D = M.diag(v);
152log("D=", D);
153
154var Eλ = M.eigR(A);
155var E = Eλ.E, λ=Eλ.lambda;
156log("E*[λ]*E-1=", E.dot(λ.diag()).dot(E.inv()).strM());
157```
158
159run :
160
161```
162$ node matrixEx.js
163v.sin()= [ 0.8414709848078965, 0.9092974268256817, 0.1411200080598672 ]
164v.norm2()= 3.7416573867739413
165v.norm2Squared()= 14
166AiA=
167 [[ 1, 1.11e-16, -1.11e-16],
168 [ 0, 1, 4.441e-16],
169 [ -3.331e-16, -3.331e-16, 1]]
170AiA.tr()=
171 [[ 1, 0, -3.331e-16],
172 [ 1.11e-16, 1, -3.331e-16],
173 [ -1.11e-16, 4.441e-16, 1]]
174A=
175 [[1.0000,2.0000,3.0000],[4.0000,5.0000,6.0000],[7.0000,3.0000,9.0000]]
176A.mul(0.1)=
177 [[ 0.1, 0.2, 0.3],
178 [ 0.4, 0.5, 0.6],
179 [ 0.7, 0.3, 0.9]]
180A.row(1)= [ 4, 5, 6 ]
181A.col(1)= [ 2, 5, 3 ]
182A.sumM()= 40
183A.rowSum(2)= [ 6, 15, 19 ]
184A.colSum(2)= [ 12, 10, 18 ]
185A.mean(row)= [2.0000,5.0000,6.3333]
186A.mean(col)= [4.0000,3.3333,6.0000]
187D= [ [ 1, 0, 0 ], [ 0, 2, 0 ], [ 0, 0, 3 ] ]
188E*[λ]*E-1= [[ 1, 2, 3],
189 [ 4, 5, 6],
190 [ 7, 3, 9]]
191```
192
193file : differentialEx.js
194
195```javascript
196var R = require("rlab");
197
198var d = R.D.d, i=R.D.i, sin=R.sin, PI = R.PI, x2=(x)=>x*x;
199
200log('d(x^2,2)=', d(x2, 2));
201log('d(sin(x/4),pi/4)=', d(sin, PI/4));
202log('i(x^2,0,1)=', i(x2,0,1));
203log('i(sin(x),0,pi/2)=', i(sin,0,PI/2));
204
205```
206
207run :
208
209```
210D:\Dropbox\github\rlab\example>node differentialEx.js
211d(x^2,2)= 4.000999999999699
212d(sin(x/4),pi/4)= 0.7067531099743674
213i(x^2,0,1)= 0.33283350000000095
214i(sin(x),0,pi/2)= 0.9997035898637557
215```
216
217## build web version
218
219```
220$npm run-script build-web
221
222> rlab@0.5.4 build-web D:\Dropbox\github\rlab
223> browserify web/_rlab.js -o web/rlab.js
224```
225
226## IDE
227
228There is a webIDE for rlab , you may start it by open rlab.html
229
230## Author
231
232Author: ccckmit
233
234Email : ccckmit@gmail.com
235
236## License
237
238The rlab project is licensed in MIT license.
239
240Copyright (c) 2013 rlab
241
242Permission is hereby granted, free of charge, to any person obtaining a copy
243of this software and associated documentation files (the "Software"), to deal
244in the Software without restriction, including without limitation the rights
245to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
246copies of the Software, and to permit persons to whom the Software is
247furnished to do so, subject to the following conditions:
248
249The above copyright notice and this permission notice shall be included in
250all copies or substantial portions of the Software.
251
252THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
253IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
254FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
255AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
256LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
257OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
258THE SOFTWARE.
259
260
261