Difference between revisions of "Analyze data with the Statistics software R"
From JSXGraph Wiki
Jump to navigationJump to searchA WASSERMANN (talk | contribs) (New page: This litte application sends the coordinates of the points to the server. There, with the Statistics software R the data is analyzed. The return values are plotted and displayed. <html> <l...) |
|||
(95 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | This litte application sends the coordinates of the points to the server. There, | + | <h1>Normal Location and Scale</h1> |
− | < | + | This litte application sends the y-coordinates of the points which are normal distributed (pseudo-)random numbers to the server.<br /> |
− | < | + | There, location and scale of the sample are estimated using the [http://www.r-project.org Statistics software R].<br /> |
− | < | + | The return values are plotted and displayed.<br /><br /> |
− | <script type="text/javascript" src="http://jsxgraph.uni-bayreuth.de/distrib/ | + | <b>The computed estimates are:</b><br /> |
− | + | * mean, standard deviation: red (non-robust!)<br /> | |
− | < | + | * median and MAD: black (most-robust!)<br /> |
− | < | + | * radius-minimax estimator: green (optimally robust; cf. Rieder et al. (2008))<br /><br /> |
− | brd = JXG.JSXGraph.initBoard('jxgbox', { | + | By changing the y-position of the four movable points you should recognize the instability (non-robustness) of mean and standard deviation in contrast to the robust estimates; e.g., move one of the four movable points to the top of the plot.<br /><br /> |
− | + | ===Online results:=== | |
− | + | <html><script type="text/javascript" src="http://jsxgraph.uni-bayreuth.de/distrib/prototype.js"></script></html> | |
− | + | <pre id='output'>Statistics:<br></pre> | |
− | + | <jsxgraph width="700" height="400"> | |
− | + | brd = JXG.JSXGraph.initBoard('jxgbox', {boundingbox: [-0.15, 60, 11.15, -20],axis:true}); | |
− | brd. | + | brd.suspendUpdate(); |
− | + | var graph1,graph2,graph3,graph4,graph5,graph6,graph7,graph8,graph9; | |
− | |||
− | var graph1,graph2,graph3,graph4,graph5; | ||
var x = []; | var x = []; | ||
var y = []; | var y = []; | ||
var p = []; | var p = []; | ||
− | for (var i=0;i< | + | var r1,r2,rad,phi,z1,z2; |
+ | for (var i=0;i<6;i++) { | ||
x[i] = i; | x[i] = i; | ||
− | + | // Box-Muller-Method for standard normal random numbers | |
− | p[i] = brd.createElement('point', [x[i],y[i]],{name:' ',fixed:true, | + | r1 = Math.random(); |
+ | r2 = Math.random(); | ||
+ | rad = Math.sqrt(-2*Math.log(1-r1)); | ||
+ | phi = 2*Math.PI*r2; | ||
+ | z1 = rad*Math.cos(phi); | ||
+ | z2 = rad*Math.sin(phi); | ||
+ | if(i < 5){ | ||
+ | y[i] = 10+z1*3; | ||
+ | y[6+i] = 10+z2*3; | ||
+ | x[6+i] = 6+i; | ||
+ | p[i] = brd.createElement('point', [x[i],y[i]],{name:' ',fixed:true,size:2,face:'[]'}); | ||
+ | p[6+i] = brd.createElement('point', [x[6+i],y[6+i]],{name:' ',fixed:true,size:2,face:'[]'}); | ||
+ | }else{ | ||
+ | y[i] = 10+z1*3; | ||
+ | p[i] = brd.createElement('point', [x[i],y[i]],{name:' ',fixed:true,size:2,face:'[]'}); | ||
+ | } | ||
} | } | ||
− | |||
var hlow = []; | var hlow = []; | ||
var hup = []; | var hup = []; | ||
Line 48: | Line 61: | ||
brd.removeObject(p[9]); | brd.removeObject(p[9]); | ||
− | p[0] = brd.createElement('glider', [x[0],y[0],l[0]],{name:' ', | + | p[0] = brd.createElement('glider', [x[0],y[0],l[0]],{name:' ',size:4,face:'o'}); |
− | p[10] = brd.createElement('glider', [x[10],y[10],l[1]],{name:' ', | + | p[10] = brd.createElement('glider', [x[10],y[10],l[1]],{name:' ',size:4,face:'o'}); |
− | p[8] = brd.createElement('glider', [x[8],y[8],l[2]],{name:' ', | + | p[8] = brd.createElement('glider', [x[8],y[8],l[2]],{name:' ',size:4,face:'o'}); |
− | p[9] = brd.createElement('glider', [x[9],y[9],l[3]],{name:' ', | + | p[9] = brd.createElement('glider', [x[9],y[9],l[3]],{name:' ',size:4,face:'o'}); |
− | + | brd.unsuspendUpdate(); | |
− | |||
doIt(); | doIt(); | ||
Line 64: | Line 76: | ||
t += p[i].Y() + ';'; | t += p[i].Y() + ';'; | ||
} | } | ||
− | new Ajax.Request('rserv.php', { | + | new Ajax.Request('/~alfred/jsxgraph/examples/rserv.php', { |
method:'post', | method:'post', | ||
parameters:'input='+escape(t), | parameters:'input='+escape(t), | ||
Line 77: | Line 89: | ||
var med = a[2]*1.0; | var med = a[2]*1.0; | ||
var mad = a[3]*1.0; | var mad = a[3]*1.0; | ||
− | var | + | var est1 = a[4]*1.0; |
− | + | var est2 = a[5]*1.0; | |
− | var | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
if (!graph2) { | if (!graph2) { | ||
graph2 = brd.createElement('curve', [[x[0],x[x.length-1]],[m,m]], {strokecolor:'red'}); | graph2 = brd.createElement('curve', [[x[0],x[x.length-1]],[m,m]], {strokecolor:'red'}); | ||
graph3 = brd.createElement('curve', [[x[0],x[x.length-1]],[m+sd,m+sd]], {strokecolor:'red',dash:2}); | graph3 = brd.createElement('curve', [[x[0],x[x.length-1]],[m+sd,m+sd]], {strokecolor:'red',dash:2}); | ||
graph4 = brd.createElement('curve', [[x[0],x[x.length-1]],[m-sd,m-sd]], {strokecolor:'red',dash:2}); | graph4 = brd.createElement('curve', [[x[0],x[x.length-1]],[m-sd,m-sd]], {strokecolor:'red',dash:2}); | ||
− | graph5 = brd.createElement('curve', [[x[0],x[x.length-1]],[med,med]], {strokecolor:' | + | graph5 = brd.createElement('curve', [[x[0],x[x.length-1]],[med,med]], {strokecolor:'black'}); |
− | graph1 = brd.createElement('curve', [[x[0],x[x.length-1]],[med-mad,med-mad]], {strokecolor:' | + | graph1 = brd.createElement('curve', [[x[0],x[x.length-1]],[med-mad,med-mad]], {strokecolor:'black',dash:3}); |
− | graph6 = brd.createElement('curve', [[x[0],x[x.length-1]],[med+mad,med+mad]], {strokecolor:' | + | graph6 = brd.createElement('curve', [[x[0],x[x.length-1]],[med+mad,med+mad]], {strokecolor:'black',dash:3}); |
+ | graph8 = brd.createElement('curve', [[x[0],x[x.length-1]],[est1,est1]], {strokecolor:'green'}); | ||
+ | graph7 = brd.createElement('curve', [[x[0],x[x.length-1]],[est1-est2,est1-est2]], {strokecolor:'green',dash:4}); | ||
+ | graph9 = brd.createElement('curve', [[x[0],x[x.length-1]],[est1+est2,est1+est2]], {strokecolor:'green',dash:4}); | ||
} else { | } else { | ||
graph2.dataY = [m,m]; | graph2.dataY = [m,m]; | ||
Line 199: | Line 109: | ||
graph1.dataY = [med-mad,med-mad]; | graph1.dataY = [med-mad,med-mad]; | ||
graph6.dataY = [med+mad,med+mad]; | graph6.dataY = [med+mad,med+mad]; | ||
+ | graph8.dataY = [est1,est1]; | ||
+ | graph7.dataY = [est1-est2,est1-est2]; | ||
+ | graph9.dataY = [est1+est2,est1+est2]; | ||
} | } | ||
− | + | document.getElementById('output').innerHTML = '<b><font size="+1">Normal location and scale:</font></b><br /><br />'+ | |
− | 'Mean | + | '<b>Estimates for location (true value = 10):</b><br />' + |
− | ' | + | 'Mean = ' + Math.round(m,2) + '<br />' + |
− | ' | + | 'Median = ' + Math.round(med,2) + '<br />' + |
− | ' | + | 'Radius-minimax estimator = ' + Math.round(est1,2) + '<br /><br />' + |
− | ' | + | '<b>Estimates for scale (true value = 3):</b><br />' + |
− | ' | + | 'Standard deviation = ' + Math.round(sd,2) + '<br />' + |
+ | 'MAD = ' + Math.round(mad,2) + '<br />' + | ||
+ | 'Radius-minimax estimator = ' + Math.round(est2,2) + '<br />'; | ||
brd.update(); | brd.update(); | ||
}; | }; | ||
}}); | }}); | ||
} | } | ||
− | + | brd.addHook(doIt, 'mouseup'); | |
− | + | </jsxgraph> | |
− | |||
− | |||
− | |||
− | |||
− | + | === The underlying source code === | |
− | + | [[The underlying JavaScript and PHP code]] | |
− | |||
− | |||
− | + | The R script can be [http://jsxgraph.uni-bayreuth.de/~alfred/jsxgraph/branches/0.70/examples/LokSkala.R downloaded here]. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | === References === | |
− | + | * ''The Costs of not Knowing the Radius'', Helmut Rieder, Matthias Kohl and Peter Ruckdeschel, Statistical Methods and Application 2008 Feb; 17(1): p.13-40; cf. also [http://www.stamats.de/RRlong.pdf] for an extended version. | |
+ | * ''Robust Asymptotic Statistics'', Helmut Rieder, Springer, 1994. | ||
+ | * ''Numerical Contributions to the Asymptotic Theory of Robustness'', Matthias Kohl, PhD-Thesis, University of Bayreuth, 2005; cf. also [http://www.stamats.de/ThesisMKohl.pdf]. | ||
− | === | + | === External links === |
− | + | * [http://www.r-project.org The R Project for statistical computing.] | |
− | + | * [https://r-forge.r-project.org/projects/robast/ RobASt project on R-Forge] | |
− | + | * [http://en.wikipedia.org/wiki/Robust_statistics Wikipedia on Robust Statistics] | |
− | |||
− | |||
− | |||
− | |||
[[Category:Examples]] | [[Category:Examples]] | ||
+ | [[Category:Statistics]] |
Latest revision as of 12:35, 21 February 2013
Contents
Normal Location and Scale
This litte application sends the y-coordinates of the points which are normal distributed (pseudo-)random numbers to the server.
There, location and scale of the sample are estimated using the Statistics software R.
The return values are plotted and displayed.
The computed estimates are:
- mean, standard deviation: red (non-robust!)
- median and MAD: black (most-robust!)
- radius-minimax estimator: green (optimally robust; cf. Rieder et al. (2008))
By changing the y-position of the four movable points you should recognize the instability (non-robustness) of mean and standard deviation in contrast to the robust estimates; e.g., move one of the four movable points to the top of the plot.
Online results:
Statistics:<br>
The underlying source code
The underlying JavaScript and PHP code
The R script can be downloaded here.
References
- The Costs of not Knowing the Radius, Helmut Rieder, Matthias Kohl and Peter Ruckdeschel, Statistical Methods and Application 2008 Feb; 17(1): p.13-40; cf. also [1] for an extended version.
- Robust Asymptotic Statistics, Helmut Rieder, Springer, 1994.
- Numerical Contributions to the Asymptotic Theory of Robustness, Matthias Kohl, PhD-Thesis, University of Bayreuth, 2005; cf. also [2].