1 | rlab -- A JavaScript Scientific Library like R
|
2 |
|
3 | ## introduction
|
4 |
|
5 | The rlab is a A JavaScript Scientific Library like R.
|
6 |
|
7 | It's based on `lodash.js , jStat.js and numeric.js`
|
8 |
|
9 | ## install
|
10 |
|
11 | ```
|
12 | npm install rlab
|
13 | ```
|
14 |
|
15 | ## use rlab
|
16 |
|
17 | file : probabilityEx.js
|
18 |
|
19 | ```javascript
|
20 | var R = require("rlab");
|
21 | var c = console;
|
22 | var dice = R.steps(1,6);
|
23 | c.log("sample(1:6, 10)", R.samples(dice, 10));
|
24 | c.log("runif(10,0,1)=", R.runif(10, 0, 1).str());
|
25 | c.log("rnorm(10,5,1)=", R.rnorm(10, 5, 1).str());
|
26 | c.log("dnorm(5,5,1)=", R.dnorm(5, 5, 1));
|
27 | c.log("pnorm(5,5,1)=", R.pnorm(5, 5, 1));
|
28 | c.log("qnorm(0.5,5,1)=", R.qnorm(0.5, 5, 1));
|
29 | c.log("rbinom(10, 5, 0.5)=", R.rbinom(10,5,0.5));
|
30 | c.log("dbinom(4, 5, 0.5)=", R.dbinom(4,5,0.5));
|
31 | c.log("dbinom(5, 5, 0.5)=", R.dbinom(5,5,0.5));
|
32 | c.log("pbinom(4, 5, 0.5)=", R.pbinom(4,5,0.5));
|
33 | c.log("qbinom(0.9, 5, 0.5)=", R.qbinom(0.9,5,0.5));
|
34 | ```
|
35 |
|
36 | run :
|
37 |
|
38 | ```
|
39 | $ node probabilityEx.js
|
40 | sample(1:6, 10) [ 3, 5, 3, 2, 3, 3, 1, 2, 4, 3 ]
|
41 | runif(10,0,1)= [0.9119,0.5899,0.6839,0.1350,0.6894,0.9512,0.8186,0.5826,0.4279,0
|
42 | .5125]
|
43 | rnorm(10,5,1)= [5.8961,5.4312,6.0002,5.3623,5.5281,4.4413,6.2144,5.7173,5.3111,1
|
44 | .3146]
|
45 | dnorm(5,5,1)= 0.3989422804014327
|
46 | pnorm(5,5,1)= 0.5
|
47 | qnorm(0.5,5,1)= 5
|
48 | rbinom(10, 5, 0.5)= [ 2, 1, 2, 2, 4, 4, 1, 4, 3, 2 ]
|
49 | dbinom(4, 5, 0.5)= 0.15625
|
50 | dbinom(5, 5, 0.5)= 0.03125
|
51 | pbinom(4, 5, 0.5)= 0.96875
|
52 | qbinom(0.9, 5, 0.5)= 4
|
53 | ```
|
54 |
|
55 | file : statisticsEx.js
|
56 |
|
57 | ```javascript
|
58 | var R = require("../rlab");
|
59 | var c = console;
|
60 | var v = [1,3,5];
|
61 | c.log("v.max()=", v.max());
|
62 | c.log("v.min()=", v.min());
|
63 | c.log("v.sum()=", v.sum());
|
64 | c.log("v.normalize()=", v.normalize());
|
65 | c.log("v.normalize().sum()=", v.normalize().sum());
|
66 | c.log("v.product()=", v.product());
|
67 | c.log("v.mean()=", v.mean());
|
68 | c.log("v.range()=", v.range());
|
69 | c.log("v.unique()=", v.unique());
|
70 | c.log("v.median()=", v.median());
|
71 | c.log("v.variance()=", v.variance());
|
72 | c.log("v.deviation()=", v.deviation());
|
73 | c.log("v.sd()=", v.sd(), " sd^2=", v.sd()*v.sd());
|
74 | c.log("v.cov(v)=", v.cov(v), "v.cor(v)=", v.cor(v));
|
75 | c.log("factorial(5)=", R.factorial(5));
|
76 | ```
|
77 |
|
78 | run :
|
79 |
|
80 | ```
|
81 | $ node statisticsEx.js
|
82 | v.max()= 5
|
83 | v.min()= 1
|
84 | v.sum()= 9
|
85 | v.normalize()= [ 0.1111111111111111, 0.3333333333333333, 0.5555555555555556 ]
|
86 | v.normalize().sum()= 1
|
87 | v.product()= 15
|
88 | v.mean()= 3
|
89 | v.range()= 4
|
90 | v.unique()= [ 1, 3, 5 ]
|
91 | v.median()= 3
|
92 | v.variance()= 2.6666666666666665
|
93 | v.deviation()= [ -2, 0, 2 ]
|
94 | v.sd()= 1.632993161855452 sd^2= 2.6666666666666665
|
95 | v.cov(v)= 2 v.cor(v)= 1
|
96 | factorial(5)= 120
|
97 | ```
|
98 |
|
99 | file : matrixEx.js
|
100 |
|
101 | ```javascript
|
102 | var M = require("../rlab").M;
|
103 |
|
104 | var c = console;
|
105 | var v = [1,2,3];
|
106 | c.log("v.sin()=", v.sin());
|
107 | c.log("v.norm2()=", v.norm2());
|
108 | c.log("v.norm2Squared()=", v.norm2Squared());
|
109 |
|
110 | var A = [[1,2,3],[4,5,6],[7,3,9]];
|
111 | var AiA = A.inv().dot(A);
|
112 | c.log("AiA=\n", AiA.strM());
|
113 | c.log("AiA.tr()=\n", AiA.tr().strM());
|
114 | c.log("A=\n", A.str());
|
115 | c.log("A.mul(0.1)=\n", A.mul(0.1).strM());
|
116 | c.log("A.row(1)=", A.row(1));
|
117 | c.log("A.col(1)=", A.col(1));
|
118 | c.log("A.sumM()=", A.sumM());
|
119 | c.log("A.rowSum(2)=", A.rowSum(2));
|
120 | c.log("A.colSum(2)=", A.colSum(2));
|
121 | c.log("A.mean(row)=", A.rowMean().str());
|
122 | c.log("A.mean(col)=", A.colMean().str());
|
123 |
|
124 | var D = M.diag(v);
|
125 | c.log("D=", D);
|
126 |
|
127 | var Eλ = M.eigR(A);
|
128 | var E = Eλ.E, λ=Eλ.lambda;
|
129 | c.log("E*[λ]*E-1=", E.dot(λ.diag()).dot(E.inv()).strM());
|
130 | ```
|
131 |
|
132 | run :
|
133 |
|
134 | ```
|
135 | $ node matrixEx.js
|
136 | v.sin()= [ 0.8414709848078965, 0.9092974268256817, 0.1411200080598672 ]
|
137 | v.norm2()= 3.7416573867739413
|
138 | v.norm2Squared()= 14
|
139 | AiA=
|
140 | [[ 1, 1.11e-16, -1.11e-16],
|
141 | [ 0, 1, 4.441e-16],
|
142 | [ -3.331e-16, -3.331e-16, 1]]
|
143 | AiA.tr()=
|
144 | [[ 1, 0, -3.331e-16],
|
145 | [ 1.11e-16, 1, -3.331e-16],
|
146 | [ -1.11e-16, 4.441e-16, 1]]
|
147 | A=
|
148 | [[1.0000,2.0000,3.0000],[4.0000,5.0000,6.0000],[7.0000,3.0000,9.0000]]
|
149 | A.mul(0.1)=
|
150 | [[ 0.1, 0.2, 0.3],
|
151 | [ 0.4, 0.5, 0.6],
|
152 | [ 0.7, 0.3, 0.9]]
|
153 | A.row(1)= [ 4, 5, 6 ]
|
154 | A.col(1)= [ 2, 5, 3 ]
|
155 | A.sumM()= 40
|
156 | A.rowSum(2)= [ 6, 15, 19 ]
|
157 | A.colSum(2)= [ 12, 10, 18 ]
|
158 | A.mean(row)= [2.0000,5.0000,6.3333]
|
159 | A.mean(col)= [4.0000,3.3333,6.0000]
|
160 | D= [ [ 1, 0, 0 ], [ 0, 2, 0 ], [ 0, 0, 3 ] ]
|
161 | E*[λ]*E-1= [[ 1, 2, 3],
|
162 | [ 4, 5, 6],
|
163 | [ 7, 3, 9]]
|
164 | ```
|
165 |
|
166 | ## IDE
|
167 |
|
168 | There is a webIDE server based on rlab , you may start it by :
|
169 |
|
170 | ```
|
171 | node rserver.js
|
172 | ```
|
173 |
|
174 | ## Author
|
175 |
|
176 | Author: ccckmit
|
177 |
|
178 | Email : ccckmit@gmail.com
|
179 |
|
180 |
|