This list is closed, nobody may subscribe to it.
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(13) |
Nov
(40) |
Dec
(2) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
|
Feb
(17) |
Mar
(25) |
Apr
(144) |
May
(18) |
Jun
|
Jul
(1) |
Aug
|
Sep
(130) |
Oct
(134) |
Nov
(72) |
Dec
(14) |
2006 |
Jan
|
Feb
(17) |
Mar
(90) |
Apr
(169) |
May
(21) |
Jun
(16) |
Jul
(1) |
Aug
(16) |
Sep
(125) |
Oct
(131) |
Nov
(64) |
Dec
(47) |
2007 |
Jan
(249) |
Feb
(247) |
Mar
(254) |
Apr
(86) |
May
(64) |
Jun
(10) |
Jul
(4) |
Aug
(17) |
Sep
(58) |
Oct
(144) |
Nov
(124) |
Dec
(13) |
2008 |
Jan
(58) |
Feb
|
Mar
(5) |
Apr
(19) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(24) |
Dec
|
2009 |
Jan
(1) |
Feb
(10) |
Mar
(29) |
Apr
(14) |
May
(62) |
Jun
(48) |
Jul
(27) |
Aug
(43) |
Sep
(44) |
Oct
(34) |
Nov
(10) |
Dec
(10) |
2010 |
Jan
(1) |
Feb
(26) |
Mar
(53) |
Apr
(41) |
May
(19) |
Jun
(52) |
Jul
(36) |
Aug
(24) |
Sep
(114) |
Oct
(73) |
Nov
(48) |
Dec
(139) |
2011 |
Jan
(54) |
Feb
(48) |
Mar
(45) |
Apr
(32) |
May
(121) |
Jun
(46) |
Jul
(3) |
Aug
(19) |
Sep
(146) |
Oct
(142) |
Nov
(48) |
Dec
(77) |
2012 |
Jan
(17) |
Feb
(5) |
Mar
(39) |
Apr
(31) |
May
(37) |
Jun
(7) |
Jul
|
Aug
(23) |
Sep
(40) |
Oct
(68) |
Nov
(68) |
Dec
(13) |
2013 |
Jan
(32) |
Feb
(47) |
Mar
(86) |
Apr
(82) |
May
(23) |
Jun
(1) |
Jul
(3) |
Aug
(1) |
Sep
|
Oct
(4) |
Nov
(3) |
Dec
(3) |
2014 |
Jan
|
Feb
|
Mar
(10) |
Apr
(8) |
May
(4) |
Jun
(1) |
Jul
|
Aug
(2) |
Sep
(65) |
Oct
(119) |
Nov
(82) |
Dec
(84) |
2015 |
Jan
(94) |
Feb
(46) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(3) |
2016 |
Jan
(4) |
Feb
(4) |
Mar
(2) |
Apr
(1) |
May
(2) |
Jun
|
Jul
(3) |
Aug
(1) |
Sep
|
Oct
|
Nov
(1) |
Dec
|
From: Thomas F. <tho...@ru...> - 2015-01-22 09:30:25
|
Git commit fb45c079fb25fad703e1e8f689c883a2e526e183 by Thomas Friedrichsmeier. Committed on 22/01/2015 at 09:29. Pushed by tfry into branch 'work/distributions'. Assume UTF-8 encoding for plugin .js files M +1 -0 ChangeLog M +5 -0 doc/rkwardplugins/index.docbook M +3 -3 rkward/scriptbackends/qtscriptbackend.cpp M +2 -2 rkward/scriptbackends/rkcomponentscripting.cpp http://commits.kde.org/rkward/fb45c079fb25fad703e1e8f689c883a2e526e183 diff --git a/ChangeLog b/ChangeLog index 5e5ecfb..bf56c95 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,4 @@ +- Assume plugin .js files to be in utf-8 encoding; this allows using non-ascii characters in the generated code - <matrix> element gains options min_rows and min_columns, and the details of fixed_width="true" have been improved - Fixed: <valueslot>s were quirky with respect to showing as invalid - Fix a hang-on-exit issue diff --git a/doc/rkwardplugins/index.docbook b/doc/rkwardplugins/index.docbook index 5d686c7..371280e 100644 --- a/doc/rkwardplugins/index.docbook +++ b/doc/rkwardplugins/index.docbook @@ -535,6 +535,11 @@ This is a guide to writing plugins for &rkward;. After reading this chapter, have a look at the <link linkend="rkwarddev"><application>rkwarddev</application> package</link> as well. It provides some &r; functions to create JavaScript code commonly used in &rkward;. It can also autodetect variables used in a plugin XML file and create basic JavaScript code from that for you to start with. </para> </tip> + <note> + <para> + Plugin .js files are assumed to be UTF-8 encoded. Be sure to check you editor's encoding, if using any non-ascii characters. + </para> + </note> <para> For the two variable t-test, the <filename>code.js</filename> file looks as follows (with comments in between): </para> diff --git a/rkward/scriptbackends/qtscriptbackend.cpp b/rkward/scriptbackends/qtscriptbackend.cpp index d144b48..beac9fe 100644 --- a/rkward/scriptbackends/qtscriptbackend.cpp +++ b/rkward/scriptbackends/qtscriptbackend.cpp @@ -2,7 +2,7 @@ qtscriptbackend - description ------------------- begin : Mon Sep 28 2009 - copyright : (C) 2009, 2010, 2012, 2014 by Thomas Friedrichsmeier + copyright : (C) 2009, 2010, 2012, 2014, 2015 by Thomas Friedrichsmeier email : tf...@us... ***************************************************************************/ @@ -265,7 +265,7 @@ bool QtScriptBackendThread::includeFile (const QString &filename) { // evaluate in global context engine.currentContext ()->setActivationObject (engine.globalObject ()); - QScriptValue result = engine.evaluate (file.readAll(), _filename); + QScriptValue result = engine.evaluate (QString::fromUtf8 (file.readAll ()), _filename); if (scriptError ()) return false; @@ -347,7 +347,7 @@ namespace RKPrecompiledQtScripts { if (!file.open (QIODevice::ReadOnly | QIODevice::Text)) { return false; } - compiled_includes.insert (scriptfile, QScriptProgram (file.readAll (), scriptfile)); + compiled_includes.insert (scriptfile, QScriptProgram (QString::fromUtf8 (file.readAll ()), scriptfile)); file.close (); } else { RK_DEBUG (PHP, DL_DEBUG, "Script file %s is already compiled", qPrintable (scriptfile)); diff --git a/rkward/scriptbackends/rkcomponentscripting.cpp b/rkward/scriptbackends/rkcomponentscripting.cpp index b366788..456aa42 100644 --- a/rkward/scriptbackends/rkcomponentscripting.cpp +++ b/rkward/scriptbackends/rkcomponentscripting.cpp @@ -2,7 +2,7 @@ rkcomponentscripting - description ------------------- begin : Thu Jun 17 2010 - copyright : (C) 2010 by Thomas Friedrichsmeier + copyright : (C) 2010, 2015 by Thomas Friedrichsmeier email : tf...@us... ***************************************************************************/ @@ -103,7 +103,7 @@ void RKComponentScriptingProxy::include (const QString& filename) { return; } - evaluate (file.readAll()); + evaluate (QString::fromUtf8 (file.readAll())); handleScriptError (_filename); } |
From: Thomas F. <tho...@ru...> - 2015-01-20 19:41:33
|
Git commit 21760aafec8e3a4da3b7ac63e244603e5cda3e77 by Thomas Friedrichsmeier. Committed on 20/01/2015 at 19:40. Pushed by tfry into branch 'work/distributions'. Continued work on refactoring distributions calculator plugins. Focusing on binomial, for now. M +2 -4 rkward/plugins/distributions.pluginmap A +22 -0 rkward/plugins/distributions/binomial.js A +24 -0 rkward/plugins/distributions/binomial.rkh R +4 -3 rkward/plugins/distributions/binomial.xml [from: rkward/plugins/distributions/binomial_tail_probabilities.xml - 070% similarity] D +0 -16 rkward/plugins/distributions/binomial_quantiles.js D +0 -14 rkward/plugins/distributions/binomial_quantiles.xml D +0 -14 rkward/plugins/distributions/binomial_tail_probabilities.js A +38 -0 rkward/plugins/distributions/dist_common.js A +11 -0 rkward/plugins/distributions/dist_help_snippets.xml M +0 -7 rkward/plugins/distributions/dist_snippets.xml http://commits.kde.org/rkward/21760aafec8e3a4da3b7ac63e244603e5cda3e77 diff --git a/rkward/plugins/distributions.pluginmap b/rkward/plugins/distributions.pluginmap index 2ac743b..98cdb1c 100644 --- a/rkward/plugins/distributions.pluginmap +++ b/rkward/plugins/distributions.pluginmap @@ -31,8 +31,7 @@ <component type="standard" id="beta_probabilities" file="beta_probabilities.xml" label="Beta probabilities" /> <component type="standard" id="plot_beta_distribution" file="plot_beta_distribution.xml" label="Plot Beta distribution" /> - <component type="standard" id="binomial_quantiles" file="binomial_quantiles.xml" label="Binomial quantiles" /> - <component type="standard" id="binomial_tail_probabilities" file="binomial_tail_probabilities.xml" label="Binomial tail probabilities" /> + <component type="standard" id="binomial_calculator" file="binomial.xml" label="Binomial probabilities, quantiles, densities" /> <component type="standard" id="plot_binomial_distribution" file="plot_binomial_distribution.xml" label="Plot binomial distribution" /> <component type="standard" id="cauchy_quantiles" file="cauchy_quantiles.xml" label="Cauchy quantiles" /> @@ -224,8 +223,7 @@ <menu id="univariate_discrete_distributions" label="Univariate discrete distributions"> <menu id="binomial_distribution" label="Binomial"> - <entry component="binomial_quantiles" label="Binomial quantiles"/> - <entry component="binomial_tail_probabilities" label="Binomial tail probabilities"/> + <entry component="binomial_calculator" label="Binomial probabilities, quantiles, densities"/> <entry component="plot_binomial_clt" label="Binomial CLT"/> <entry component="plot_binomial_distribution" label="Plot binomial distribution"/> </menu> diff --git a/rkward/plugins/distributions/binomial.js b/rkward/plugins/distributions/binomial.js new file mode 100644 index 0000000..e210483 --- /dev/null +++ b/rkward/plugins/distributions/binomial.js @@ -0,0 +1,22 @@ +include ("dist_common.js"); + +function getDistSpecifics () { + var dist = new Object; + dist["params"] = "bla"; + dist["funstem"] = "binom"; + dist["header"] = new Header (i18n ("Binomial tail probability")); + return dist; +} + +/*function calculate () { + q = "c (" + getString ("q").replace (/[, ]+/g, ", ") + ")"; + + echo ('result <- (pbinom (q = ' + q + ', size = ' + getValue ("size") + ', prob = ' + getValue ("prob") + ', ' + getValue ("tail") + ', ' + getValue ("logp") + '))\n'); +} + +function printout () { + echo ('rk.header (, list ("Vector of quantiles", "' + q + '", "Binomial trials", "' + getValue ("size") + '", "Probability of success", "' + getValue ("prob") + '", "Tail", "' + getValue ("tail") + '", "Probabilities p are given as", "' + getValue ("logp") + '"));\n'); + echo ('rk.results (result, titles="Binomial tail probabilities")\n'); +} + +*/ \ No newline at end of file diff --git a/rkward/plugins/distributions/binomial.rkh b/rkward/plugins/distributions/binomial.rkh new file mode 100644 index 0000000..7afcc63 --- /dev/null +++ b/rkward/plugins/distributions/binomial.rkh @@ -0,0 +1,24 @@ +<!DOCTYPE rkhelp> +<document> + <summary> + Provides a calculator for probabilities, quantiles, and densities in the binonmial distribution. + + Note: For the binomial distribution, quantiles can be interpreted as number of successes in the given number of trials. + </summary> + <usage> + Select the desired mode of operation, then specify the values of interest. + </usage> + <snippets> + <include file="dist_help_snippets.xml"/> + </snippets> + <settings> + <insert snippet="dialog_settings"/> + <setting id="size">Number of binomial trials</setting> + <setting id="prob">Probability of success in each trial. Note that this setting is <b>not</b> affected by the "log probabilities" setting, i.e. always specify the plain probability, here.</setting> + </settings> + <related> + <ul> + <li><link href="rkward://rhelp/Binomial"/></li> + </ul> + </related> +</document> diff --git a/rkward/plugins/distributions/binomial_tail_probabilities.xml b/rkward/plugins/distributions/binomial.xml similarity index 70% rename from rkward/plugins/distributions/binomial_tail_probabilities.xml rename to rkward/plugins/distributions/binomial.xml index 79842c6..b964ee1 100644 --- a/rkward/plugins/distributions/binomial_tail_probabilities.xml +++ b/rkward/plugins/distributions/binomial.xml @@ -1,6 +1,7 @@ <!DOCTYPE rkplugin> <document> - <code file="binomial_tail_probabilities.js" /> + <code file="binomial.js" /> + <help file="binomial.rkh" /> <logic> <insert snippet="dialog_logic"/> </logic> @@ -9,10 +10,10 @@ <spinbox default_precision="2" type="integer" initial="1" id="size" min="1" label="Binomial trials"/> <spinbox default_precision="2" type="real" initial="0.5" id="prob" min="0" max="1" label="Probability of success"/> </snippet> - <snippet id="ui_note"><text>Note: For the binomial distribution, quantiles can be interpreted as number of successes.</text></snippet> + <snippet id="ui_note"><text>Note: For the binomial distribution, quantiles can be interpreted as number of successes in the given number of trials.</text></snippet> <include file="dist_snippets.xml"/> </snippets> - <dialog label="Binomial tail probability" > + <dialog label="Binomial probabilities, quantiles, densities" > <insert snippet="dialog_layout"/> </dialog> </document> diff --git a/rkward/plugins/distributions/binomial_quantiles.js b/rkward/plugins/distributions/binomial_quantiles.js deleted file mode 100644 index ae81961..0000000 --- a/rkward/plugins/distributions/binomial_quantiles.js +++ /dev/null @@ -1,16 +0,0 @@ -// globals -var p; - -function calculate () { - p = "c (" + getList ("p.0").join (", ") + ")"; - - echo ('result <- (qbinom (p = ' + p + ', size = ' + getValue ("size") + ', prob = ' + getValue ("prob") + ', ' + getValue ("lower") + ', ' + getValue ("logp") + '))\n'); -} - -function printout () { - //produce the output - - echo ('rk.header ("Binomial quantile", list ("Vector of quantiles probabilities", "' + p + '", "Binomial trials", "' + getValue ("size") + '", "Probability of success", "' + getValue ("prob") + '", "Tail", "' + getValue ("tail") + '", "Probabilities p are given as", "' + getValue ("logp") + '"));\n'); - echo ('rk.results (result, titles="Binomial quantiles")\n'); -} - diff --git a/rkward/plugins/distributions/binomial_quantiles.xml b/rkward/plugins/distributions/binomial_quantiles.xml deleted file mode 100644 index 44227b3..0000000 --- a/rkward/plugins/distributions/binomial_quantiles.xml +++ /dev/null @@ -1,14 +0,0 @@ -<!DOCTYPE rkplugin> -<document> - <code file="binomial_quantiles.js" /> - <snippets> - <snippet id="dist_options"> - <spinbox default_precision="2" type="integer" initial="1" id="size" min="1" label="Binomial trials"/> - <spinbox default_precision="2" type="real" initial="0.5" id="prob" min="0" max="1" label="Probability of success"/> - </snippet> - <include file="dist_snippets.xml"/> - </snippets> - <dialog label="Binomial quantiles" > - <insert snippet="quantiles_layout"/> - </dialog> -</document> diff --git a/rkward/plugins/distributions/binomial_tail_probabilities.js b/rkward/plugins/distributions/binomial_tail_probabilities.js deleted file mode 100644 index c5d6d5b..0000000 --- a/rkward/plugins/distributions/binomial_tail_probabilities.js +++ /dev/null @@ -1,14 +0,0 @@ -// globals -var q; - -function calculate () { - q = "c (" + getString ("q").replace (/[, ]+/g, ", ") + ")"; - - echo ('result <- (pbinom (q = ' + q + ', size = ' + getValue ("size") + ', prob = ' + getValue ("prob") + ', ' + getValue ("tail") + ', ' + getValue ("logp") + '))\n'); -} - -function printout () { - echo ('rk.header ("Binomial tail probability", list ("Vector of quantiles", "' + q + '", "Binomial trials", "' + getValue ("size") + '", "Probability of success", "' + getValue ("prob") + '", "Tail", "' + getValue ("tail") + '", "Probabilities p are given as", "' + getValue ("logp") + '"));\n'); - echo ('rk.results (result, titles="Binomial tail probabilities")\n'); -} - diff --git a/rkward/plugins/distributions/dist_common.js b/rkward/plugins/distributions/dist_common.js new file mode 100644 index 0000000..d92eb35 --- /dev/null +++ b/rkward/plugins/distributions/dist_common.js @@ -0,0 +1,38 @@ +var mode; +var values; +var logp; +var lowert; +var dist; + +function calculate () { + mode = getString ("mode"); + if (mode == "q") values = getList ("p.0"); + else values = getList ("q.0"); + if (values.length > 1) values = 'c (' + values.join (', ') + ')'; + + logp = getBoolean ("logp.state"); + var logparam = logp ? ', logp=TRUE' : ''; + lowert = getBoolean ("lower.state"); + var tailparam = lowert ? '' : ', lower.tail=FALSE'; + + dist = getDistSpecifics (); + + var plabel = logp ? i18n ('Log Probability') : i18n ('Probability'); + var qlabel = i18n ('Quantile'); + var dlabel = i18n ('Density'); + + echo ('result <- data.frame ('); + echo (mode == "q" ? plabel : qlabel); + echo ('=' + values + ', '); + if (mode == "d") echo (dlabel + '=d' + dist["funstem"] + ' (' + values + dist["params"] + logparam + ')'); // NOTE: param lower.tail is not applicable for density function + else if (mode == "p") echo (plabel + '=p' + dist["funstem"] + ' (' + values + dist["params"] + tailparam + logparam + ')'); + else if (mode == "q") echo (qlabel + '=q' + dist["funstem"] + ' (' + values + dist["params"] + tailparam + logparam + ')'); + echo (')\n'); +} + +function printout () { + header = dist["header"]; + header.add (i18nc ("Tail of distribution function: lower / upper", 'Tail'), lowert ? i18n ('Lower tail: P[X ≤ x]') : i18n ('Upper tail: P[X > x]')); + header.print (); + echo ('rk.print (result)\n'); +} diff --git a/rkward/plugins/distributions/dist_help_snippets.xml b/rkward/plugins/distributions/dist_help_snippets.xml new file mode 100644 index 0000000..a32c2e3 --- /dev/null +++ b/rkward/plugins/distributions/dist_help_snippets.xml @@ -0,0 +1,11 @@ +<document> + <snippet id="dialog_settings"> + <caption title="Generic settings"/> + <setting id="mode">Specify the quantitiy to be calculated (probabilites, densities, or quantiles), and the quantity given (probabilities or quantiles)</setting> + <setting id="q">When calculating densities or probabilites, specify one or more quantiles.</setting> + <setting id="p">When calculating quantiles, specify one or more probabilities (optionally logarithmic; see below).</setting> + <setting id="logp">When calculating probabilities, return these as log (p). When specifying probabilites, these are supplied as log (p).</setting> + <setting id="lower">If checked (the default) probabilities are P[X ≤ x]. Otherwise (upper tail) probabilities are P[X > x]</setting> + <caption title="Distribution specific settings"/> + </snippet> +</document> diff --git a/rkward/plugins/distributions/dist_snippets.xml b/rkward/plugins/distributions/dist_snippets.xml index c1f4f2e..c325d17 100644 --- a/rkward/plugins/distributions/dist_snippets.xml +++ b/rkward/plugins/distributions/dist_snippets.xml @@ -34,11 +34,4 @@ </row> <insert snippet="ui_note"/> </snippet> - <snippet id="dialog_settings"> - <setting id="mode">Specify the quantitiy to be calculated (probabilites, densities, or quantiles), and the quantity given (probabilities or quantiles)</setting> - <setting id="q">When calculating densities or probabilites, specify one or more quantiles.</setting> - <setting id="p">When calculating quantiles, specify one or more probabilities (optionally logarithmic; see below).</setting> - <setting id="logp">When calculating probabilities, return these as log (p). When specifying probabilites, these are supplied as log (p).</setting> - <setting id="lower">If checked (the default) probabilities are given are P[X ≤ x]. Otherwise (upper tail) probabilities are P[X > x]</setting> - </snippet> </document> |
From: Thomas F. <tho...@ru...> - 2015-01-20 15:10:48
|
Git commit c3bf1e971b6ad293381a1afc23447645863fb52f by Thomas Friedrichsmeier. Committed on 20/01/2015 at 15:05. Pushed by tfry into branch 'master'. Adjust rkward-devel mailing list address. M +1 -1 doc/rkward/index.docbook M +1 -1 doc/rkward/man-rkward.1.docbook M +1 -1 rkward/dialogs/rkerrordialog.cpp M +2 -2 rkward/main.cpp M +1 -1 rkward/plugins/pluginmap_meta.inc M +1 -1 rkward/plugins/rkwarddev_scripts/subset_dataframe.R M +3 -3 rkward/rbackend/rpackages/rkward/DESCRIPTION M +1 -1 rkward/rbackend/rpackages/rkward/man/rk.call.plugin.Rd M +1 -1 rkward/rbackend/rpackages/rkward/man/rk.demo.Rd M +1 -1 rkward/rbackend/rpackages/rkward/man/rk.edit.Rd M +1 -1 rkward/rbackend/rpackages/rkward/man/rk.get.tempfile.name.Rd M +1 -1 rkward/rbackend/rpackages/rkward/man/rk.graph.on.Rd M +1 -1 rkward/rbackend/rpackages/rkward/man/rk.label.Rd M +1 -1 rkward/rbackend/rpackages/rkward/man/rk.list.plugins.Rd M +1 -1 rkward/rbackend/rpackages/rkward/man/rk.load.pluginmaps.Rd M +1 -1 rkward/rbackend/rpackages/rkward/man/rk.misc.Rd M +1 -1 rkward/rbackend/rpackages/rkward/man/rk.old.packages.Rd M +1 -1 rkward/rbackend/rpackages/rkward/man/rk.printer.device.Rd M +1 -1 rkward/rbackend/rpackages/rkward/man/rk.record.plot.Rd M +1 -1 rkward/rbackend/rpackages/rkward/man/rk.replace.function.Rd M +1 -1 rkward/rbackend/rpackages/rkward/man/rk.results.Rd M +1 -1 rkward/rbackend/rpackages/rkward/man/rk.sessionInfo.Rd M +1 -1 rkward/rbackend/rpackages/rkward/man/rk.show.messages.Rd M +1 -1 rkward/rbackend/rpackages/rkward/man/rk.sync.Rd M +1 -1 rkward/rbackend/rpackages/rkward/man/rk.workplace.Rd M +1 -1 rkward/rbackend/rpackages/rkwardtests/R/rktest.makeplugintests.R http://commits.kde.org/rkward/c3bf1e971b6ad293381a1afc23447645863fb52f diff --git a/doc/rkward/index.docbook b/doc/rkward/index.docbook index b0f6913..0fee126 100644 --- a/doc/rkward/index.docbook +++ b/doc/rkward/index.docbook @@ -47,7 +47,7 @@ thanks ;-). <firstname>Thomas</firstname> <surname>Friedrichsmeier</surname> <affiliation> -<address><email>rkw...@li...</email></address> +<address><email>rkw...@kd...</email></address> </affiliation> </author> </authorgroup> diff --git a/doc/rkward/man-rkward.1.docbook b/doc/rkward/man-rkward.1.docbook index e0f2a05..eb9ac43 100644 --- a/doc/rkward/man-rkward.1.docbook +++ b/doc/rkward/man-rkward.1.docbook @@ -13,7 +13,7 @@ <surname>Friedrichsmeier</surname> <contrib>RKWard man page.</contrib> <affiliation> -<address><email>rkw...@li...</email></address> +<address><email>rkw...@kd...</email></address> </affiliation> </author> <date>2014-11-16</date> diff --git a/rkward/dialogs/rkerrordialog.cpp b/rkward/dialogs/rkerrordialog.cpp index d6ddb7b..5fa092f 100644 --- a/rkward/dialogs/rkerrordialog.cpp +++ b/rkward/dialogs/rkerrordialog.cpp @@ -103,7 +103,7 @@ void RKErrorDialog::reportBug (QWidget* parent_widget, const QString& message_in dialog->setMainWidget (vbox); QLabel *label = new QLabel (i18n ("<p><b>Where should I report bugs or wishes?</b></p><p>Please submit your bug reports or wishes at <a href=\"%1\">%1</a> or send email to <a href=\"mailto:%2\">%2</a>.</p>" "<p><b>What information should I provide?</b></p><p>Please copy the information shown below, and fill in the details to the questions.</p>" - , QString ("http://p.sf.net/rkward/bugs"), QString ("rkw...@li...")), vbox); + , QString ("http://p.sf.net/rkward/bugs"), QString ("rkw...@kd...")), vbox); label->setWordWrap (true); label->setOpenExternalLinks (true); QTextEdit *details = new QTextEdit (vbox); diff --git a/rkward/main.cpp b/rkward/main.cpp index a2522c1..d2e65a4 100644 --- a/rkward/main.cpp +++ b/rkward/main.cpp @@ -129,7 +129,7 @@ int main(int argc, char *argv[]) { options.add ("reuse", ki18n ("Reuse a running RKWard instance (if available). If a running instance is reused, only the file arguments will be interpreted, all other options will be ignored."), 0); options.add ("+[Files]", ki18n ("File or files to open, typically a workspace, or an R script file. When loading several things, you should specify the workspace, first."), 0); - KAboutData aboutData("rkward", QByteArray (), ki18n ("RKWard"), RKWARD_VERSION, ki18n ("Frontend to the R statistics language"), KAboutData::License_GPL, ki18n ("(c) 2002, 2004 - 2014"), KLocalizedString (), "http://rkward.kde.org", "rkw...@li..."); + KAboutData aboutData("rkward", QByteArray (), ki18n ("RKWard"), RKWARD_VERSION, ki18n ("Frontend to the R statistics language"), KAboutData::License_GPL, ki18n ("(c) 2002, 2004 - 2014"), KLocalizedString (), "http://rkward.kde.org", "rkw...@kd..."); aboutData.addAuthor (ki18n ("Thomas Friedrichsmeier"), ki18n ("Project leader / main developer")); aboutData.addAuthor (ki18n ("Pierre Ecochard"), ki18n ("C++ developer between 2004 and 2007")); aboutData.addAuthor (ki18n ("Prasenjit Kapat"), ki18n ("Many plugins, suggestions, plot history feature")); @@ -148,7 +148,7 @@ int main(int argc, char *argv[]) { aboutData.addCredit (ki18n ("Jannis Vajen"), ki18n ("German Translation, bug reports")); aboutData.addCredit (ki18n ("Roland Vollgraf"), ki18n ("Some patches")); aboutData.addCredit (ki18n ("Roy Qu"), ki18n ("patches and helpful comments")); - aboutData.addCredit (ki18n ("Many more people on rkw...@li..."), ki18n ("Sorry, if we forgot to list you. Please contact us to get added")); + aboutData.addCredit (ki18n ("Many more people on rkw...@kd..."), ki18n ("Sorry, if we forgot to list you. Please contact us to get added")); // before initializing the commandline args, remove the ".bin" from "rkward.bin". // This is so it prints "Usage rkward..." instead of "Usage rkward.bin...", etc. diff --git a/rkward/plugins/pluginmap_meta.inc b/rkward/plugins/pluginmap_meta.inc index eb46123..98537f8 100644 --- a/rkward/plugins/pluginmap_meta.inc +++ b/rkward/plugins/pluginmap_meta.inc @@ -3,7 +3,7 @@ <snippet id="author_rkward_team"> <author name="RKWard Team" - email="rkw...@li..." + email="rkw...@kd..." url="http://rkward.kde.org" /> </snippet> <snippet id="rkward_version_guard"> diff --git a/rkward/plugins/rkwarddev_scripts/subset_dataframe.R b/rkward/plugins/rkwarddev_scripts/subset_dataframe.R index a96a2c8..095bc6b 100644 --- a/rkward/plugins/rkwarddev_scripts/subset_dataframe.R +++ b/rkward/plugins/rkwarddev_scripts/subset_dataframe.R @@ -29,7 +29,7 @@ about.info <- rk.XML.about( name="rk.subset", author=c( person(given="RKWard", family="Team", - email="rkw...@li...", role=c("cre")), + email="rkw...@kd...", role=c("cre")), person(given="Meik", family="Michalke", email="mei...@hh...", role=c("aut")), person(given="Thomas", family="Friedrichsmeier", diff --git a/rkward/rbackend/rpackages/rkward/DESCRIPTION b/rkward/rbackend/rpackages/rkward/DESCRIPTION index 1570130..640f941 100644 --- a/rkward/rbackend/rpackages/rkward/DESCRIPTION +++ b/rkward/rbackend/rpackages/rkward/DESCRIPTION @@ -2,8 +2,8 @@ Package: rkward Type: Package Title: Provides functions related to the RKWard GUI Author: Thomas Friedrichsmeier <tho...@ru...> and - the RKWard Team <rkw...@li...> -Maintainer: RKWard-devel mailing list <rkw...@li...> + the RKWard Team <rkw...@kd...> +Maintainer: RKWard-devel mailing list <rkw...@kd...> Depends: R (>= 2.9.0),methods Description: This package contains functions which are useful in combination @@ -17,7 +17,7 @@ URL: http://rkward.kde.org Authors@R: c(person(given="Thomas", family="Friedrichsmeier", email="tho...@ru...", role=c("aut")), person(given="RKWard-devel", family="mailing list", - email="rkw...@li...", role=c("cre","ctb"))) + email="rkw...@kd...", role=c("cre","ctb"))) Version: 0.6.3 Date: 2014-10-30 Collate: diff --git a/rkward/rbackend/rpackages/rkward/man/rk.call.plugin.Rd b/rkward/rbackend/rpackages/rkward/man/rk.call.plugin.Rd index 0cddcf2..114a33b 100644 --- a/rkward/rbackend/rpackages/rkward/man/rk.call.plugin.Rd +++ b/rkward/rbackend/rpackages/rkward/man/rk.call.plugin.Rd @@ -62,7 +62,7 @@ rk.call.plugin ("rkward::t_test_two_vars", }) } \author{ -Thomas Friedrichsmeier \email{rkw...@li...} +Thomas Friedrichsmeier \email{rkw...@kd...} } \seealso{ \code{\link{rk.results}}, \url{rkward://page/rkward_output} diff --git a/rkward/rbackend/rpackages/rkward/man/rk.demo.Rd b/rkward/rbackend/rpackages/rkward/man/rk.demo.Rd index 1e98e39..64e3f8c 100644 --- a/rkward/rbackend/rpackages/rkward/man/rk.demo.Rd +++ b/rkward/rbackend/rpackages/rkward/man/rk.demo.Rd @@ -26,7 +26,7 @@ the specification of a topic is mandatory. rk.demo("graphics") } \author{ -Thomas Friedrichsmeier \email{rkw...@li...} +Thomas Friedrichsmeier \email{rkw...@kd...} } \seealso{ \code{\link{rk.edit.files}}, \code{\link{rk.show.files}}, diff --git a/rkward/rbackend/rpackages/rkward/man/rk.edit.Rd b/rkward/rbackend/rpackages/rkward/man/rk.edit.Rd index 458cbfa..9290b8e 100644 --- a/rkward/rbackend/rpackages/rkward/man/rk.edit.Rd +++ b/rkward/rbackend/rpackages/rkward/man/rk.edit.Rd @@ -58,7 +58,7 @@ x <- data.frame (a=c(1:3), b=c(2:4)) rk.edit(x) } \author{ -Thomas Friedrichsmeier \email{rkw...@li...} +Thomas Friedrichsmeier \email{rkw...@kd...} } \seealso{ \code{\link{edit}}, \code{\link{file.edit}}, diff --git a/rkward/rbackend/rpackages/rkward/man/rk.get.tempfile.name.Rd b/rkward/rbackend/rpackages/rkward/man/rk.get.tempfile.name.Rd index ffd70e8..a9f4f31 100644 --- a/rkward/rbackend/rpackages/rkward/man/rk.get.tempfile.name.Rd +++ b/rkward/rbackend/rpackages/rkward/man/rk.get.tempfile.name.Rd @@ -79,7 +79,7 @@ rk.flush.output() rk.set.output.html.file(outfile) } \author{ -Thomas Friedrichsmeier \email{rkw...@li...} +Thomas Friedrichsmeier \email{rkw...@kd...} } \seealso{ \url{rkward://page/rkward_output}, \link{tempfile}, \link{file}, diff --git a/rkward/rbackend/rpackages/rkward/man/rk.graph.on.Rd b/rkward/rbackend/rpackages/rkward/man/rk.graph.on.Rd index 19bfb7a..ba01a0f 100644 --- a/rkward/rbackend/rpackages/rkward/man/rk.graph.on.Rd +++ b/rkward/rbackend/rpackages/rkward/man/rk.graph.on.Rd @@ -50,7 +50,7 @@ rk.graph.off () #dev.print (device = rk.graph.on) } \author{ -Thomas Friedrichsmeier \email{rkw...@li...} +Thomas Friedrichsmeier \email{rkw...@kd...} } \seealso{ \link{rk.results} \link{rk.print} \link{rk.get.output.html.file} \link{dev.off} \link{svg} \link{png} \link{jpg} diff --git a/rkward/rbackend/rpackages/rkward/man/rk.label.Rd b/rkward/rbackend/rpackages/rkward/man/rk.label.Rd index 06fb5db..5736904 100644 --- a/rkward/rbackend/rpackages/rkward/man/rk.label.Rd +++ b/rkward/rbackend/rpackages/rkward/man/rk.label.Rd @@ -85,7 +85,7 @@ rk.list.names (x, x$a, x$b) # "x" "x$a" "x$b" names (rk.list (x$a, x$b)) # "x$a (First column)" "x$b" } \author{ -Thomas Friedrichsmeier \email{rkw...@li...} +Thomas Friedrichsmeier \email{rkw...@kd...} } \keyword{utilities} diff --git a/rkward/rbackend/rpackages/rkward/man/rk.list.plugins.Rd b/rkward/rbackend/rpackages/rkward/man/rk.list.plugins.Rd index 363bd0b..1d80a04 100644 --- a/rkward/rbackend/rpackages/rkward/man/rk.list.plugins.Rd +++ b/rkward/rbackend/rpackages/rkward/man/rk.list.plugins.Rd @@ -49,7 +49,7 @@ rk.set.plugin.status ("rkward::t_test", visible=FALSE) ## END NOT RUN } \author{ -Thomas Friedrichsmeier \email{rkw...@li...} +Thomas Friedrichsmeier \email{rkw...@kd...} } \seealso{ \code{\link{rk.call.plugin}} for invoking a plugin, programatically diff --git a/rkward/rbackend/rpackages/rkward/man/rk.load.pluginmaps.Rd b/rkward/rbackend/rpackages/rkward/man/rk.load.pluginmaps.Rd index a2f00bf..1616673 100644 --- a/rkward/rbackend/rpackages/rkward/man/rk.load.pluginmaps.Rd +++ b/rkward/rbackend/rpackages/rkward/man/rk.load.pluginmaps.Rd @@ -36,7 +36,7 @@ rk.load.pluginmaps() ## END NOT RUN } \author{ -Thomas Friedrichsmeier \email{rkw...@li...} +Thomas Friedrichsmeier \email{rkw...@kd...} } \seealso{ \code{\link{rk.call.plugin}}, diff --git a/rkward/rbackend/rpackages/rkward/man/rk.misc.Rd b/rkward/rbackend/rpackages/rkward/man/rk.misc.Rd index 99aabad..4733764 100644 --- a/rkward/rbackend/rpackages/rkward/man/rk.misc.Rd +++ b/rkward/rbackend/rpackages/rkward/man/rk.misc.Rd @@ -52,7 +52,7 @@ rk.rename.in.container(ir, "Species", "Taxonomic.Group") str (ir) } \author{ -Thomas Friedrichsmeier \email{rkw...@li...} +Thomas Friedrichsmeier \email{rkw...@kd...} } \keyword{attribute} \keyword{misc} diff --git a/rkward/rbackend/rpackages/rkward/man/rk.old.packages.Rd b/rkward/rbackend/rpackages/rkward/man/rk.old.packages.Rd index 1ab0d2e..6dabd79 100644 --- a/rkward/rbackend/rpackages/rkward/man/rk.old.packages.Rd +++ b/rkward/rbackend/rpackages/rkward/man/rk.old.packages.Rd @@ -24,7 +24,7 @@ that the current version is higher up in the path, and not report package X as o rk.old.packages() } \author{ -Thomas Friedrichsmeier \email{rkw...@li...} +Thomas Friedrichsmeier \email{rkw...@kd...} } \keyword{attribute} \keyword{misc} diff --git a/rkward/rbackend/rpackages/rkward/man/rk.printer.device.Rd b/rkward/rbackend/rpackages/rkward/man/rk.printer.device.Rd index 6f71b34..ec6804c 100644 --- a/rkward/rbackend/rpackages/rkward/man/rk.printer.device.Rd +++ b/rkward/rbackend/rpackages/rkward/man/rk.printer.device.Rd @@ -26,7 +26,7 @@ plot (rnorm (10)) dev.print (rk.printer.device) } \author{ -Thomas Friedrichsmeier \email{rkw...@li...} +Thomas Friedrichsmeier \email{rkw...@kd...} } \seealso{ \code{\link{postscript}}, \code{\link{dev.print}}, diff --git a/rkward/rbackend/rpackages/rkward/man/rk.record.plot.Rd b/rkward/rbackend/rpackages/rkward/man/rk.record.plot.Rd index e165441..dc18fe9 100644 --- a/rkward/rbackend/rpackages/rkward/man/rk.record.plot.Rd +++ b/rkward/rbackend/rpackages/rkward/man/rk.record.plot.Rd @@ -77,7 +77,7 @@ rk.duplicate.device(devId = dev.cur()) \code{rk.duplicate.device} returns the value of a \code{dev.copy} call. } -\author{Prasenjit Kapat \email{rkw...@li...}} +\author{Prasenjit Kapat \email{rkw...@kd...}} \section{Warning}{ TODO TODO diff --git a/rkward/rbackend/rpackages/rkward/man/rk.replace.function.Rd b/rkward/rbackend/rpackages/rkward/man/rk.replace.function.Rd index 4b8a26c..a848feb 100644 --- a/rkward/rbackend/rpackages/rkward/man/rk.replace.function.Rd +++ b/rkward/rbackend/rpackages/rkward/man/rk.replace.function.Rd @@ -48,7 +48,7 @@ rk.replace.function ("history", as.environment ("package:utils"), ## End not run } \author{ -Thomas Friedrichsmeier \email{rkw...@li...} +Thomas Friedrichsmeier \email{rkw...@kd...} } \seealso{ \code{\link{assignInNamespace}}, \code{\link{debug}} diff --git a/rkward/rbackend/rpackages/rkward/man/rk.results.Rd b/rkward/rbackend/rpackages/rkward/man/rk.results.Rd index bff024b..0f2656e 100644 --- a/rkward/rbackend/rpackages/rkward/man/rk.results.Rd +++ b/rkward/rbackend/rpackages/rkward/man/rk.results.Rd @@ -113,7 +113,7 @@ rk.results (list ( }) } \author{ -Thomas Friedrichsmeier \email{rkw...@li...} +Thomas Friedrichsmeier \email{rkw...@kd...} } \seealso{ \code{\link{HTML}}, \code{\link{rk.get.output.html.file}}, diff --git a/rkward/rbackend/rpackages/rkward/man/rk.sessionInfo.Rd b/rkward/rbackend/rpackages/rkward/man/rk.sessionInfo.Rd index b9a696b..1b678ad 100644 --- a/rkward/rbackend/rpackages/rkward/man/rk.sessionInfo.Rd +++ b/rkward/rbackend/rpackages/rkward/man/rk.sessionInfo.Rd @@ -22,7 +22,7 @@ from the menu. Internally, this will call \code{rk.sessionInfo()}. rk.sessionInfo() } \author{ -Thomas Friedrichsmeier \email{rkw...@li...} +Thomas Friedrichsmeier \email{rkw...@kd...} } \seealso{ \code{\link{sessionInfo}} diff --git a/rkward/rbackend/rpackages/rkward/man/rk.show.messages.Rd b/rkward/rbackend/rpackages/rkward/man/rk.show.messages.Rd index 724c320..1077d88 100644 --- a/rkward/rbackend/rpackages/rkward/man/rk.show.messages.Rd +++ b/rkward/rbackend/rpackages/rkward/man/rk.show.messages.Rd @@ -81,7 +81,7 @@ rk.select.list (LETTERS, preselect = c("A", "E", "I", "O", "U"), multiple = TRUE, title = "vowels") } \author{ -Thomas Friedrichsmeier \email{rkw...@li...} +Thomas Friedrichsmeier \email{rkw...@kd...} } \seealso{ \code{\link{system}}, \code{\link{select.list}} diff --git a/rkward/rbackend/rpackages/rkward/man/rk.sync.Rd b/rkward/rbackend/rpackages/rkward/man/rk.sync.Rd index 5e1f6c2..a3dc5e7 100644 --- a/rkward/rbackend/rpackages/rkward/man/rk.sync.Rd +++ b/rkward/rbackend/rpackages/rkward/man/rk.sync.Rd @@ -34,7 +34,7 @@ environments (see examples). rk.sync (rkward::rk.record.plot) } \author{ -Thomas Friedrichsmeier \email{rkw...@li...} +Thomas Friedrichsmeier \email{rkw...@kd...} } \seealso{ \url{rkward://page/rkward_workspace_browser} diff --git a/rkward/rbackend/rpackages/rkward/man/rk.workplace.Rd b/rkward/rbackend/rpackages/rkward/man/rk.workplace.Rd index da10591..a9df90b 100644 --- a/rkward/rbackend/rpackages/rkward/man/rk.workplace.Rd +++ b/rkward/rbackend/rpackages/rkward/man/rk.workplace.Rd @@ -46,7 +46,7 @@ rk.restore.workplace () ## End not run } \author{ -Thomas Friedrichsmeier \email{rkw...@li...} +Thomas Friedrichsmeier \email{rkw...@kd...} } \seealso{ \url{rkward://page/rkward_for_r_users}, \link{rk.get.workspace.url} diff --git a/rkward/rbackend/rpackages/rkwardtests/R/rktest.makeplugintests.R b/rkward/rbackend/rpackages/rkwardtests/R/rktest.makeplugintests.R index 9aa93f2..a73ffb1 100644 --- a/rkward/rbackend/rpackages/rkwardtests/R/rktest.makeplugintests.R +++ b/rkward/rbackend/rpackages/rkwardtests/R/rktest.makeplugintests.R @@ -61,7 +61,7 @@ rktest.makeplugintests <- function(testsuites="testsuite.R", testroot=getwd(), o sink() - cat (paste ("\n\nThese output are saved in: ", paste (getwd(), outfile, sep=.Platform$file.sep), ".\nIf needed, send them to rkw...@li...\n", sep="")) + cat (paste ("\n\nThese output are saved in: ", paste (getwd(), outfile, sep=.Platform$file.sep), ".\nIf needed, send them to rkw...@kd...\n", sep="")) cat (paste("\nThe full test results have been saved to this temporary directory:\n", rktest.getTempDir(),"\n")) } \ No newline at end of file |
From: Thomas F. <tho...@ru...> - 2015-01-20 15:10:44
|
Git commit ef0e4bb13c615f4f86f35324e1267902a56c1b47 by Thomas Friedrichsmeier. Committed on 20/01/2015 at 15:09. Pushed by tfry into branch 'master'. Adjust more urls M +1 -1 macports/README.MacOSX M +1 -1 rkward/dialogs/rkerrordialog.cpp M +1 -1 rkward/pages/rkward_trouble_shooting.rkh M +2 -2 rkward/rbackend/rkrbackend.cpp M +1 -1 rkward/rkward.cpp M +1 -1 rkward/windows/rkwindowcatcher.cpp M +1 -1 windows_nsis/installer.nsi http://commits.kde.org/rkward/ef0e4bb13c615f4f86f35324e1267902a56c1b47 diff --git a/macports/README.MacOSX b/macports/README.MacOSX index 55aeb30..2b9ba23 100644 --- a/macports/README.MacOSX +++ b/macports/README.MacOSX @@ -96,4 +96,4 @@ Source code for all portions of this bundle should be available from the same so o For KDE, the main page is http://www.kde.org. Technical documentation is available from http://techbase.kde.org. Information specifically about the Mac port of KDE is at http://mac.kde.org. At the time of this writing, the recommended way to obtain and build sources for KDE on Mac OSX is using MacPorts (http://www.macports.org). o For R, the main project page is http://www.r-project.org. Current and historical sources are linked from that page. For up-to-date instructions on installing or compiling R on Mac OSX, refer to http://cran.r-project.org/bin/macosx/RMacOSX-FAQ.html. - o For RKWard, the official source releases are linked from http://p.sf.net/rkward/downloads. This page also contains links to up-to-date instructions on compiling on various systems, as well as instructions on retrieving the most recent development sources. + o For RKWard, the official source releases are linked from http://rkward.kde.org/downloads. This page also contains links to up-to-date instructions on compiling on various systems, as well as instructions on retrieving the most recent development sources. diff --git a/rkward/dialogs/rkerrordialog.cpp b/rkward/dialogs/rkerrordialog.cpp index 5fa092f..fda90bf 100644 --- a/rkward/dialogs/rkerrordialog.cpp +++ b/rkward/dialogs/rkerrordialog.cpp @@ -103,7 +103,7 @@ void RKErrorDialog::reportBug (QWidget* parent_widget, const QString& message_in dialog->setMainWidget (vbox); QLabel *label = new QLabel (i18n ("<p><b>Where should I report bugs or wishes?</b></p><p>Please submit your bug reports or wishes at <a href=\"%1\">%1</a> or send email to <a href=\"mailto:%2\">%2</a>.</p>" "<p><b>What information should I provide?</b></p><p>Please copy the information shown below, and fill in the details to the questions.</p>" - , QString ("http://p.sf.net/rkward/bugs"), QString ("rkw...@kd...")), vbox); + , QString ("http://rkward.kde.org/bugs"), QString ("rkw...@kd...")), vbox); label->setWordWrap (true); label->setOpenExternalLinks (true); QTextEdit *details = new QTextEdit (vbox); diff --git a/rkward/pages/rkward_trouble_shooting.rkh b/rkward/pages/rkward_trouble_shooting.rkh index f846ba3..33dc06c 100644 --- a/rkward/pages/rkward_trouble_shooting.rkh +++ b/rkward/pages/rkward_trouble_shooting.rkh @@ -2,7 +2,7 @@ <document> <title>Trouble Shooting</title> <summary> - RKWard is far from complete and certainly there are many issues that need to be fixed. However, some of the things you notice are not due to the nature of RKWard but R or something else. This section will try to cover some common issues. See also <link href="http://p.sf.net/rkward/faq">the online FAQ</link>. + RKWard is far from complete and certainly there are many issues that need to be fixed. However, some of the things you notice are not due to the nature of RKWard but R or something else. This section will try to cover some common issues. See also <link href="http://rkward.kde.org/faq">the online FAQ</link>. </summary> <section title="The "Analysis" menu is missing, or shows up as "(no label)"" shorttitle="Missing menu items" id="missing_menu_items"> This problem will often occur, when moving an RKWard installation to a different path, esp. on Windows and Mac. You may have to visit diff --git a/rkward/rbackend/rkrbackend.cpp b/rkward/rbackend/rkrbackend.cpp index 2656a04..d25bb97 100644 --- a/rkward/rbackend/rkrbackend.cpp +++ b/rkward/rbackend/rkrbackend.cpp @@ -1555,11 +1555,11 @@ void RKRBackend::initialize (const char *locale_dir) { QString error_messages; if (lib_load_fail) { error_messages.append (i18n ("</p>\t- The 'rkward' R-library either could not be loaded at all, or not in the correct version. This may lead to all sorts of errors, from single missing features to complete failure to function. The most likely cause is that the last installation did not place all files in the correct place. However, in some cases, left-overs from a previous installation that was not cleanly removed may be the cause.</p>\ - <p><b>You should quit RKWard, now, and fix your installation</b>. For help with that, see <a href=\"http://p.sf.net/rkward/compiling\">http://p.sf.net/rkward/compiling</a>.</p>\n")); + <p><b>You should quit RKWard, now, and fix your installation</b>. For help with that, see <a href=\"http://rkward.kde.org/compiling\">http://rkward.kde.org/compiling</a>.</p>\n")); } if (sink_fail) { error_messages.append (i18n ("<p>\t-There was a problem setting up the communication with R. Most likely this indicates a broken installation.</p>\ - <p><b>You should quit RKWard, now, and fix your installation</b>. For help with that, see <a href=\"http://p.sf.net/rkward/compiling\">http://p.sf.net/rkward/compiling</a>.</p></p>\n")); + <p><b>You should quit RKWard, now, and fix your installation</b>. For help with that, see <a href=\"http://rkward.kde.org/compiling\">http://rkward.kde.org/compiling</a>.</p></p>\n")); } RBackendRequest req (true, RBackendRequest::Started); diff --git a/rkward/rkward.cpp b/rkward/rkward.cpp index e62dff1..2810f22 100644 --- a/rkward/rkward.cpp +++ b/rkward/rkward.cpp @@ -194,7 +194,7 @@ void RKWardMainWindow::doPostInit () { // Check installation first QFile resource_ver (RKCommonFunctions::getRKWardDataDir () + "resource.ver"); if (!(resource_ver.open (QIODevice::ReadOnly) && (resource_ver.read (100).trimmed () == RKWARD_VERSION))) { - KMessageBox::error (this, i18n ("<p>RKWard either could not find its resource files at all, or only an old version of those files. The most likely cause is that the last installation failed to place the files in the correct place. This can lead to all sorts of problems, from single missing features to complete failure to function.</p><p><b>You should quit RKWard, now, and fix your installation</b>. For help with that, see <a href=\"http://p.sf.net/rkward/compiling\">http://p.sf.net/rkward/compiling</a>.</p>"), i18n ("Broken installation"), KMessageBox::Notify | KMessageBox::AllowLink); + KMessageBox::error (this, i18n ("<p>RKWard either could not find its resource files at all, or only an old version of those files. The most likely cause is that the last installation failed to place the files in the correct place. This can lead to all sorts of problems, from single missing features to complete failure to function.</p><p><b>You should quit RKWard, now, and fix your installation</b>. For help with that, see <a href=\"http://rkward.kde.org/compiling\">http://rkward.kde.org/compiling</a>.</p>"), i18n ("Broken installation"), KMessageBox::Notify | KMessageBox::AllowLink); } QVariantList open_urls = RKGlobals::startup_options.take ("initial_urls").toList (); diff --git a/rkward/windows/rkwindowcatcher.cpp b/rkward/windows/rkwindowcatcher.cpp index c79a52c..d0fa9e1 100644 --- a/rkward/windows/rkwindowcatcher.cpp +++ b/rkward/windows/rkwindowcatcher.cpp @@ -68,7 +68,7 @@ void RKWindowCatcher::stop (int new_cur_device) { #endif } else { #if defined Q_WS_MAC - KMessageBox::information (0, i18n ("You have tried to embed a new R graphics device window in RKWard. However, this is not currently supported in this build of RKWard on Mac OS X. See http://p.sf.net/rkward/mac for more information."), i18n ("Could not embed R X11 window"), "embed_x11_device_not_supported"); + KMessageBox::information (0, i18n ("You have tried to embed a new R graphics device window in RKWard. However, this is not currently supported in this build of RKWard on Mac OS X. See http://rkward.kde.org/mac for more information."), i18n ("Could not embed R X11 window"), "embed_x11_device_not_supported"); #else RKErrorDialog::reportableErrorMessage (0, i18n ("You have tried to embed a new R graphics device window in RKWard. However, either no window was created, or RKWard failed to detect the new window. If you think RKWard should have done better, consider reporting this as a bug. Alternatively, you may want to adjust Settings->Configure RKWard->Onscreen Graphics."), QString (), i18n ("Could not embed R X11 window"), "failure_to_detect_x11_device"); #endif diff --git a/windows_nsis/installer.nsi b/windows_nsis/installer.nsi index 02c66bb..baab9e6 100644 --- a/windows_nsis/installer.nsi +++ b/windows_nsis/installer.nsi @@ -155,7 +155,7 @@ Function WelcomeCreate ${NSD_CreateLabel} 0 0 100% 20u "Welcome to the RKWard on Windows installer." ${NSD_CreateLabel} 0 21u 100% 32u "RKWard on Windows is still young, and installation is a bit cumbersome, but we'll talk you through the needed steps.$\r$\nNote that you need to install R and KDE _before_ you can install RKWard.$\r$\nPlease DO read these instructions, first:" - !insertmacro MakeExternalLink 62u "READ ME: Installing RKWard on Windows" "http://p.sf.net/rkward/windows" + !insertmacro MakeExternalLink 62u "READ ME: Installing RKWard on Windows" "http://rkward.kde.org/windows" ${NSD_CreateLabel} 0 86u 100% 16u "These links to R and KDE, may also be helpful:" !insertmacro MakeExternalLink 102u "Download R installer" ${R_DOWNLOAD_URL} |
From: m.eik m. <mei...@un...> - 2015-01-20 14:11:02
|
Git commit e62cb8c66d6774fa80abceda8b7d7d498f51e132 by m.eik michalke. Committed on 20/01/2015 at 14:11. Pushed by meikm into branch 'master'. added min_rows and min_columns to rk.XML.matrix() M +2 -1 packages/rkwarddev/ChangeLog M +12 -4 packages/rkwarddev/R/rk.XML.matrix.R http://commits.kde.org/rkward/e62cb8c66d6774fa80abceda8b7d7d498f51e132 diff --git a/packages/rkwarddev/ChangeLog b/packages/rkwarddev/ChangeLog index c130f77..528129f 100644 --- a/packages/rkwarddev/ChangeLog +++ b/packages/rkwarddev/ChangeLog @@ -1,6 +1,6 @@ ChangeLog for package rkwarddev -changes in version 0.07-1 (2015-01-13) +changes in version 0.07-1 (2015-01-20) fixed: - rk.XML.optionset() does now allow to re-use objects defined in the same function call (i.e., refer to optioncolumns in the logic section) @@ -45,6 +45,7 @@ added: rk.XML.vars() to also accept "duplicates" - new argument "var" in rk.paste.JS() to define whether the JS keyword "var" should be used or omitted for rk.JS.var objects + - rk.XML.matrix() now also accepts the arguments "min_rows" and "min_columns" changed: - function i18n() was changed to be used in JavaScript generation only; this breaks code using the function introduced with 0.06-4, but that was to diff --git a/packages/rkwarddev/R/rk.XML.matrix.R b/packages/rkwarddev/R/rk.XML.matrix.R index 00d4c46..f5ee008 100644 --- a/packages/rkwarddev/R/rk.XML.matrix.R +++ b/packages/rkwarddev/R/rk.XML.matrix.R @@ -30,15 +30,17 @@ #' smallest representable value. #' @param max Maximum acceptable value (if \code{type} is "integer" or "real"). Defaults to the #' largest representable value. +#' @param min_rows Minimum number of rows, matrix will refuse shrink below this size. +#' @param min_columns Minimum number of columns, matrix will refuse shrink below this size. #' @param allow_missings Logical, whether missing (empty) values are allowed in the matrix #' (if \code{type} is "string"). #' @param allow_user_resize_columns Logical, if \code{TRUE}, the user can add columns by typing #' on the rightmost (inactive) cells. #' @param allow_user_resize_rows Logical, if \code{TRUE}, the user can add rows by typing on the #' bottommost (inactive) cells. -#' @param fixed_width Logical, force the GUI element to stay at its initial width. Do not use in -#' combindation with matrices, where the number of columns may change in any way. -#' Useful, esp. when creating a vector input element (rows="1"). +#' @param fixed_width Logical, assume the column count will not change. The last (or typically only) +#' column will be stretched to take up the available width. Do not use in combination with matrices, +#' where the number of columns may change in any way. Useful, esp. when creating a vector input element (rows="1"). #' @param fixed_height Logical, force the GUI element to stay at its initial height. Do not use in #' combindation with matrices, where the number of rows may change in any way. #' Useful, esp. when creating a vector input element (columns="1"). @@ -63,7 +65,7 @@ #' @examples #' test.matrix <- rk.XML.matrix("A matrix") -rk.XML.matrix <- function(label, mode="real", rows=2, columns=2, min=NULL, max=NULL, +rk.XML.matrix <- function(label, mode="real", rows=2, columns=2, min=NULL, max=NULL, min_rows=0, min_columns=0, allow_missings=FALSE, allow_user_resize_columns=TRUE, allow_user_resize_rows=TRUE, fixed_width=FALSE, fixed_height=FALSE, horiz_headers=NULL, vert_headers=NULL, id.name="auto", help=NULL, component=rk.get.comp(), i18n=NULL){ @@ -102,6 +104,9 @@ rk.XML.matrix <- function(label, mode="real", rows=2, columns=2, min=NULL, max=N attr.list[["rows"]] <- rows } else {} } else {} + if(min_rows != 0){ + attr.list[["min_rows"]] <- min_rows + } else {} if(!isTRUE(allow_user_resize_columns)){ attr.list[["allow_user_resize_columns"]] <- "false" @@ -109,6 +114,9 @@ rk.XML.matrix <- function(label, mode="real", rows=2, columns=2, min=NULL, max=N attr.list[["columns"]] <- columns } else {} } else {} + if(min_columns != 0){ + attr.list[["min_columns"]] <- min_columns + } else {} if(isTRUE(fixed_width)){ attr.list[["fixed_width"]] <- "true" |
From: Thomas F. <tho...@ru...> - 2015-01-19 19:56:38
|
Git commit e7e876df1358d046e6d0ae5e001c154693d57667 by Thomas Friedrichsmeier. Committed on 08/01/2015 at 18:58. Pushed by tfry into branch 'work/distributions'. Better behavior for <matrix> with (now somewhat mis-named option) fixed_width="true"; add min_rows, and min_columns attributes. M +1 -0 ChangeLog M +10 -2 doc/rkwardplugins/index.docbook M +17 -12 rkward/plugin/rkmatrixinput.cpp M +1 -0 rkward/plugin/rkmatrixinput.h http://commits.kde.org/rkward/e7e876df1358d046e6d0ae5e001c154693d57667 diff --git a/ChangeLog b/ChangeLog index 6491636..5e5ecfb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,4 @@ +- <matrix> element gains options min_rows and min_columns, and the details of fixed_width="true" have been improved - Fixed: <valueslot>s were quirky with respect to showing as invalid - Fix a hang-on-exit issue - Add R function rk.set.plugin.status() to allow further customization of loaded plugins (hiding of individual menu entries) diff --git a/doc/rkwardplugins/index.docbook b/doc/rkwardplugins/index.docbook index 134146b..5d686c7 100644 --- a/doc/rkwardplugins/index.docbook +++ b/doc/rkwardplugins/index.docbook @@ -3068,14 +3068,22 @@ made checkable, thus acting like a simple checkbox at the same time. <listitem><para>Number of columns in the matrix. Has no effect for allow_user_resize_columns="true". <note><para>This can also be controlled by setting the "columns" property".</para></note> (optional, defaults to 2).</para></listitem> </varlistentry> <varlistentry> - <term><parameter>fixed_width</parameter></term> - <listitem><para>Force the GUI element to stay at its initial width. Do not use in combination with matrices, where the number of columns may change in any way. Useful, esp. when creating a vector input element (rows="1"). With this option set to true, no vertical scroll bar will be shown, even in the matrix exceeds the available height (as this would affect the width). (optional, defaults to false).</para></listitem> + <term><parameter>min_rows</parameter></term> + <listitem><para>Minimum number of rows in the matrix. The matrix will refuse shrink below this size. (optional, defaults to 0; see also: <parameter>allow_missings</parameter>.).</para></listitem> + </varlistentry> + <varlistentry> + <term><parameter>min_columns</parameter></term> + <listitem><para>Minimum number of columns in the matrix. The matrix will refuse shrink below this size. (optional, defaults to 0; see also: <parameter>allow_missings</parameter>.).</para></listitem> </varlistentry> <varlistentry> <term><parameter>fixed_height</parameter></term> <listitem><para>Force the GUI element to stay at its initial height. Do not use in combination with matrices, where the number of rows may change in any way. Useful, esp. when creating a vector input element (columns="1"). With this option set to true, no horizontal scroll bar will be shown, even in the matrix exceeds the available width (as this would affect the height). (optional, defaults to false).</para></listitem> </varlistentry> <varlistentry> + <term><parameter>fixed_width</parameter></term> + <listitem><para>Slightly misnamed: Assume the column count will not change. The last (or typically only) column will be stretched to take up the available width. Do not use in combination with matrices, where the number of columns may change in any way. Useful, esp. when creating a vector input element (rows="1"). (optional, defaults to false).</para></listitem> + </varlistentry> + <varlistentry> <term><parameter>horiz_headers</parameter></term> <listitem><para>Strings to ues for the horiztonal header, separated by ";". The header will be hidden, if set to "". (optional, defaults to column number).</para></listitem> </varlistentry> diff --git a/rkward/plugin/rkmatrixinput.cpp b/rkward/plugin/rkmatrixinput.cpp index 1d768dd..001b459 100644 --- a/rkward/plugin/rkmatrixinput.cpp +++ b/rkward/plugin/rkmatrixinput.cpp @@ -34,6 +34,8 @@ RKMatrixInput::RKMatrixInput (const QDomElement& element, RKComponent* parent_component, QWidget* parent_widget) : RKComponent (parent_component, parent_widget) { RK_TRACE (PLUGIN); + is_valid = true; + // get xml-helper XMLHelper *xml = parent_component->xmlHelper (); @@ -59,6 +61,9 @@ RKMatrixInput::RKMatrixInput (const QDomElement& element, RKComponent* parent_co max = FLT_MAX; } + min_rows = xml->getIntAttribute (element, "min_rows", 0, DL_INFO); + min_columns = xml->getIntAttribute (element, "min_columns", 0, DL_INFO); + // Note: string type matrix allows missings, implicitly (treating them as empty strings) allow_missings = xml->getBoolAttribute (element, "allow_missings", false, DL_INFO); if (mode == String) allow_missings = true; @@ -67,8 +72,8 @@ RKMatrixInput::RKMatrixInput (const QDomElement& element, RKComponent* parent_co trailing_rows = allow_user_resize_rows ? 1 : 0; trailing_columns = allow_user_resize_columns ? 1 : 0; - row_count = new RKComponentPropertyInt (this, false, xml->getIntAttribute (element, "rows", 2, DL_INFO)); - column_count = new RKComponentPropertyInt (this, false, xml->getIntAttribute (element, "columns", 2, DL_INFO)); + row_count = new RKComponentPropertyInt (this, false, xml->getIntAttribute (element, "rows", qMax (2, min_rows), DL_INFO)); + column_count = new RKComponentPropertyInt (this, false, xml->getIntAttribute (element, "columns", qMax (2, min_columns), DL_INFO)); tsv_data = new RKComponentPropertyBase (this, false); row_count->setInternal (true); addChild ("rows", row_count); @@ -91,9 +96,7 @@ RKMatrixInput::RKMatrixInput (const QDomElement& element, RKComponent* parent_co display->setModel (model); display->setAlternatingRowColors (true); if (xml->getBoolAttribute (element, "fixed_width", false, DL_INFO)) { - int max_col = column_count->intValue () - 1; - display->setVerticalScrollBarPolicy (Qt::ScrollBarAlwaysOff); - display->setFixedWidth (display->verticalHeader ()->width () + display->columnViewportPosition (max_col) + display->columnWidth (max_col) + display->verticalHeader ()->fontMetrics ().width ("0")); + display->horizontalHeader ()->setStretchLastSection (true); } if (xml->getBoolAttribute (element, "fixed_height", false, DL_INFO)) { int max_row = row_count->intValue () - 1; @@ -199,7 +202,7 @@ void RKMatrixInput::updateColumn (int column) { // check for trailing empty rows: int last_row = col.storage.size (); - while ((--last_row >= 0) && col.storage[last_row].isEmpty ()) { // strip empty trailing strings + while ((--last_row >= min_rows) && col.storage[last_row].isEmpty ()) { // strip empty trailing strings col.storage.pop_back (); } @@ -244,9 +247,10 @@ void RKMatrixInput::updateAll () { for (int i = columns.size () - 1; i >= 0; --i) { max_row = qMax (max_row, columns[i].storage.size () - 1); } - if (max_row != row_count->intValue () - 1) { - row_count->setIntValue (max_row + 1); - } + } + max_row = qMax (min_rows - 1, max_row); + if (max_row != row_count->intValue () - 1) { + row_count->setIntValue (max_row + 1); } int max_col = column_count->intValue () - 1; @@ -256,9 +260,10 @@ void RKMatrixInput::updateAll () { break; } } - if (max_col != column_count->intValue () - 1) { - column_count->setIntValue (max_col + 1); - } + } + max_col = qMax (min_columns - 1, max_col); + if (max_col != column_count->intValue () - 1) { + column_count->setIntValue (max_col + 1); } QStringList tsv; diff --git a/rkward/plugin/rkmatrixinput.h b/rkward/plugin/rkmatrixinput.h index 30b7d91..6606f2f 100644 --- a/rkward/plugin/rkmatrixinput.h +++ b/rkward/plugin/rkmatrixinput.h @@ -67,6 +67,7 @@ private: bool allow_user_resize_columns; int trailing_rows; int trailing_columns; + int min_rows, min_columns; bool isValueValid (const QString &value) const; void updateAll (); |
From: Thomas F. <tho...@ru...> - 2015-01-19 19:56:36
|
Git commit b03978d7cf79287bce8f5e645777296429e8ef5f by Thomas Friedrichsmeier. Committed on 19/01/2015 at 19:55. Pushed by tfry into branch 'work/distributions'. Start experimenting with a re-design of the distributions plugins. M +1 -1 rkward/plugins/distributions/binomial_quantiles.js M +5 -1 rkward/plugins/distributions/binomial_tail_probabilities.xml M +40 -34 rkward/plugins/distributions/dist_snippets.xml http://commits.kde.org/rkward/b03978d7cf79287bce8f5e645777296429e8ef5f diff --git a/rkward/plugins/distributions/binomial_quantiles.js b/rkward/plugins/distributions/binomial_quantiles.js index 7878b0e..ae81961 100644 --- a/rkward/plugins/distributions/binomial_quantiles.js +++ b/rkward/plugins/distributions/binomial_quantiles.js @@ -4,7 +4,7 @@ var p; function calculate () { p = "c (" + getList ("p.0").join (", ") + ")"; - echo ('result <- (qbinom (p = ' + p + ', size = ' + getValue ("size") + ', prob = ' + getValue ("prob") + ', ' + getValue ("tail") + ', ' + getValue ("logp") + '))\n'); + echo ('result <- (qbinom (p = ' + p + ', size = ' + getValue ("size") + ', prob = ' + getValue ("prob") + ', ' + getValue ("lower") + ', ' + getValue ("logp") + '))\n'); } function printout () { diff --git a/rkward/plugins/distributions/binomial_tail_probabilities.xml b/rkward/plugins/distributions/binomial_tail_probabilities.xml index 9404e98..79842c6 100644 --- a/rkward/plugins/distributions/binomial_tail_probabilities.xml +++ b/rkward/plugins/distributions/binomial_tail_probabilities.xml @@ -1,14 +1,18 @@ <!DOCTYPE rkplugin> <document> <code file="binomial_tail_probabilities.js" /> + <logic> + <insert snippet="dialog_logic"/> + </logic> <snippets> <snippet id="dist_options"> <spinbox default_precision="2" type="integer" initial="1" id="size" min="1" label="Binomial trials"/> <spinbox default_precision="2" type="real" initial="0.5" id="prob" min="0" max="1" label="Probability of success"/> </snippet> + <snippet id="ui_note"><text>Note: For the binomial distribution, quantiles can be interpreted as number of successes.</text></snippet> <include file="dist_snippets.xml"/> </snippets> <dialog label="Binomial tail probability" > - <insert snippet="probabilities_layout"/> + <insert snippet="dialog_layout"/> </dialog> </document> diff --git a/rkward/plugins/distributions/dist_snippets.xml b/rkward/plugins/distributions/dist_snippets.xml index 8c8c8ed..c1f4f2e 100644 --- a/rkward/plugins/distributions/dist_snippets.xml +++ b/rkward/plugins/distributions/dist_snippets.xml @@ -1,38 +1,44 @@ -<!-- Snippets for the XYZ quantiles and probabilities plugins --> +<!-- Snippets for the distribution calculator plugins --> <document> - <snippet id="probabilities_layout"> - <row> - <column> - <input required="true" initial="0.95" id="q" label="Vector of quantiles"/> - <insert snippet="dist_options"/> - </column> - <column> - <radio id="tail" label="Choose type of probability" > - <option value="lower.tail=TRUE" label="lower tail" /> - <option value="lower.tail=FALSE" label="upper tail" /> - </radio> - <radio id="logp" label="return probabilities p as:" > - <option value="log.p = FALSE" label="not log(p)" /> - <option value="log.p = TRUE" label="log(p)" /> - </radio> - <stretch/> - </column> - </row> + <snippet id="dialog_logic"> + <convert id="do_d" mode="equals" sources="mode.string" standard="d"/> + <convert id="do_q" mode="equals" sources="mode.string" standard="q"/> + + <connect client="lower.enabled" governor="do_d.not"/> + <connect client="logp.enabled" governor="do_d.not"/> + <connect client="q.visible" governor="do_q.not"/> + <connect client="p.visible" governor="do_q"/> </snippet> - <snippet id="quantiles_layout"> - <row> - <column> - <matrix id="p" columns="1" min_rows="1" fixed_width="true" allow_user_resize_columns="false" mode="real" label="Vector of probabilities" horiz_headers=""/> - <radio id="tail" label="Type of probability" > - <option value="lower.tail=TRUE" label="lower tail" /> - <option value="lower.tail=FALSE" label="upper tail" /> - </radio> - <checkbox id="logp" label="probabilities p are given as log(p)" value="log.p = TRUE" value_unchecked="log.p = FALSE"/> - </column> - <column> - <insert snippet="dist_options"/> - <stretch/> - </column> - </row> + <snippet id="dialog_layout"> + <dropdown id="mode" label="Mode"> + <option value="p" label="Calculate probabilities for given quantiles"/> + <option value="d" label="Calculate densities at given quantiles"/> + <option value="q" label="Calculate quantiles for given probabilities"/> + </dropdown> + <row> + <frame> + <column> + <matrix columns="1" allow_user_resize_columns="false" min_rows="1" required="true" mode="real" fixed_width="true" min="0" id="q" label="Vector of quantiles"/> + <matrix columns="1" allow_user_resize_columns="false" min_rows="1" required="true" mode="real" fixed_width="true" id="p" label="Vector of probabilities"/> + <checkbox id="logp" label="log probabilities" /> + <checkbox id="lower" label="Lower tail" checked="true" /> + <stretch/> + </column> + </frame> + <frame> + <column> + <insert snippet="dist_options"/> + <stretch/> + </column> + </frame> + </row> + <insert snippet="ui_note"/> + </snippet> + <snippet id="dialog_settings"> + <setting id="mode">Specify the quantitiy to be calculated (probabilites, densities, or quantiles), and the quantity given (probabilities or quantiles)</setting> + <setting id="q">When calculating densities or probabilites, specify one or more quantiles.</setting> + <setting id="p">When calculating quantiles, specify one or more probabilities (optionally logarithmic; see below).</setting> + <setting id="logp">When calculating probabilities, return these as log (p). When specifying probabilites, these are supplied as log (p).</setting> + <setting id="lower">If checked (the default) probabilities are given are P[X ≤ x]. Otherwise (upper tail) probabilities are P[X > x]</setting> </snippet> </document> |
From: Thomas F. <tho...@ru...> - 2015-01-19 19:56:34
|
Git commit 09a236c90e377c6a992c10f36a7c9145ffc619ec by Thomas Friedrichsmeier. Committed on 08/01/2015 at 21:12. Pushed by tfry into branch 'work/distributions'. Some bits. M +1 -1 rkward/plugins/distributions/beta_probabilities.js M +1 -1 rkward/plugins/distributions/beta_quantiles.js M +1 -1 rkward/plugins/distributions/binomial_quantiles.js M +6 -9 rkward/plugins/distributions/dist_snippets.xml http://commits.kde.org/rkward/09a236c90e377c6a992c10f36a7c9145ffc619ec diff --git a/rkward/plugins/distributions/beta_probabilities.js b/rkward/plugins/distributions/beta_probabilities.js index 354410b..ba11341 100755 --- a/rkward/plugins/distributions/beta_probabilities.js +++ b/rkward/plugins/distributions/beta_probabilities.js @@ -2,7 +2,7 @@ var q; function calculate () { - q = "c (" + getString ("q").replace (/[, ]+/g, ", ") + ")"; + q = "c (" + getList ("q.0").join (", ") + ")"; echo ('result <- (pbeta (q = ' + q + ', shape1 = ' + getValue ("shape1") + ', shape2 = ' + getValue ("shape2") + ', ncp = ' + getValue ("ncp") + ', ' + getValue ("tail") + ', ' + getValue("logp") + '))\n'); } diff --git a/rkward/plugins/distributions/beta_quantiles.js b/rkward/plugins/distributions/beta_quantiles.js index c980fcb..0d8c112 100755 --- a/rkward/plugins/distributions/beta_quantiles.js +++ b/rkward/plugins/distributions/beta_quantiles.js @@ -2,7 +2,7 @@ var p; function calculate () { - p = "c (" + getString ("p").replace (/[, ]+/g, ", ") + ")"; + p = "c (" + getList ("p.0").join (", ") + ")"; echo ('result <- (qbeta (p = ' + p + ', shape1 = ' + getValue ("shape1") + ', shape2 = ' + getValue ("shape2") + ', ncp = ' + getValue ("ncp") + ', ' + getValue ("tail") + ', ' + getValue("logp") + '))\n'); } diff --git a/rkward/plugins/distributions/binomial_quantiles.js b/rkward/plugins/distributions/binomial_quantiles.js index 7ce4fc9..7878b0e 100644 --- a/rkward/plugins/distributions/binomial_quantiles.js +++ b/rkward/plugins/distributions/binomial_quantiles.js @@ -2,7 +2,7 @@ var p; function calculate () { - p = "c (" + getString ("p").replace (/[, ]+/g, ", ") + ")"; + p = "c (" + getList ("p.0").join (", ") + ")"; echo ('result <- (qbinom (p = ' + p + ', size = ' + getValue ("size") + ', prob = ' + getValue ("prob") + ', ' + getValue ("tail") + ', ' + getValue ("logp") + '))\n'); } diff --git a/rkward/plugins/distributions/dist_snippets.xml b/rkward/plugins/distributions/dist_snippets.xml index a4125c6..8c8c8ed 100644 --- a/rkward/plugins/distributions/dist_snippets.xml +++ b/rkward/plugins/distributions/dist_snippets.xml @@ -22,18 +22,15 @@ <snippet id="quantiles_layout"> <row> <column> - <input required="true" initial="0.95" id="p" label="Vector of probabilities"/> - <insert snippet="dist_options"/> - </column> - <column> - <radio id="tail" label="Choose type of probability" > + <matrix id="p" columns="1" min_rows="1" fixed_width="true" allow_user_resize_columns="false" mode="real" label="Vector of probabilities" horiz_headers=""/> + <radio id="tail" label="Type of probability" > <option value="lower.tail=TRUE" label="lower tail" /> <option value="lower.tail=FALSE" label="upper tail" /> </radio> - <radio id="logp" label="probabilities p are given as:" > - <option value="log.p = FALSE" label="not log(p)" /> - <option value="log.p = TRUE" label="log(p)" /> - </radio> + <checkbox id="logp" label="probabilities p are given as log(p)" value="log.p = TRUE" value_unchecked="log.p = FALSE"/> + </column> + <column> + <insert snippet="dist_options"/> <stretch/> </column> </row> |
From: Thomas F. <tho...@ru...> - 2015-01-16 12:34:49
|
Git commit 9f2414f224e78c8d9bc89f2be5bde0df861953b6 by Thomas Friedrichsmeier. Committed on 16/01/2015 at 12:34. Pushed by tfry into branch 'master'. Exclude .git-files, not .svn-files, now. M +4 -4 scripts/makedist.sh http://commits.kde.org/rkward/9f2414f224e78c8d9bc89f2be5bde0df861953b6 diff --git a/scripts/makedist.sh b/scripts/makedist.sh index c9d28e2..bca555f 100755 --- a/scripts/makedist.sh +++ b/scripts/makedist.sh @@ -26,10 +26,10 @@ mkdir $DISTDIR/i18n mkdir $DISTDIR/rkward mkdir $DISTDIR/tests -rsync -a --exclude '*~' --exclude '*.svn*' $EXCLUDES $BASEDIR/doc/* $DISTDIR/doc -rsync -a --exclude '*~' --exclude '*.svn*' $EXCLUDES $BASEDIR/i18n/* $DISTDIR/i18n -rsync -a --exclude '*~' --exclude '*.svn*' --exclude 'templates' $EXCLUDES $BASEDIR/rkward/* $DISTDIR/rkward -rsync -a --exclude '*~' --exclude '*.svn*' $EXCLUDES $BASEDIR/tests/* $DISTDIR/tests +rsync -a --exclude '*~' --exclude '*.git*' $EXCLUDES $BASEDIR/doc/* $DISTDIR/doc +rsync -a --exclude '*~' --exclude '*.git*' $EXCLUDES $BASEDIR/i18n/* $DISTDIR/i18n +rsync -a --exclude '*~' --exclude '*.git*' --exclude 'templates' $EXCLUDES $BASEDIR/rkward/* $DISTDIR/rkward +rsync -a --exclude '*~' --exclude '*.git*' $EXCLUDES $BASEDIR/tests/* $DISTDIR/tests # make messages #cd $DISTDIR/po |
From: Thomas F. <tho...@ru...> - 2015-01-16 12:23:29
|
Dear subscriber of rkward-tracker and / or rkward-cvs, as part of our migration from SF.net to KDE.org, we're also moving our mailing lists, and restructuring a bit. rkw...@li... and rkw...@li... will jointly become rkw...@kd... . I will move your subscription to the new list, then deactivate the old lists. Note that individual settings such as receiving mails in daily digests will be lost in the transition. You will have to re-set these, sorry about the inconvenience. You should receive a mail containing a new mailing list password, and a link to the subscription configuration page shortly after this mail. If you do not receive a notice of subscription to the new mailing list, or if you need any other assistance, just let me know. Regards Thomas |
From: Thomas F. <tho...@ru...> - 2015-01-15 19:28:01
|
Git commit 460d987194b2fbd7ccf727f8e8ab8153c281a40c by Thomas Friedrichsmeier. Committed on 15/01/2015 at 19:26. Pushed by tfry into branch 'master'. Extend and activate automated test for power plugin. (This may be somewhat excessive, but in fact, playing with many settings while creating this test revealed one syntax bug (fixed in previous commit)). M +10 -4 tests/analysis_plugins.R M +243 -4 tests/analysis_plugins/power_analysis.rkcommands.R M +119 -0 tests/analysis_plugins/power_analysis.rkout http://commits.kde.org/rkward/460d987194b2fbd7ccf727f8e8ab8153c281a40c diff --git a/tests/analysis_plugins.R b/tests/analysis_plugins.R index 696b771..f6757aa 100644 --- a/tests/analysis_plugins.R +++ b/tests/analysis_plugins.R @@ -145,10 +145,16 @@ suite <- new ("RKTestSuite", id="analysis_plugins", }), new ("RKTest", id="linear_regression", call=function () { rk.call.plugin ("rkward::linear_regression", intercept.state="1", x.available="warpbreaks[[\"tension\"]]\nwarpbreaks[[\"wool\"]]", y.available="warpbreaks[[\"breaks\"]]", submit.mode="submit") - })#, -# new ("RKTest", id="power_analysis", call=function () { -# rk.call.plugin ("rkward::power_analysis", drp_pwr_hypothesis.string="two.sided", drp_pwr_stat.string="pwr.t.test", drp_pwr_type.string="two.sample", pwr_spin_sample0.real="30.00", rad_pwr_param.string="Power", spn_Effectsz.real="0.30", spn_Sgnfcncl.real="0.05", svb_Svrsltst.active="0", svb_Svrsltst.objectname="pwr.result", svb_Svrsltst.parent=".GlobalEnv", submit.mode="submit") -# }) + }), + new ("RKTest", id="power_analysis", call=function () { + rk.call.plugin ("rkward::power_analysis", drp_pwr_hypothesis.string="two.sided", drp_pwr_stat.string="pwr.t.test", drp_pwr_type.string="two.sample", pwr_spin_sample0.real="30.00", rad_pwr_param.string="Power", spn_Effectsz.real="0.30", spn_Sgnfcncl.real="0.05", svb_Svrsltst.active="0", svb_Svrsltst.objectname="pwr.result", svb_Svrsltst.parent=".GlobalEnv", submit.mode="submit") + rk.call.plugin ("rkward::power_analysis", drp_pwr_hypothesis.string="two.sided", drp_pwr_stat.string="pwr.t.test", drp_pwr_type.string="two.sample.diff", pwr_spin_sample1.real="27.00", pwr_spin_sample2.real="33.00", rad_pwr_param.string="Power", spn_Effectsz.real="0.30", spn_Sgnfcncl.real="0.05", svb_Svrsltst.active="0", svb_Svrsltst.objectname="pwr.result", svb_Svrsltst.parent=".GlobalEnv", submit.mode="submit") + rk.call.plugin ("rkward::power_analysis", drp_pwr_hypothesis.string="two.sided", drp_pwr_stat.string="pwr.r.test", rad_pwr_param.string="Sample size", spn_Effectsz.real="0.30", spn_Power.real="0.81", spn_Sgnfcncl.real="0.05", svb_Svrsltst.active="0", svb_Svrsltst.objectname="pwr.result", svb_Svrsltst.parent=".GlobalEnv", submit.mode="submit") + rk.call.plugin ("rkward::power_analysis", drp_pwr_stat.string="pwr.chisq.test", pwr_spin_df.real="32.00", pwr_spin_sample0.real="30.00", rad_pwr_param.string="Significance level", spn_Effectsz.real="0.30", spn_Power.real="0.81", svb_Svrsltst.active="0", svb_Svrsltst.objectname="pwr.result", svb_Svrsltst.parent=".GlobalEnv", submit.mode="submit") + rk.call.plugin ("rkward::power_analysis", drp_pwr_hypothesis.string="greater", drp_pwr_proptype.string="two.sample.same", drp_pwr_stat.string="pwr.p.test", pwr_spin_sample0.real="30.00", rad_pwr_param.string="Significance level", spn_Effectsz.real="0.30", spn_Power.real="0.81", svb_Svrsltst.active="0", svb_Svrsltst.objectname="pwr.result", svb_Svrsltst.parent=".GlobalEnv", submit.mode="submit") + rk.call.plugin ("rkward::power_analysis", drp_pwr_hypothesis.string="two.sided", drp_pwr_stat.string="pwr.norm.test", pwr_spin_sample0.real="30.00", rad_pwr_param.string="Significance level", spn_Effectsz.real="0.30", spn_Power.real="0.80", svb_Svrsltst.active="0", svb_Svrsltst.objectname="pwr.result", svb_Svrsltst.parent=".GlobalEnv", submit.mode="submit") + rk.call.plugin ("rkward::power_analysis", drp_pwr_stat.string="pwr.f2.test", pwr_spin_dfv.real="30.00", pwr_spin_sample0.real="30.00", rad_pwr_param.string="Parameter count", spn_Effectsz.real="0.30", spn_Power.real="0.80", spn_Sgnfcncl.real="0.10", svb_Svrsltst.active="0", svb_Svrsltst.objectname="pwr.result", svb_Svrsltst.parent=".GlobalEnv", submit.mode="submit") + }) ), postCalls = list ( # like initCalls: run after all tests to clean up. function () { suppressWarnings (rm (list=c ("women", "warpbreaks", "rock", "co2", "test50x", "test50y", "test50z", "test10x", "test10y", "test10z", "test_table", "hptrend", "hpcycle"), envir=globalenv())) diff --git a/tests/analysis_plugins/power_analysis.rkcommands.R b/tests/analysis_plugins/power_analysis.rkcommands.R index a1a6a3f..38c6113 100644 --- a/tests/analysis_plugins/power_analysis.rkcommands.R +++ b/tests/analysis_plugins/power_analysis.rkcommands.R @@ -1,7 +1,7 @@ local({ -## Vorbereiten +## Prepare require(pwr) -## Berechne +## Compute pwr.result <- try( pwr.t.test( n=30, @@ -9,10 +9,10 @@ require(pwr) ) ) -## Drucke Ergebnisse +## Print result # Catch errors due to unsuitable data if(class(pwr.result) == "try-error"){ - rk.print("Power anaylsis not possible with the data you provided") + rk.print("Power analysis not possible with the data you provided") return() } @@ -36,3 +36,242 @@ require(pwr) rk.print("Interpretation of effect size <strong>d</strong> (according to Cohen):") rk.results(data.frame(small=0.2, medium=0.5, large=0.8)) }) +local({ +## Prepare +require(pwr) +## Compute + pwr.result <- try( + pwr.t2n.test( + n1=27, + n2=33, + d=0.30 + ) + ) + +## Print result + # Catch errors due to unsuitable data + if(class(pwr.result) == "try-error"){ + rk.print("Power analysis not possible with the data you provided") + return() + } + + # Prepare printout + note <- pwr.result[["note"]] + parameters <- list("Target measure"="Power") + if(!is.null(pwr.result[["alternative"]])){ + parameters[["alternative"]] <- pwr.result[["alternative"]] + } + + rk.header(pwr.result[["method"]], parameters=parameters) + pwr.result[c("method", "note", "alternative")] <- NULL + pwr.result <- as.data.frame(unlist(pwr.result)) + colnames(pwr.result) <- "Parameters" + + rk.results(pwr.result) + if(!is.null(note)){ + rk.print(paste("<strong>Note:</strong> ", note)) + } + + rk.print("Interpretation of effect size <strong>d</strong> (according to Cohen):") + rk.results(data.frame(small=0.2, medium=0.5, large=0.8)) +}) +local({ +## Prepare +require(pwr) +## Compute + pwr.result <- try( + pwr.r.test( + r=0.30, + power=0.81 + ) + ) + +## Print result + # Catch errors due to unsuitable data + if(class(pwr.result) == "try-error"){ + rk.print("Power analysis not possible with the data you provided") + return() + } + + # Prepare printout + note <- pwr.result[["note"]] + parameters <- list("Target measure"="Sample size") + if(!is.null(pwr.result[["alternative"]])){ + parameters[["alternative"]] <- pwr.result[["alternative"]] + } + + rk.header(pwr.result[["method"]], parameters=parameters) + pwr.result[c("method", "note", "alternative")] <- NULL + pwr.result <- as.data.frame(unlist(pwr.result)) + colnames(pwr.result) <- "Parameters" + + rk.results(pwr.result) + if(!is.null(note)){ + rk.print(paste("<strong>Note:</strong> ", note)) + } + + rk.print("Interpretation of effect size <strong>r</strong> (according to Cohen):") + rk.results(data.frame(small=0.1, medium=0.3, large=0.5)) +}) +local({ +## Prepare +require(pwr) +## Compute + pwr.result <- try( + pwr.chisq.test( + w=0.30, + N=30, + df=32, + sig.level=NULL, + power=0.81 + ) + ) + +## Print result + # Catch errors due to unsuitable data + if(class(pwr.result) == "try-error"){ + rk.print("Power analysis not possible with the data you provided") + return() + } + + # Prepare printout + note <- pwr.result[["note"]] + parameters <- list("Target measure"="Significance level") + if(!is.null(pwr.result[["alternative"]])){ + parameters[["alternative"]] <- pwr.result[["alternative"]] + } + + rk.header(pwr.result[["method"]], parameters=parameters) + pwr.result[c("method", "note", "alternative")] <- NULL + pwr.result <- as.data.frame(unlist(pwr.result)) + colnames(pwr.result) <- "Parameters" + + rk.results(pwr.result) + if(!is.null(note)){ + rk.print(paste("<strong>Note:</strong> ", note)) + } + + rk.print("Interpretation of effect size <strong>w</strong> (according to Cohen):") + rk.results(data.frame(small=0.1, medium=0.3, large=0.5)) +}) +local({ +## Prepare +require(pwr) +## Compute + pwr.result <- try( + pwr.2p.test( + h=0.30, + n=30, + sig.level=NULL, + power=0.81, + alternative="greater" + ) + ) + +## Print result + # Catch errors due to unsuitable data + if(class(pwr.result) == "try-error"){ + rk.print("Power analysis not possible with the data you provided") + return() + } + + # Prepare printout + note <- pwr.result[["note"]] + parameters <- list("Target measure"="Significance level") + if(!is.null(pwr.result[["alternative"]])){ + parameters[["alternative"]] <- pwr.result[["alternative"]] + } + + rk.header(pwr.result[["method"]], parameters=parameters) + pwr.result[c("method", "note", "alternative")] <- NULL + pwr.result <- as.data.frame(unlist(pwr.result)) + colnames(pwr.result) <- "Parameters" + + rk.results(pwr.result) + if(!is.null(note)){ + rk.print(paste("<strong>Note:</strong> ", note)) + } + + rk.print("Interpretation of effect size <strong>h</strong> (according to Cohen):") + rk.results(data.frame(small=0.2, medium=0.5, large=0.8)) +}) +local({ +## Prepare +require(pwr) +## Compute + pwr.result <- try( + pwr.norm.test( + d=0.30, + n=30, + sig.level=NULL, + power=0.80 + ) + ) + +## Print result + # Catch errors due to unsuitable data + if(class(pwr.result) == "try-error"){ + rk.print("Power analysis not possible with the data you provided") + return() + } + + # Prepare printout + note <- pwr.result[["note"]] + parameters <- list("Target measure"="Significance level") + if(!is.null(pwr.result[["alternative"]])){ + parameters[["alternative"]] <- pwr.result[["alternative"]] + } + + rk.header(pwr.result[["method"]], parameters=parameters) + pwr.result[c("method", "note", "alternative")] <- NULL + pwr.result <- as.data.frame(unlist(pwr.result)) + colnames(pwr.result) <- "Parameters" + + rk.results(pwr.result) + if(!is.null(note)){ + rk.print(paste("<strong>Note:</strong> ", note)) + } + + rk.print("Interpretation of effect size <strong>d</strong> (according to Cohen):") + rk.results(data.frame(small=0.2, medium=0.5, large=0.8)) +}) +local({ +## Prepare +require(pwr) +## Compute + pwr.result <- try( + pwr.f2.test( + v=30, + f2=0.30, + sig.level=0.10, + power=0.80 + ) + ) + +## Print result + # Catch errors due to unsuitable data + if(class(pwr.result) == "try-error"){ + rk.print("Power analysis not possible with the data you provided") + return() + } + + # Prepare printout + note <- pwr.result[["note"]] + parameters <- list("Target measure"="Parameter count") + if(!is.null(pwr.result[["alternative"]])){ + parameters[["alternative"]] <- pwr.result[["alternative"]] + } + + rk.header(pwr.result[["method"]], parameters=parameters) + pwr.result[c("method", "note", "alternative")] <- NULL + pwr.result <- as.data.frame(unlist(pwr.result)) + colnames(pwr.result) <- "Parameters" + + rk.results(pwr.result) + if(!is.null(note)){ + rk.print(paste("<strong>Note:</strong> ", note)) + } + + rk.print("Interpretation of effect size <strong>f<sup>2</sup></strong> (according to Cohen):") + rk.results(data.frame(small=0.02, medium=0.15, large=0.35)) +}) diff --git a/tests/analysis_plugins/power_analysis.rkout b/tests/analysis_plugins/power_analysis.rkout index d111750..8dd4c62 100644 --- a/tests/analysis_plugins/power_analysis.rkout +++ b/tests/analysis_plugins/power_analysis.rkout @@ -19,3 +19,122 @@ DATE<br /> <tr><td>small</td><td>medium</td><td>large</td></tr> <tr><td>0.2</td><td>0.5</td><td>0.8</td></tr> </table> +<h1>t test power calculation</h1> +<h2>Parameters</h2> +<ul><li>Target measure: Power</li> +<li>alternative: two.sided</li> +</ul> +DATE<br /> +<table border="1"> +<tr><td></td><td>Parameters</td></tr> +<tr><td>n1</td><td>27</td></tr> +<tr><td>n2</td><td>33</td></tr> +<tr><td>d</td><td>0.3</td></tr> +<tr><td>sig.level</td><td>0.05</td></tr> +<tr><td>power</td><td>0.20624</td></tr> +</table> + +<p class='character'>Interpretation of effect size <strong>d</strong> (according to Cohen):</p> +<table border="1"> +<tr><td>small</td><td>medium</td><td>large</td></tr> +<tr><td>0.2</td><td>0.5</td><td>0.8</td></tr> +</table> +<h1>approximate correlation power calculation (arctangh transformation)</h1> +<h2>Parameters</h2> +<ul><li>Target measure: Sample size</li> +<li>alternative: two.sided</li> +</ul> +DATE<br /> +<table border="1"> +<tr><td></td><td>Parameters</td></tr> +<tr><td>n</td><td>86.875</td></tr> +<tr><td>r</td><td>0.3</td></tr> +<tr><td>sig.level</td><td>0.05</td></tr> +<tr><td>power</td><td>0.81</td></tr> +</table> + +<p class='character'>Interpretation of effect size <strong>r</strong> (according to Cohen):</p> +<table border="1"> +<tr><td>small</td><td>medium</td><td>large</td></tr> +<tr><td>0.1</td><td>0.3</td><td>0.5</td></tr> +</table> +<h1>Chi squared power calculation</h1> +<h2>Parameters</h2> +<ul><li>Target measure: Significance level</li> +</ul> +DATE<br /> +<table border="1"> +<tr><td></td><td>Parameters</td></tr> +<tr><td>w</td><td>0.3</td></tr> +<tr><td>N</td><td>30</td></tr> +<tr><td>df</td><td>32</td></tr> +<tr><td>sig.level</td><td>0.71662</td></tr> +<tr><td>power</td><td>0.81</td></tr> +</table> + +<p class='character'><strong>Note:</strong> N is the number of observations</p> + +<p class='character'>Interpretation of effect size <strong>w</strong> (according to Cohen):</p> +<table border="1"> +<tr><td>small</td><td>medium</td><td>large</td></tr> +<tr><td>0.1</td><td>0.3</td><td>0.5</td></tr> +</table> +<h1>Difference of proportion power calculation for binomial distribution (arcsine transformation)</h1> +<h2>Parameters</h2> +<ul><li>Target measure: Significance level</li> +<li>alternative: greater</li> +</ul> +DATE<br /> +<table border="1"> +<tr><td></td><td>Parameters</td></tr> +<tr><td>h</td><td>0.3</td></tr> +<tr><td>n</td><td>30</td></tr> +<tr><td>sig.level</td><td>0.38821</td></tr> +<tr><td>power</td><td>0.81</td></tr> +</table> + +<p class='character'><strong>Note:</strong> same sample sizes</p> + +<p class='character'>Interpretation of effect size <strong>h</strong> (according to Cohen):</p> +<table border="1"> +<tr><td>small</td><td>medium</td><td>large</td></tr> +<tr><td>0.2</td><td>0.5</td><td>0.8</td></tr> +</table> +<h1>Mean power calculation for normal distribution with known variance</h1> +<h2>Parameters</h2> +<ul><li>Target measure: Significance level</li> +<li>alternative: two.sided</li> +</ul> +DATE<br /> +<table border="1"> +<tr><td></td><td>Parameters</td></tr> +<tr><td>d</td><td>0.3</td></tr> +<tr><td>n</td><td>30</td></tr> +<tr><td>sig.level</td><td>0.40906</td></tr> +<tr><td>power</td><td>0.8</td></tr> +</table> + +<p class='character'>Interpretation of effect size <strong>d</strong> (according to Cohen):</p> +<table border="1"> +<tr><td>small</td><td>medium</td><td>large</td></tr> +<tr><td>0.2</td><td>0.5</td><td>0.8</td></tr> +</table> +<h1>Multiple regression power calculation</h1> +<h2>Parameters</h2> +<ul><li>Target measure: Parameter count</li> +</ul> +DATE<br /> +<table border="1"> +<tr><td></td><td>Parameters</td></tr> +<tr><td>u</td><td>3.4454</td></tr> +<tr><td>v</td><td>30</td></tr> +<tr><td>f2</td><td>0.3</td></tr> +<tr><td>sig.level</td><td>0.1</td></tr> +<tr><td>power</td><td>0.8</td></tr> +</table> + +<p class='character'>Interpretation of effect size <strong>f<sup>2</sup></strong> (according to Cohen):</p> +<table border="1"> +<tr><td>small</td><td>medium</td><td>large</td></tr> +<tr><td>0.02</td><td>0.15</td><td>0.35</td></tr> +</table> |
From: Thomas F. <tho...@ru...> - 2015-01-15 13:55:36
|
Git commit 4688b078bace070aa311bd2b003fbdee53bec4ff by Thomas Friedrichsmeier. Committed on 15/01/2015 at 13:45. Pushed by tfry into branch 'master'. Some small tweaks to packaging scripts: - Roxygenize only distribution packages by default - Check if translations are present when creating tarball M +5 -0 scripts/makedist.sh M +10 -5 scripts/roxygenize.sh http://commits.kde.org/rkward/4688b078bace070aa311bd2b003fbdee53bec4ff diff --git a/scripts/makedist.sh b/scripts/makedist.sh index 01733de..c9d28e2 100755 --- a/scripts/makedist.sh +++ b/scripts/makedist.sh @@ -5,6 +5,11 @@ BASEDIR=`pwd` OLDVERSION=`${BASEDIR}/scripts/getversion.sh` VERSION=`${BASEDIR}/scripts/getversion.sh ${1}` +if [ ! -d "$BASEDIR/i18n/po" ]; then + echo "Translations are missing!" + exit 1 +fi + mkdir $BASEDIR/disttemp DISTDIRREL=rkward-$VERSION DISTDIR=$BASEDIR/disttemp/$DISTDIRREL diff --git a/scripts/roxygenize.sh b/scripts/roxygenize.sh index b95bfc5..0b65c83 100755 --- a/scripts/roxygenize.sh +++ b/scripts/roxygenize.sh @@ -3,13 +3,18 @@ cd `dirname $0`/.. BASEDIR=`pwd` +PACKAGES="'${BASEDIR}/rkward/rbackend/rpackages/rkward/'" + # currently excluded due to missing support for slots in roxygen2: + # '${BASEDIR}/rkward/rbackend/rpackages/rkwardtests/' +if [ "$1" = "--all" ]; then +PACKAGES="${PACKAGES}, \ + '${BASEDIR}/packages/XiMpLe/', + '${BASEDIR}/packages/rkwarddev/'" +fi + echo " library (roxygen2) - packages <- c ( '${BASEDIR}/rkward/rbackend/rpackages/rkward/', - # '${BASEDIR}/rkward/rbackend/rpackages/rkwardtests/', # currently excluded due to missing support for slots in roxygen2 - '${BASEDIR}/packages/XiMpLe/', - '${BASEDIR}/packages/rkwarddev/' - ) + packages <- c ($PACKAGES) for (package in packages) { dummy <- roxygen2:::source_package (package) # See https://github.com/klutometis/roxygen/issues/167 roxygenize (package) |
From: Thomas F. <tho...@ru...> - 2015-01-14 19:18:02
|
Git commit 39471aeff9d27db8ad8eebfa76dc56ba1db95434 by Thomas Friedrichsmeier. Committed on 13/01/2015 at 20:18. Pushed by tfry into branch 'master'. Start working on a way to import translations from KDE l10n to releases / git clones / dailies M +3 -0 .gitignore D +0 -12 scripts/import_lp_translations.sh A +95 -0 scripts/import_translations.py http://commits.kde.org/rkward/39471aeff9d27db8ad8eebfa76dc56ba1db95434 diff --git a/.gitignore b/.gitignore index 9dfb210..94961bd 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,6 @@ rkward/version.h tests/make_plugintests.txt # Message templates should not be in the repo *.pot +# General purpose temp directory for scripts +scripts/tmp/ + diff --git a/scripts/import_lp_translations.sh b/scripts/import_lp_translations.sh deleted file mode 100755 index e72b334..0000000 --- a/scripts/import_lp_translations.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -cd `dirname $0`/.. -BASEDIR=`pwd` - -cd ${BASEDIR}/po/ -# BZR_HOME=/tmp to achieve anonymous checkout -BZR_HOME=/tmp bzr branch lp:~rkward-devel/rkward/translation-export -cp -a translation-export/po/* . - -rm -rf translation-export - -svn status diff --git a/scripts/import_translations.py b/scripts/import_translations.py new file mode 100755 index 0000000..7a47b4e --- /dev/null +++ b/scripts/import_translations.py @@ -0,0 +1,95 @@ +#! /usr/bin/python +# *************************************************************************** +# import_translations - description +# ------------------- +# begin : Jan 2015 +# copyright : (C) 2015 by Thomas Friedrichsmeier +# email : tf...@us... +# *************************************************************************** +# +# *************************************************************************** +# * * +# * This program is free software; you can redistribute it and/or modify * +# * it under the terms of the GNU General Public License as published by * +# * the Free Software Foundation; either version 2 of the License, or * +# * (at your option) any later version. * +# * * +# *************************************************************************** +# +# Somewhat experimental script to import translations from KDE l10n infrastructure. +# Imports specified - or all - languages to tmp/export . +# Imported po-files are renamed according to rkward's naming scheme, and all +# po-file comments are stripped / replaced with a message to discourage accidental +# editing. +# Modelled - to some degree - after l10n.rb from releaseme. + +import sys +import subprocess +import os +import codecs +import re + +SVNROOT = "svn://anonsvn.kde.org/home/kde/trunk/l10n-kde4/" +RKWARDSVNPATH = "messages/playground-edu/" +SCRIPTDIR = os.path.dirname (os.path.realpath (sys.argv[0])) +TMPDIR = os.path.join (SCRIPTDIR, "tmp") +EXPORTDIR = os.path.join (SCRIPTDIR, "tmp", "export") +if not os.path.exists (TMPDIR): + os.makedirs (TMPDIR) +if not os.path.exists (EXPORTDIR): + os.makedirs (os.path.join (EXPORTDIR, "plugins")) + +if (len (sys.argv) > 1): + LANGUAGES = sys.argv[1:] +else: + LANGUAGES = subprocess.check_output (["svn", "cat", SVNROOT + "subdirs"]).split () +LANGUAGES = LANGUAGES +print ("Languages: " + ", ".join (LANGUAGES)) + +PONAMES = [] +messagessh = codecs.open (os.path.join (SCRIPTDIR, "..", "Messages.sh"), 'r', 'utf-8') +for line in messagessh: + match = re.search ("(rkward[^\s]*)\.pot", line) + if (match != None): + PONAMES.append (match.group (1) + ".po") +print ("POs: " + ", ".join (PONAMES)) +PONAMES = set (PONAMES) +messagessh.close () + +for lang in LANGUAGES: + os.chdir (TMPDIR) + try: + pofiles = subprocess.check_output (["svn", "list", SVNROOT + lang + "/" + RKWARDSVNPATH]).split ('\n') + except: + continue + pofiles = list (set (pofiles) & PONAMES) + if (len (pofiles) < 1): + continue + langdir = os.path.join (TMPDIR, lang) + if not os.path.exists (langdir): + subprocess.call (["svn", "co", SVNROOT + lang + "/" + RKWARDSVNPATH, lang, "--depth", "empty"]) + os.chdir (langdir) + subprocess.call (["svn", "up"] + pofiles) + os.chdir (TMPDIR) + for pofile in pofiles: + if (pofile == "rkward.po"): + outfile = os.path.join (EXPORTDIR, "rkward." + lang + ".po") + else: + outfile = os.path.join (EXPORTDIR, "plugins", re.sub ("po$", lang + ".po", pofile)) + print ("writing " + outfile) + pf = codecs.open (os.path.join (langdir, pofile), 'r', 'utf-8') + of = codecs.open (outfile, 'w', 'utf-8') + prev_was_comment = False + for line in pf: + if (line.startswith ("#")): + if (line.startswith ("#:")): + if not prev_was_comment: + of.write ("#: translation_export.do_not_modify_here:0\n") + prev_was_comment = True + else: + continue + else: + of.write (line) + prev_was_comment = False + pf.close () + of.close () |
From: Yuri C. <yu...@uk...> - 2015-01-13 18:36:58
|
Git commit d3ba84222d0e3b68e7786404872c2fce6eb5f867 by Yuri Chornoivan. Committed on 13/01/2015 at 06:39. Pushed by yurchor into branch 'master'. Fix typos M +1 -1 rkward/plugins/analysis/power/Poweranalysis.js M +5 -5 rkward/plugins/analysis/power/Poweranalysis.rkh M +6 -6 rkward/plugins/rkwarddev_scripts/rkwarddev_power_plugin_script.R http://commits.kde.org/rkward/d3ba84222d0e3b68e7786404872c2fce6eb5f867 diff --git a/rkward/plugins/analysis/power/Poweranalysis.js b/rkward/plugins/analysis/power/Poweranalysis.js index 18aba7c..00b16c8 100644 --- a/rkward/plugins/analysis/power/Poweranalysis.js +++ b/rkward/plugins/analysis/power/Poweranalysis.js @@ -170,7 +170,7 @@ function printout(){ var drpPwrStat = getValue("drp_pwr_stat"); var radPwrParam = getValue("rad_pwr_param"); - echo("\t# Catch errors due to unsuitable data\n" + "\tif(class(pwr.result) == \"try-error\"){\n" + "\t\trk.print(\"Power anaylsis not possible with the data you provided\")\n" + "\t\treturn()\n\t}\n\n" + "\t# Prepare printout\n" + "\tnote <- pwr.result[[\"note\"]]\n" + "\tparameters <- list(\"Target measure\"=\"" + radPwrParam + "\")\n" + "\tif(!is.null(pwr.result[[\"alternative\"]])){\n\t\tparameters[[\"alternative\"]] <- pwr.result[[\"alternative\"]]\n\t}\n\n" + "\trk.header(pwr.result[[\"method\"]], parameters=parameters)\n" + "\tpwr.result[c(\"method\", \"note\", \"alternative\")] <- NULL\n" + "\tpwr.result <- as.data.frame(unlist(pwr.result))\n" + "\tcolnames(pwr.result) <- \"Parameters\"\n\n" + "\trk.results(pwr.result)\n" + "\tif(!is.null(note)){\n\t\trk.print(paste(\"<strong>Note:</strong> \", note))\n\t}\n\n"); + echo("\t# Catch errors due to unsuitable data\n" + "\tif(class(pwr.result) == \"try-error\"){\n" + "\t\trk.print(\"Power analysis not possible with the data you provided\")\n" + "\t\treturn()\n\t}\n\n" + "\t# Prepare printout\n" + "\tnote <- pwr.result[[\"note\"]]\n" + "\tparameters <- list(\"Target measure\"=\"" + radPwrParam + "\")\n" + "\tif(!is.null(pwr.result[[\"alternative\"]])){\n\t\tparameters[[\"alternative\"]] <- pwr.result[[\"alternative\"]]\n\t}\n\n" + "\trk.header(pwr.result[[\"method\"]], parameters=parameters)\n" + "\tpwr.result[c(\"method\", \"note\", \"alternative\")] <- NULL\n" + "\tpwr.result <- as.data.frame(unlist(pwr.result))\n" + "\tcolnames(pwr.result) <- \"Parameters\"\n\n" + "\trk.results(pwr.result)\n" + "\tif(!is.null(note)){\n\t\trk.print(paste(\"<strong>Note:</strong> \", note))\n\t}\n\n"); if(drpPwrStat == "pwr.t.test" | drpPwrStat == "pwr.norm.test") { echo("\trk.print(\"Interpretation of effect size <strong>d</strong> (according to Cohen):\")\n" + "\trk.results(data.frame(small=0.2, medium=0.5, large=0.8))\n"); } diff --git a/rkward/plugins/analysis/power/Poweranalysis.rkh b/rkward/plugins/analysis/power/Poweranalysis.rkh index 838ec81..fd40680 100644 --- a/rkward/plugins/analysis/power/Poweranalysis.rkh +++ b/rkward/plugins/analysis/power/Poweranalysis.rkh @@ -6,7 +6,7 @@ Power analysis </title> <summary> - Perform power anaylsis for a variety of statistcal methods. + Perform power analysis for a variety of statistical methods. </summary> <usage> Given three of the parameters 'power of test', @@ -49,15 +49,15 @@ <caption id="frm_Knwnmsrs" /> <caption id="frm_spnbPP0801" /> <setting id="spn_Power"> - Targetted power of test (1 minus Type II error probability) + Targeted power of test (1 minus Type II error probability) </setting> <caption id="frm_sD301D3011" /> <setting id="pwr_spin_df"> - Only shown for chi-square statistics: Targetted degrees of freedom. As a reminder, this is (rows − 1)×(columns − 1) for a test of independence, + Only shown for chi-square statistics: Targeted degrees of freedom. As a reminder, this is (rows − 1)×(columns − 1) for a test of independence, and (cells − 1) for a test of goodness of fit. </setting> <setting id="pwr_spin_dfu"> - Only shown for general linear model: Targetted numerator degrees of freedom. As a reminder, this is the number of parameters to estimate, or number of groups/samples minus 1. + Only shown for general linear model: Targeted numerator degrees of freedom. As a reminder, this is the number of parameters to estimate, or number of groups/samples minus 1. </setting> <setting id="pwr_spin_dfv"> Only shown for general linear model: Available denominator degrees of freedom / degrees of freedom of the error term. @@ -76,7 +76,7 @@ </setting> <caption id="frm_spnSS00501" /> <setting id="spn_Sgnfcncl"> - Targetted level of significance + Targeted level of significance </setting> </settings> <related> diff --git a/rkward/plugins/rkwarddev_scripts/rkwarddev_power_plugin_script.R b/rkward/plugins/rkwarddev_scripts/rkwarddev_power_plugin_script.R index f73b9fb..0c5e34f 100644 --- a/rkward/plugins/rkwarddev_scripts/rkwarddev_power_plugin_script.R +++ b/rkward/plugins/rkwarddev_scripts/rkwarddev_power_plugin_script.R @@ -82,12 +82,12 @@ pwr.proptype.drop <- rk.XML.dropdown("Samples", ), help=FALSE, # In the help file, same as t.test dropdown id.name="drp_pwr_proptype") -pwr.input.power <- rk.XML.spinbox(label="Power", min=0, max=1, initial=0.8, help="Targetted power of test (1 minus Type II error probability)") +pwr.input.power <- rk.XML.spinbox(label="Power", min=0, max=1, initial=0.8, help="Targeted power of test (1 minus Type II error probability)") pwr.input.df <- rk.XML.spinbox(label="Degrees of freedom", id.name="pwr_spin_df", min=1, real=FALSE, initial=30, - help="Only shown for chi-square statistics: Targetted degrees of freedom. As a reminder, this is (rows − 1)×(columns − 1) for a test of independence, + help="Only shown for chi-square statistics: Targeted degrees of freedom. As a reminder, this is (rows − 1)×(columns − 1) for a test of independence, and (cells − 1) for a test of goodness of fit.") pwr.input.dfu <- rk.XML.spinbox(label="Degrees of freedom for numerator", id.name="pwr_spin_dfu", min=1, real=FALSE, initial=30, - help="Only shown for general linear model: Targetted numerator degrees of freedom. As a reminder, this is the number of parameters to estimate, or number of groups/samples minus 1.") + help="Only shown for general linear model: Targeted numerator degrees of freedom. As a reminder, this is the number of parameters to estimate, or number of groups/samples minus 1.") pwr.input.dfv <- rk.XML.spinbox(label="Degrees of freedom for denominator", id.name="pwr_spin_dfv", min=1, real=FALSE, initial=30, help="Only shown for general linear model: Available denominator degrees of freedom / degrees of freedom of the error term. As a reminder, this is the total number of observations minus numerator degrees of freedom minus 1, or total number of observations minus number of groups/samples.") @@ -118,7 +118,7 @@ pwr.txt.effect.e2 <- rk.XML.text("Measure for selected method is <b>Eta<sup>2</s pwr.txt.effect.f2 <- rk.XML.text("Measure for selected method is <b>Cohen's f<sup>2</sup></b>", id.name="pwr_txt_efct_f2") pwr.txt.effect.w <- rk.XML.text("Measure for selected method is <b>Cohen's w</b>", id.name="pwr_txt_efct_w") pwr.txt.effect.h <- rk.XML.text("Measure for selected method is <b>Cohen's h</b>", id.name="pwr_txt_efct_h") -pwr.input.signif <- rk.XML.spinbox(label="Significance level", min=0, max=1, initial=0.05, help="Targetted level of significance") +pwr.input.signif <- rk.XML.spinbox(label="Significance level", min=0, max=1, initial=0.05, help="Targeted level of significance") save.results.pwr <- rk.XML.saveobj("Save results to workspace", initial="pwr.result", @@ -466,7 +466,7 @@ pwr.js.print <- rk.paste.JS( echo( "\t# Catch errors due to unsuitable data\n", "\tif(class(pwr.result) == \"try-error\"){\n", - "\t\trk.print(\"Power anaylsis not possible with the data you provided\")\n", + "\t\trk.print(\"Power analysis not possible with the data you provided\")\n", "\t\treturn()\n\t}\n\n", "\t# Prepare printout\n", "\tnote <- pwr.result[[\"note\"]]\n", @@ -508,7 +508,7 @@ pwr.js.print <- rk.paste.JS( ############ ## help file -pwr.rkh.summary <- rk.rkh.summary("Perform power anaylsis for a variety of statistcal methods.") +pwr.rkh.summary <- rk.rkh.summary("Perform power analysis for a variety of statistcal methods.") pwr.rkh.usage <- rk.rkh.usage("Given three of the parameters 'power of test', 'sample size', 'effect size', and 'significance level', this plugin will |
From: Thomas F. <tho...@ru...> - 2015-01-12 21:13:05
|
Git commit 3fa7111bcc1b26e378fba21a8192c3a08f109660 by Thomas Friedrichsmeier. Committed on 12/01/2015 at 21:10. Pushed by tfry into branch 'master'. New attempt at fixing the hang on exit: Do not kill the backend process from the transmitter thread at all. It should be perfectly fine to do this via the destructor from the main thread. Note that the backend's signal for quitting is losing the connection. M +1 -4 rkward/rbackend/rkfrontendtransmitter.cpp http://commits.kde.org/rkward/3fa7111bcc1b26e378fba21a8192c3a08f109660 diff --git a/rkward/rbackend/rkfrontendtransmitter.cpp b/rkward/rbackend/rkfrontendtransmitter.cpp index 99eab9b..e992de0 100644 --- a/rkward/rbackend/rkfrontendtransmitter.cpp +++ b/rkward/rbackend/rkfrontendtransmitter.cpp @@ -122,10 +122,6 @@ void RKFrontendTransmitter::run () { RK_ASSERT (false); return; } - - connection->close (); - backend->waitForFinished (); - delete backend; // otherwise it will be deleted via the constructor from the main thread, which can cause hangs. } void RKFrontendTransmitter::connectAndEnterLoop () { @@ -193,6 +189,7 @@ void RKFrontendTransmitter::writeRequest (RBackendRequest *request) { void RKFrontendTransmitter::handleTransmissionError (const QString &message) { RK_TRACE (RBACKEND); + connection->close (); RBackendRequest* req = new RBackendRequest (false, RBackendRequest::BackendExit); req->params["message"] = message; RKRBackendEvent* event = new RKRBackendEvent (req); |
From: Thomas F. <tho...@ru...> - 2015-01-12 20:19:55
|
Git commit a7fc57f115fe40e38a2d85997baada77dfbd14b5 by Thomas Friedrichsmeier. Committed on 11/01/2015 at 20:58. Pushed by tfry into branch 'master'. Generate files for power analysis plugin M +2 -0 ChangeLog M +4 -0 rkward/plugins/analysis.pluginmap A +203 -0 rkward/plugins/analysis/power/Poweranalysis.js A +93 -0 rkward/plugins/analysis/power/Poweranalysis.rkh A +248 -0 rkward/plugins/analysis/power/Poweranalysis.xml M +4 -3 rkward/plugins/rkwarddev_scripts/rkwarddev_power_plugin_script.R http://commits.kde.org/rkward/a7fc57f115fe40e38a2d85997baada77dfbd14b5 diff --git a/ChangeLog b/ChangeLog index 5e5ecfb..5666a56 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,5 @@ +- Added power analysis plugin (already existed as separate plugin) + - TODO: add automated tests - <matrix> element gains options min_rows and min_columns, and the details of fixed_width="true" have been improved - Fixed: <valueslot>s were quirky with respect to showing as invalid - Fix a hang-on-exit issue diff --git a/rkward/plugins/analysis.pluginmap b/rkward/plugins/analysis.pluginmap index 39b6ec3..28ae0eb 100644 --- a/rkward/plugins/analysis.pluginmap +++ b/rkward/plugins/analysis.pluginmap @@ -57,6 +57,9 @@ <!-- regression --> <component type="standard" id="linear_regression" file="analysis/regression/linear_regression.xml" label="Linear Regression" /> + + <!-- Power analysis --> + <component type="standard" id="power_analysis" file="analysis/power/Poweranalysis.xml" label="Power Analysis" i18n_context="Power of tests" /> </components> <hierarchy> @@ -65,6 +68,7 @@ <entry component="basic_statistics" group="descriptives"/> <entry component="descriptive" group="descriptives"/> + <entry component="power_analysis"/> <menu id="correlation" label="Correlation"> <entry component="corr_matrix" /> <entry component="cor_graph" /> diff --git a/rkward/plugins/analysis/power/Poweranalysis.js b/rkward/plugins/analysis/power/Poweranalysis.js new file mode 100644 index 0000000..18aba7c --- /dev/null +++ b/rkward/plugins/analysis/power/Poweranalysis.js @@ -0,0 +1,203 @@ +// this code was generated using the rkwarddev package. +//perhaps don't make changes here, but in the rkwarddev script instead! + + + +function preprocess(){ + // add requirements etc. here + echo("require(pwr)\n"); +} + +function calculate(){ + // read in variables from dialog + var drpPwrStat = getValue("drp_pwr_stat"); + var spnNmbrfgrp = getValue("spn_Nmbrfgrp"); + var drpPwrType = getValue("drp_pwr_type"); + var drpPwrProptype = getValue("drp_pwr_proptype"); + var drpPwrHypothesis = getValue("drp_pwr_hypothesis"); + var radEffctEta = getValue("rad_effct_eta"); + var radPwrParam = getValue("rad_pwr_param"); + var spnPower = getValue("spn_Power"); + var pwrSpinDf = getValue("pwr_spin_df"); + var pwrSpinDfu = getValue("pwr_spin_dfu"); + var pwrSpinDfv = getValue("pwr_spin_dfv"); + var pwrSpinSample0 = getValue("pwr_spin_sample0"); + var pwrSpinSample1 = getValue("pwr_spin_sample1"); + var pwrSpinSample2 = getValue("pwr_spin_sample2"); + var spnEffectsz = getValue("spn_Effectsz"); + var spnSgnfcncl = getValue("spn_Sgnfcncl"); + var svbSvrsltst = getValue("svb_Svrsltst"); + + // the R code to be evaluated + echo("\tpwr.result <- try(\n\t\t"); + if(drpPwrStat == "pwr.t.test") { + if(drpPwrType == "two.sample.diff") { + echo("pwr.t2n.test("); + if(radPwrParam != "Sample size") { + echo("\n\t\t\tn1=" + pwrSpinSample1 + ",\n\t\t\tn2=" + pwrSpinSample2); + } else { + echo("\n\t\t\tn1=" + pwrSpinSample1 + ","); + } + } else { + echo("pwr.t.test("); + if(radPwrParam != "Sample size") { + echo("\n\t\t\tn=" + pwrSpinSample0); + } + } + if(radPwrParam != "Effect size") { + if(radPwrParam != "Sample size") { + echo(","); + } + echo("\n\t\t\td=" + spnEffectsz); + } + } + if(drpPwrStat == "pwr.r.test") { + echo("pwr.r.test("); + if(radPwrParam != "Sample size") { + echo("\n\t\t\tn=" + pwrSpinSample0); + } + if(radPwrParam != "Effect size") { + if(radPwrParam != "Sample size") { + echo(","); + } + echo("\n\t\t\tr=" + spnEffectsz); + } + } + if(drpPwrStat == "pwr.anova.test") { + echo("pwr.anova.test("); + echo("\n\t\t\tk=" + spnNmbrfgrp); + if(radPwrParam != "Sample size") { + echo(",\n\t\t\tn=" + pwrSpinSample0); + } + if(radPwrParam != "Effect size") { + if(radEffctEta == "f") { + echo(",\n\t\t\tf=" + spnEffectsz); + } else { + echo(",\n\t\t\tf=sqrt(" + spnEffectsz + "/(1-" + spnEffectsz + ")) # calculate f from eta squared"); + } + } + } + if(drpPwrStat == "pwr.f2.test") { + echo("pwr.f2.test("); + if(radPwrParam != "Parameter count") { + echo("\n\t\t\tu=" + pwrSpinDfu); + } + if(radPwrParam != "Sample size") { + if(radPwrParam != "Parameter count") { + echo(","); + } + echo("\n\t\t\tv=" + pwrSpinDfv); + } + if(radPwrParam != "Effect size") { + echo(",\n\t\t\tf2=" + spnEffectsz); + } + } + if(drpPwrStat == "pwr.chisq.test") { + echo("pwr.chisq.test("); + if(radPwrParam != "Effect size") { + echo("\n\t\t\tw=" + spnEffectsz); + } + if(radPwrParam != "Sample size") { + if(radPwrParam != "Effect size") { + echo(","); + } + echo("\n\t\t\tN=" + pwrSpinSample0); + } + echo(",\n\t\t\tdf=" + pwrSpinDf); + } + if(drpPwrStat == "pwr.p.test") { + if(drpPwrProptype == "two.sample.same") { + echo("pwr.2p.test("); + } + if(drpPwrProptype == "two.sample.diff") { + echo("pwr.2p2n.test("); + } + if(drpPwrProptype == "one.sample") { + echo("pwr.p.test("); + } + if(radPwrParam != "Effect size") { + echo("\n\t\t\th=" + spnEffectsz); + } + if(radPwrParam != "Sample size") { + if(radPwrParam != "Effect size") { + echo(","); + } + if(drpPwrProptype != "two.sample.diff") { + echo("\n\t\t\tn=" + pwrSpinSample0); + } else { + echo("\n\t\t\tn1=" + pwrSpinSample1 + ",\n\t\t\tn2=" + pwrSpinSample2); + } + } else if(drpPwrProptype == "two.sample.diff") { + echo(",\n\t\t\tn1=" + pwrSpinSample1); + } + } + if(drpPwrStat == "pwr.norm.test") { + echo("pwr.norm.test("); + if(radPwrParam != "Effect size") { + echo("\n\t\t\td=" + spnEffectsz); + } + if(radPwrParam != "Sample size") { + if(radPwrParam != "Effect size") { + echo(","); + } + echo("\n\t\t\tn=" + pwrSpinSample0); + } + } + if(radPwrParam != "Significance level") { + if(spnSgnfcncl != 0.05) { + echo("\n\t\t\tsig.level=" + spnSgnfcncl + ","); + } + } else { + echo(",\n\t\t\tsig.level=NULL"); + } + if(radPwrParam != "Power") { + echo(",\n\t\t\tpower=" + spnPower); + } + if(drpPwrStat == "pwr.t.test" & drpPwrType != "two.sample.diff" & drpPwrType != "two.sample") { + echo(",\n\t\t\ttype=\"" + drpPwrType + "\""); + } + if(drpPwrStat != "pwr.anova.test" & drpPwrStat != "pwr.f2.test" & drpPwrStat != "pwr.chisq.test") { + if(drpPwrHypothesis != "two.sided") { + echo(",\n\t\t\talternative=\"" + drpPwrHypothesis + "\""); + } + } + echo("\n\t\t)\n\t)\n\n"); +} + +function printout(){ + // printout the results + + + var drpPwrStat = getValue("drp_pwr_stat"); + var radPwrParam = getValue("rad_pwr_param"); + echo("\t# Catch errors due to unsuitable data\n" + "\tif(class(pwr.result) == \"try-error\"){\n" + "\t\trk.print(\"Power anaylsis not possible with the data you provided\")\n" + "\t\treturn()\n\t}\n\n" + "\t# Prepare printout\n" + "\tnote <- pwr.result[[\"note\"]]\n" + "\tparameters <- list(\"Target measure\"=\"" + radPwrParam + "\")\n" + "\tif(!is.null(pwr.result[[\"alternative\"]])){\n\t\tparameters[[\"alternative\"]] <- pwr.result[[\"alternative\"]]\n\t}\n\n" + "\trk.header(pwr.result[[\"method\"]], parameters=parameters)\n" + "\tpwr.result[c(\"method\", \"note\", \"alternative\")] <- NULL\n" + "\tpwr.result <- as.data.frame(unlist(pwr.result))\n" + "\tcolnames(pwr.result) <- \"Parameters\"\n\n" + "\trk.results(pwr.result)\n" + "\tif(!is.null(note)){\n\t\trk.print(paste(\"<strong>Note:</strong> \", note))\n\t}\n\n"); + if(drpPwrStat == "pwr.t.test" | drpPwrStat == "pwr.norm.test") { + echo("\trk.print(\"Interpretation of effect size <strong>d</strong> (according to Cohen):\")\n" + "\trk.results(data.frame(small=0.2, medium=0.5, large=0.8))\n"); + } + if(drpPwrStat == "pwr.r.test") { + echo("\trk.print(\"Interpretation of effect size <strong>r</strong> (according to Cohen):\")\n" + "\trk.results(data.frame(small=0.1, medium=0.3, large=0.5))\n"); + } + if(drpPwrStat == "pwr.f2.test") { + echo("\trk.print(\"Interpretation of effect size <strong>f<sup>2</sup></strong> (according to Cohen):\")\n" + "\trk.results(data.frame(small=0.02, medium=0.15, large=0.35))\n"); + } + if(drpPwrStat == "pwr.anova.test") { + echo("\trk.print(\"Interpretation of effect size <strong>f</strong> (according to Cohen):\")\n" + "\trk.results(data.frame(small=0.1, medium=0.25, large=0.4))\n"); + } + if(drpPwrStat == "pwr.chisq.test") { + echo("\trk.print(\"Interpretation of effect size <strong>w</strong> (according to Cohen):\")\n" + "\trk.results(data.frame(small=0.1, medium=0.3, large=0.5))\n"); + } + if(drpPwrStat == "pwr.p.test") { + echo("\trk.print(\"Interpretation of effect size <strong>h</strong> (according to Cohen):\")\n" + "\trk.results(data.frame(small=0.2, medium=0.5, large=0.8))\n"); + } + //// save result object + // read in saveobject variables + var svbSvrsltst = getValue("svb_Svrsltst"); + var svbSvrsltstActive = getValue("svb_Svrsltst.active"); + var svbSvrsltstParent = getValue("svb_Svrsltst.parent"); + // assign object to chosen environment + if(svbSvrsltstActive) { + echo(".GlobalEnv$" + svbSvrsltst + " <- pwr.result\n"); + } + +} + diff --git a/rkward/plugins/analysis/power/Poweranalysis.rkh b/rkward/plugins/analysis/power/Poweranalysis.rkh new file mode 100644 index 0000000..838ec81 --- /dev/null +++ b/rkward/plugins/analysis/power/Poweranalysis.rkh @@ -0,0 +1,93 @@ +<!DOCTYPE rkhelp > +<document> + <!-- this code was generated using the rkwarddev package. + perhaps don't make changes here, but in the rkwarddev script instead! --> + <title> + Power analysis + </title> + <summary> + Perform power anaylsis for a variety of statistcal methods. + </summary> + <usage> + Given three of the parameters 'power of test', + 'sample size', 'effect size', and 'significance level', this plugin will + estimate the fourth, i.e. for example the test power of a t.test at a given + sample size, effect size, and level of significance. On the left hand, specify the + statistical method, on the right hand side, enter the values of the given + parameters. In the control in the middle, select which of the parameters to estimate. + + + Note that in some cases it will not be possible to estimate a (finite) parameter at the given + specifications. In general, this means that you have to increase sample size(s) or effect size, + or decrease effect power or parameter count. + </usage> + <!-- <section id="sct_EDITORDE" title="EDIT OR DELETE ME"> + EDIT OR DELETE ME + </section> --> + <settings> + <caption id="frm_SttstclM" /> + <setting id="drp_pwr_stat"> + Specify the statistical method to perform power estimation for + </setting> + <setting id="spn_Nmbrfgrp"> + Number of groups. For ANOVA, only. + </setting> + <setting id="drp_pwr_type"> + Only enabled where applicable. Specify the nature of samples used in the test. For samples of different sizes, only one sample size can be estimated. + </setting> + <setting id="drp_pwr_hypothesis"> + Specify the hypothesis to use. Note that for the one-sided hypothesis "first is greater", + a positive effect size is expected. For "second is greater", a negative effect size is expected. + </setting> + <setting id="rad_effct_eta"> + Only shown where applicable. Allows you to select, whether to specify the effect size as Cohen's f, or as Eta squared. + </setting> + <caption id="frm_Targtmsr" /> + <setting id="rad_pwr_param"> + Parameter to estimate, given the others. + </setting> + <caption id="frm_Knwnmsrs" /> + <caption id="frm_spnbPP0801" /> + <setting id="spn_Power"> + Targetted power of test (1 minus Type II error probability) + </setting> + <caption id="frm_sD301D3011" /> + <setting id="pwr_spin_df"> + Only shown for chi-square statistics: Targetted degrees of freedom. As a reminder, this is (rows − 1)×(columns − 1) for a test of independence, + and (cells − 1) for a test of goodness of fit. + </setting> + <setting id="pwr_spin_dfu"> + Only shown for general linear model: Targetted numerator degrees of freedom. As a reminder, this is the number of parameters to estimate, or number of groups/samples minus 1. + </setting> + <setting id="pwr_spin_dfv"> + Only shown for general linear model: Available denominator degrees of freedom / degrees of freedom of the error term. + As a reminder, this is the total number of observations minus numerator degrees of freedom minus 1, or total number of observations minus number of groups/samples. + </setting> + <caption id="frm_sS0301F130" /> + <setting id="pwr_spin_sample0"> + Sample size. Note that depending on the selected method, this can mean observations per sample, per group, or in total. Make sure to read the note shown below the control. + </setting> + <caption id="frm_sEE0311MCM" /> + <setting id="spn_Effectsz"> + Minimum detectable effect size. Note that effect size specifications differ between the available methods. Be sure to read the note shown below the control. + + + As a reminder, for mapping between cohen's f and Eta² use f² = Eta² / (1 − Eta²) + </setting> + <caption id="frm_spnSS00501" /> + <setting id="spn_Sgnfcncl"> + Targetted level of significance + </setting> + </settings> + <related> + <ul> + <li> + <link href="rkward://rhelp/pwr"> + Description of the R package "pwr", used to perform the power calculations. + </link> + </li> + </ul> + </related> + <technical> + </technical> +</document> diff --git a/rkward/plugins/analysis/power/Poweranalysis.xml b/rkward/plugins/analysis/power/Poweranalysis.xml new file mode 100644 index 0000000..cd25f87 --- /dev/null +++ b/rkward/plugins/analysis/power/Poweranalysis.xml @@ -0,0 +1,248 @@ +<!DOCTYPE rkplugin > +<document> + <!-- this code was generated using the rkwarddev package. + perhaps don't make changes here, but in the rkwarddev script instead! --> + <code file="Poweranalysis.js" /> + <help file="Poweranalysis.rkh" /> + <logic> + <convert id="pwr_lgc_power" sources="rad_pwr_param.string" mode="equals" standard="Power" /> + <convert id="pwr_lgc_sample" sources="rad_pwr_param.string" mode="equals" standard="Sample size" /> + <convert id="pwr_lgc_effect" sources="rad_pwr_param.string" mode="equals" standard="Effect size" /> + <convert id="pwr_lgc_signif" sources="rad_pwr_param.string" mode="equals" standard="Significance level" /> + <convert id="pwr_lgc_df_u" sources="rad_pwr_param.string" mode="equals" standard="Parameter count" /> + <connect governor="pwr_lgc_power.not" client="frm_spnbPP0801.enabled" /> + <connect governor="pwr_lgc_effect.not" client="frm_sEE0311MCM.enabled" /> + <connect governor="pwr_lgc_signif.not" client="frm_spnSS00501.enabled" /> + <convert id="pwr_lgc_ttest" sources="drp_pwr_stat.string" mode="equals" standard="pwr.t.test" /> + <convert id="pwr_lgc_rtest" sources="drp_pwr_stat.string" mode="equals" standard="pwr.r.test" /> + <convert id="pwr_lgc_anova" sources="drp_pwr_stat.string" mode="equals" standard="pwr.anova.test" /> + <convert id="pwr_lgc_f2test" sources="drp_pwr_stat.string" mode="equals" standard="pwr.f2.test" /> + <convert id="pwr_lgc_chisq" sources="drp_pwr_stat.string" mode="equals" standard="pwr.chisq.test" /> + <convert id="pwr_lgc_proptest" sources="drp_pwr_stat.string" mode="equals" standard="pwr.p.test" /> + <convert id="pwr_lgc_norm" sources="drp_pwr_stat.string" mode="equals" standard="pwr.norm.test" /> + <convert id="pwr_lgc_sample_2p_same" sources="drp_pwr_proptype.string" mode="equals" standard="two.sample.same" /> + <convert id="pwr_lgc_sample_2p_diff" sources="drp_pwr_proptype.string" mode="equals" standard="two.sample.diff" /> + <convert id="pwr_lgc_sample_t_same" sources="drp_pwr_type.string" mode="equals" standard="two.sample" /> + <convert id="pwr_lgc_sample_t_diff" sources="drp_pwr_type.string" mode="equals" standard="two.sample.diff" /> + <convert id="pwr_lgc_sample_t_pairs" sources="drp_pwr_type.string" mode="equals" standard="paired" /> + <convert id="pwr_lgc_sample_t_onesample" sources="drp_pwr_type.string" mode="equals" standard="one.sample" /> + <convert id="pwr_lgc_2p" sources="pwr_lgc_sample_2p_same;pwr_lgc_proptest" mode="and" /> + <convert id="pwr_lgc_2p2n" sources="pwr_lgc_sample_2p_diff;pwr_lgc_proptest" mode="and" /> + <convert id="pwr_lgc_tsame" sources="pwr_lgc_sample_t_same;pwr_lgc_ttest" mode="and" /> + <convert id="pwr_lgc_tdiff" sources="pwr_lgc_sample_t_diff;pwr_lgc_ttest" mode="and" /> + <convert id="pwr_lgc_tpaired" sources="pwr_lgc_sample_t_pairs;pwr_lgc_ttest" mode="and" /> + <convert id="pwr_lgc_tunpaired" sources="pwr_lgc_sample_t_onesample;pwr_lgc_ttest" mode="and" /> + <connect governor="pwr_lgc_proptest.not" client="drp_pwr_type.visible" /> + <connect governor="pwr_lgc_ttest" client="drp_pwr_type.enabled" /> + <connect governor="pwr_lgc_proptest" client="drp_pwr_proptype.visible" /> + <connect governor="pwr_lgc_proptest" client="drp_pwr_proptype.enabled" /> + <connect governor="pwr_lgc_f2test" client="rad_pwr_param.opt_Prmtrcnt.enabled" /> + <connect governor="pwr_lgc_f2test.not" client="frm_sS0301F130.visible" /> + <convert id="pwr_lgc_show_df" sources="pwr_lgc_f2test;pwr_lgc_chisq" mode="or" /> + <connect governor="pwr_lgc_show_df" client="frm_sD301D3011.visible" /> + <connect governor="pwr_lgc_chisq" client="pwr_spin_df.visible" /> + <connect governor="pwr_lgc_f2test" client="pwr_spin_dfu.visible" /> + <connect governor="pwr_lgc_f2test" client="pwr_txt_dfu.visible" /> + <connect governor="pwr_lgc_f2test" client="pwr_spin_dfv.visible" /> + <connect governor="pwr_lgc_f2test" client="pwr_txt_dfv.visible" /> + <convert id="pwr_lgc_efct_d" sources="pwr_lgc_ttest;pwr_lgc_norm" mode="or" /> + <connect governor="pwr_lgc_efct_d" client="pwr_txt_efct_d.visible" /> + <connect governor="pwr_lgc_rtest" client="pwr_txt_efct_r.visible" /> + <convert id="pwr_lgc_efct_f" sources="rad_effct_eta.string" mode="equals" standard="f" /> + <convert id="pwr_lgc_efct_show_f" sources="pwr_lgc_anova;pwr_lgc_efct_f" mode="and" /> + <convert id="pwr_lgc_efct_show_e2" sources="pwr_lgc_anova;pwr_lgc_efct_f.not" mode="and" /> + <connect governor="pwr_lgc_efct_show_f" client="pwr_txt_efct_f.visible" /> + <connect governor="pwr_lgc_efct_show_e2" client="pwr_txt_efct_e2.visible" /> + <connect governor="pwr_lgc_f2test" client="pwr_txt_efct_f2.visible" /> + <connect governor="pwr_lgc_chisq" client="pwr_txt_efct_w.visible" /> + <connect governor="pwr_lgc_proptest" client="pwr_txt_efct_h.visible" /> + <connect governor="pwr_lgc_anova" client="rad_effct_eta.visible" /> + <connect governor="pwr_lgc_effect.not" client="rad_effct_eta.enabled" /> + <connect governor="pwr_lgc_anova" client="spn_Nmbrfgrp.enabled" /> + <convert id="pwr_lgc_smpl_ps" sources="pwr_lgc_tsame;pwr_lgc_tunpaired;pwr_lgc_2p" mode="or" /> + <convert id="pwr_lgc_smpl_nondefault" sources="pwr_lgc_ttest;pwr_lgc_2p;pwr_lgc_2p2n;pwr_lgc_tdiff;pwr_lgc_anova;pwr_lgc_chisq" mode="or" /> + <connect governor="pwr_lgc_smpl_ps" client="pwr_txt_smpl_ps.visible" /> + <connect governor="pwr_lgc_anova" client="pwr_txt_smpl_pg.visible" /> + <connect governor="pwr_lgc_chisq" client="pwr_txt_smpl_tt.visible" /> + <connect governor="pwr_lgc_tpaired" client="pwr_txt_smpl_pairs.visible" /> + <connect governor="pwr_lgc_smpl_nondefault.not" client="pwr_txt_smpl.visible" /> + <convert id="pwr_lgc_smpl_diff" sources="pwr_lgc_tdiff;pwr_lgc_2p2n" mode="or" /> + <connect governor="pwr_lgc_smpl_diff" client="pwr_spin_sample1.visible" /> + <connect governor="pwr_lgc_smpl_diff" client="pwr_spin_sample2.visible" /> + <connect governor="pwr_lgc_smpl_diff.not" client="pwr_spin_sample0.visible" /> + <convert id="pwr_lgc_smpl_switch" sources="pwr_lgc_sample;pwr_lgc_smpl_diff" mode="and" /> + <convert id="pwr_lgc_enable_sample_frame" sources="pwr_lgc_sample.not;pwr_lgc_smpl_switch" mode="or" /> + <connect governor="pwr_lgc_enable_sample_frame" client="frm_sS0301F130.enabled" /> + <connect governor="pwr_lgc_sample.not" client="pwr_spin_sample2.enabled" /> + <connect governor="pwr_lgc_df_u.not" client="pwr_spin_dfu.enabled" /> + <connect governor="pwr_lgc_sample.not" client="pwr_spin_dfv.enabled" /> + <connect governor="pwr_lgc_df_u.not" client="pwr_txt_dfu.enabled" /> + <connect governor="pwr_lgc_sample.not" client="pwr_txt_dfv.enabled" /> + <convert id="pwr_lgc_noalternative" sources="pwr_lgc_anova.not;pwr_lgc_f2test.not;pwr_lgc_chisq.not" mode="and" /> + <connect governor="pwr_lgc_noalternative" client="drp_pwr_hypothesis.enabled" /> + <convert id="pwr_lgc_alt_less" sources="drp_pwr_hypothesis.string" mode="equals" standard="less" /> + <convert id="pwr_lgc_alt_greater" sources="drp_pwr_hypothesis.string" mode="equals" standard="greater" /> + <convert id="pwr_lgc_pos_effect" sources="spn_Effectsz.real" mode="range" min="0" /> + <convert id="pwr_lgc_neg_effect" sources="spn_Effectsz.real" mode="range" max="0" /> + <convert id="pwr_lgc_alt_warn_neg" sources="pwr_lgc_alt_less;pwr_lgc_noalternative;pwr_lgc_pos_effect" mode="and" /> + <convert id="pwr_lgc_alt_warn_pos" sources="pwr_lgc_alt_greater;pwr_lgc_noalternative;pwr_lgc_neg_effect" mode="and" /> + <connect governor="pwr_lgc_alt_warn_neg" client="pwr_txt_hypothesis_neg.visible" /> + <connect governor="pwr_lgc_alt_warn_pos" client="pwr_txt_hypothesis_pos.visible" /> + </logic> + <dialog label="Power analysis"> + <row id="row_cSMSMSTCAN"> + <column id="clm_fSMSMSTCAN"> + <frame label="Statistical Method" id="frm_SttstclM"> + <dropdown id="drp_pwr_stat" label="Select a method"> + <option label="t-Tests of means" value="pwr.t.test" checked="true" /> + <option label="Correlation test" value="pwr.r.test" /> + <option label="ANOVA (balanced one-way)" value="pwr.anova.test" /> + <option label="General linear model" value="pwr.f2.test" /> + <option label="Chi-squared test" value="pwr.chisq.test" /> + <option label="Proportion tests" value="pwr.p.test" /> + <option label="Mean of a normal distribution (known variance)" value="pwr.norm.test" /> + </dropdown> + <spinbox label="Number of groups" id="spn_Nmbrfgrp" initial="2" min="1" type="integer" /> + <dropdown id="drp_pwr_type" label="Samples"> + <option label="Two samples (equal sizes)" value="two.sample" checked="true" /> + <option label="Two samples (different sizes)" value="two.sample.diff" /> + <option label="Single sample (test against constant)" value="one.sample" /> + <option label="Paired samples" value="paired" /> + </dropdown> + <dropdown id="drp_pwr_proptype" label="Samples"> + <option label="Two samples (equal sizes)" value="two.sample.same" checked="true" /> + <option label="Two samples (different sizes)" value="two.sample.diff" /> + <option label="One sample" value="one.sample" /> + </dropdown> + <dropdown id="drp_pwr_hypothesis" label="Using test hypothesis"> + <option label="Two-sided" value="two.sided" checked="true" /> + <option label="First is greater" value="greater" /> + <option label="Second is greater" value="less" /> + </dropdown> + <text id="pwr_txt_hypothesis_neg" type="warning"> + Hypothesis probably expects a negative effect size! + </text> + <text id="pwr_txt_hypothesis_pos" type="warning"> + Hypothesis probably expects a positive effect size! + </text> + <radio id="rad_effct_eta" label="Provided effect size"> + <option label="Cohen's f" value="f" checked="true" /> + <option label="Eta squared" value="e2" /> + </radio> + </frame> + <stretch /> + </column> + <column id="clm_fTTPPPSSEE"> + <frame label="Target measure" id="frm_Targtmsr"> + <radio id="rad_pwr_param" label="Parameter to determine"> + <option label="Power of test" value="Power" checked="true" /> + <option label="Sample size" value="Sample size" /> + <option label="Effect size" value="Effect size" /> + <option label="Significance level" value="Significance level" /> + <option label="Parameter count" value="Parameter count" id="opt_Prmtrcnt" /> + </radio> + <stretch /> + </frame> + </column> + <column id="clm_fKKPP0801P"> + <frame label="Known measures" id="frm_Knwnmsrs"> + <frame id="frm_spnbPP0801"> + <spinbox label="Power" id="spn_Power" initial="0.8" min="0" max="1" /> + </frame> + <frame id="frm_sD301D3011"> + <spinbox label="Degrees of freedom" id="pwr_spin_df" initial="30" min="1" type="integer" /> + <spinbox label="Degrees of freedom for numerator" id="pwr_spin_dfu" initial="30" min="1" type="integer" /> + <text id="pwr_txt_dfu"> + df <sub> + num + </sub> + : k − 1 + </text> + <spinbox label="Degrees of freedom for denominator" id="pwr_spin_dfv" initial="30" min="1" type="integer" /> + <text id="pwr_txt_dfv"> + df <sub> + den + </sub> + : N − k + </text> + </frame> + <frame id="frm_sS0301F130"> + <spinbox label="Sample size" id="pwr_spin_sample0" initial="30" min="1" type="integer" /> + <spinbox label="First sample size" id="pwr_spin_sample1" initial="30" min="1" type="integer" /> + <spinbox label="Second sample size" id="pwr_spin_sample2" initial="30" min="1" type="integer" /> + <text id="pwr_txt_smpl"> + Number of observations + </text> + <text id="pwr_txt_smpl_ps"> + Number of observations <b> + per sample + </b> + </text> + <text id="pwr_txt_smpl_pg"> + Number of observations <b> + per group + </b> + </text> + <text id="pwr_txt_smpl_tt"> + Number of observations <b> + in total + </b> + </text> + <text id="pwr_txt_smpl_pairs"> + Number of <b> + pairs + </b> + </text> + </frame> + <frame id="frm_sEE0311MCM"> + <spinbox label="Effect size" id="spn_Effectsz" initial="0.3" min="-1" max="1" /> + <text id="pwr_txt_efct_d"> + Measure for selected method is <b> + Cohen's d + </b> + </text> + <text id="pwr_txt_efct_r"> + Measure for selected method is <b> + Pearson's r + </b> + </text> + <text id="pwr_txt_efct_f"> + Measure for selected method is <b> + Cohen's f + </b> + </text> + <text id="pwr_txt_efct_e2"> + Measure for selected method is <b> + Eta <sup> + 2 + </sup> + </b> + </text> + <text id="pwr_txt_efct_f2"> + Measure for selected method is <b> + Cohen's f <sup> + 2 + </sup> + </b> + </text> + <text id="pwr_txt_efct_w"> + Measure for selected method is <b> + Cohen's w + </b> + </text> + <text id="pwr_txt_efct_h"> + Measure for selected method is <b> + Cohen's h + </b> + </text> + </frame> + <frame id="frm_spnSS00501"> + <spinbox label="Significance level" id="spn_Sgnfcncl" initial="0.05" min="0" max="1" /> + </frame> + <stretch /> + <saveobject label="Save results to workspace" checkable="true" initial="pwr.result" id="svb_Svrsltst" /> + </frame> + </column> + </row> + </dialog> +</document> diff --git a/rkward/plugins/rkwarddev_scripts/rkwarddev_power_plugin_script.R b/rkward/plugins/rkwarddev_scripts/rkwarddev_power_plugin_script.R index 9c9cf0b..f73b9fb 100644 --- a/rkward/plugins/rkwarddev_scripts/rkwarddev_power_plugin_script.R +++ b/rkward/plugins/rkwarddev_scripts/rkwarddev_power_plugin_script.R @@ -18,9 +18,9 @@ about.info <- rk.XML.about( author=c( person(given="Meik", family="Michalke", email="mei...@hh...", role=c("aut","cre")), - person(given="Thomas", family="Friedrichsmeier", role=c("ctb"))), + person(given="Thomas", family="Friedrichsmeier", email="tho...@ru...", role=c("ctb"))), about=list(desc="RKWard GUI to perform power analysis and sample size estimation.", - version="0.01-3", url="http://rkward.sf.net") + version="0.01-3", url="http://rkward.kde.org") ) dependencies.info <- rk.XML.dependencies( dependencies=list(rkward.min=ifelse(isTRUE(guess.getter), "0.6.0", "0.5.6"), @@ -546,7 +546,8 @@ pwr.plugin.dir <<- rk.plugin.skeleton( ), pluginmap=list(name="Power analysis", hierarchy=list("analysis")), dependencies=dependencies.info, - create=c("pmap", "xml", "js", "desc", "rkh"), +# create=c("pmap", "xml", "js", "desc", "rkh"), # standalone + create=c("xml", "js", "rkh"), overwrite=overwrite, tests=FALSE, # edit=TRUE, |
From: Thomas F. <tho...@ru...> - 2015-01-11 20:22:05
|
Git commit 90539976584607807ad67e2421cddd6d7bbfb9fb by Thomas Friedrichsmeier. Committed on 11/01/2015 at 20:21. Pushed by tfry into branch 'master'. Oh well, we'll try to avoid fast-forwarding the imported commits, next time. M +3 -0 scripts/import_external_plugin.sh http://commits.kde.org/rkward/90539976584607807ad67e2421cddd6d7bbfb9fb diff --git a/scripts/import_external_plugin.sh b/scripts/import_external_plugin.sh index e33166e..4e146bf 100755 --- a/scripts/import_external_plugin.sh +++ b/scripts/import_external_plugin.sh @@ -22,6 +22,9 @@ BASEDIR=`pwd` cd ${BASEDIR} WORKDIR=${BASEDIR}/import_tmp +# Make sure to work on an up-to-date (pushable, without fast-forwards) clone +git pull --rebase + # clone and filter external repo git clone ${EXTERNAL_REPO} import_tmp cd ${WORKDIR} |
From: Thomas F. <tho...@ru...> - 2015-01-11 20:19:03
|
Git commit e5b237ad7ce02cdb6a187c6ad1a5028c8c361ba4 by Thomas Friedrichsmeier. Committed on 11/01/2015 at 20:03. Pushed by tfry into branch 'master'. Import rk.power from external_plugins repo R +0 -0 rkward/plugins/rkwarddev_scripts/rkwarddev_power_plugin_script.R [from: rkwarddev_power_plugin_script.R - 100% similarity] http://commits.kde.org/rkward/e5b237ad7ce02cdb6a187c6ad1a5028c8c361ba4 diff --git a/rkwarddev_power_plugin_script.R b/rkward/plugins/rkwarddev_scripts/rkwarddev_power_plugin_script.R similarity index 100% rename from rkwarddev_power_plugin_script.R rename to rkward/plugins/rkwarddev_scripts/rkwarddev_power_plugin_script.R |
From: Thomas F. <tho...@ru...> - 2015-01-11 20:14:20
|
Git commit 980a5c27f9ada318d9bedf45efd124b970f90d7b by Thomas Friedrichsmeier, on behalf of Meik Michalke. Committed on 08/10/2014 at 13:17. Pushed by tfry into branch 'master'. rk.power: begin including documentation svn path=/branches/external_plugins/; revision=4887 M +24 -9 rkwarddev_power_plugin_script.R http://commits.kde.org/rkward/980a5c27f9ada318d9bedf45efd124b970f90d7b diff --git a/rkwarddev_power_plugin_script.R b/rkwarddev_power_plugin_script.R index 0770ccb..05a9f4c 100644 --- a/rkwarddev_power_plugin_script.R +++ b/rkwarddev_power_plugin_script.R @@ -18,7 +18,7 @@ about.info <- rk.XML.about( person(given="Meik", family="Michalke", email="mei...@hh...", role=c("aut","cre"))), about=list(desc="RKWard GUI to perform power analysis and sample size estimation.", - version="0.01-2", url="http://rkward.sf.net") + version="0.01-3", url="http://rkward.sf.net") ) dependencies.info <- rk.XML.dependencies( dependencies=list(rkward.min=ifelse(isTRUE(guess.getter), "0.6.0", "0.5.6"), @@ -33,12 +33,15 @@ pwr.parameter.rad <- rk.XML.radio(label="Parameter to determine", options=list( "Effect size"=c(val="Effect size"), "Significance level"=c(val="Significance level") ), id.name="rad_pwr_param", - help="foo") + help="Parameter to estimate, given the others.") pwr.parameter.twosamples.rad <- rk.XML.radio(label="Estimate", options=list( "First sample"=c(val="n1"), "Second sample"=c(val="n2", chk=TRUE) - ), id.name="rad_pwr_param_2samples") + ), id.name="rad_pwr_param_2samples", + help="Only shown when applicable: For estimating the required sample sizes for a test with two + differently sized samples, specify which should be estimated, and which is + given.") pwr.parameter.twodf.rad <- rk.XML.radio(label="Estimate", options=list( "Numerator"=c(val="u", chk=TRUE), @@ -53,8 +56,7 @@ pwr.stat.drop <- rk.XML.dropdown(label="Select a method", options=list( "Chi-squared test"=c(val="pwr.chisq.test"), "Proportion tests"=c(val="pwr.p.test"), "Mean of a normal distribution (known variance)"=c(val="pwr.norm.test") - ), id.name="drp_pwr_stat", - help="bar") + ), id.name="drp_pwr_stat") pwr.hypothesis.drop <- rk.XML.dropdown("Using test hypothesis", options=list( @@ -88,8 +90,7 @@ pwr.proptype.drop <- rk.XML.dropdown("Samples", ), id.name="drp_pwr_proptype") -pwr.input.power <- rk.XML.spinbox(label="Power", min=0, max=1, initial=0.8, - help="baz") +pwr.input.power <- rk.XML.spinbox(label="Power", min=0, max=1, initial=0.8) pwr.input.df <- rk.XML.spinbox(label="Degrees of freedom", id.name="pwr_spin_df", min=1, real=FALSE, initial=30) pwr.input.dfu <- rk.XML.spinbox(label="Degrees of freedom for numerator", id.name="pwr_spin_dfu", min=1, real=FALSE, initial=30) pwr.input.dfv <- rk.XML.spinbox(label="Degrees of freedom for denominator", id.name="pwr_spin_dfv", min=1, real=FALSE, initial=30) @@ -506,6 +507,20 @@ pwr.js.print <- rk.paste.JS( ) ) +############ +## help file + +pwr.rkh.summary <- rk.rkh.summary("Perform power anaylsis for a variety of statistcal methods.") + +pwr.rkh.usage <- rk.rkh.usage("Given three of the parameters 'power of test', + 'sample size', 'effect size', and 'significance level', this plugin will + estimate the fourth, i.e. for example the test power of a t.test at a given + sample size, effect size, and level of significance. On the left hand control, + select which of the parameters to estimate. In the middle, specify the + statistical method, on the right hand side, enter the values of the given + parameters.") + + ############# ## if you run the following function call, files will be written to tempdir! ############# @@ -524,8 +539,8 @@ pwr.plugin.dir <<- rk.plugin.skeleton( calculate=pwr.js.calc, printout=pwr.js.print), rkh=list( - summary=rk.rkh.summary("Perform power analysis and sample size estimation, using the pwr package."), - usage=rk.rkh.usage("See blow.") + summary=pwr.rkh.summary, + usage=pwr.rkh.usage ), pluginmap=list(name="Power analysis", hierarchy=list("analysis")), dependencies=dependencies.info, |
From: Thomas F. <tho...@ru...> - 2015-01-11 20:14:20
|
Git commit 0bfe8ff10b6b48c56e73b5add2db1c07a0af1593 by Thomas Friedrichsmeier. Committed on 15/10/2014 at 19:36. Pushed by tfry into branch 'master'. Complete rkh documentation. svn path=/branches/external_plugins/; revision=4907 M +17 -10 rkwarddev_power_plugin_script.R http://commits.kde.org/rkward/0bfe8ff10b6b48c56e73b5add2db1c07a0af1593 diff --git a/rkwarddev_power_plugin_script.R b/rkwarddev_power_plugin_script.R index 0e6b3c8..56b7a59 100644 --- a/rkwarddev_power_plugin_script.R +++ b/rkwarddev_power_plugin_script.R @@ -92,18 +92,21 @@ pwr.input.dfv <- rk.XML.spinbox(label="Degrees of freedom for denominator", id.n pwr.txt.dfu <- rk.XML.text("df<sub>num</sub>: k − 1", id.name="pwr_txt_dfu") pwr.txt.dfv <- rk.XML.text("df<sub>den</sub>: N − k", id.name="pwr_txt_dfv") -pwr.input.sample <- rk.XML.spinbox(label="Sample size", id.name="pwr_spin_sample0", min=1, real=FALSE, initial=30) -pwr.input.sample.n1 <- rk.XML.spinbox(label="First sample size", id.name="pwr_spin_sample1", min=1, real=FALSE, initial=30) -pwr.input.sample.n2 <- rk.XML.spinbox(label="Second sample size", id.name="pwr_spin_sample2", min=1, real=FALSE, initial=30) +pwr.input.sample <- rk.XML.spinbox(label="Sample size", id.name="pwr_spin_sample0", min=1, real=FALSE, initial=30, , + help="Sample size. Note that depending on the selected method, this can mean observations per sample, per group, or in total. Make sure to read the note shown below the control.") +pwr.input.sample.n1 <- rk.XML.spinbox(label="First sample size", id.name="pwr_spin_sample1", min=1, real=FALSE, initial=30, help=FALSE) +pwr.input.sample.n2 <- rk.XML.spinbox(label="Second sample size", id.name="pwr_spin_sample2", min=1, real=FALSE, initial=30, help=FALSE) pwr.txt.sample.default <- rk.XML.text("Number of observations", id.name="pwr_txt_smpl") pwr.txt.sample.ps <- rk.XML.text("Number of observations <b>per sample</b>", id.name="pwr_txt_smpl_ps") pwr.txt.sample.pg <- rk.XML.text("Number of observations <b>per group</b>", id.name="pwr_txt_smpl_pg") pwr.txt.sample.tt <- rk.XML.text("Number of observations <b>in total</b>", id.name="pwr_txt_smpl_tt") pwr.txt.sample.pairs <- rk.XML.text("Number of <b>pairs</b>", id.name="pwr_txt_smpl_pairs") -pwr.input.groups <- rk.XML.spinbox(label="Number of groups", min=1, real=FALSE, initial=2) +pwr.input.groups <- rk.XML.spinbox(label="Number of groups", min=1, real=FALSE, initial=2, help="Number of groups. For ANOVA, only.") -pwr.input.effect <- rk.XML.spinbox(label="Effect size", min=-1, max=1, initial=0.3) +pwr.input.effect <- rk.XML.spinbox(label="Effect size", min=-1, max=1, initial=0.3, + help="Minimum detectable effect size. Note that effect size specifications differ between the available methods. Be sure to read the note shown below the control.\n\n + As a reminder, for mapping between cohen's f and Eta² use f² = Eta² / (1 − Eta²)") # effect sizes: d, r, f, f2, w, h pwr.txt.effect.d <- rk.XML.text("Measure for selected method is <b>Cohen's d</b>", id.name="pwr_txt_efct_d") pwr.txt.effect.r <- rk.XML.text("Measure for selected method is <b>Pearson's r</b>", id.name="pwr_txt_efct_r") @@ -113,7 +116,7 @@ pwr.txt.effect.e2 <- rk.XML.text("Measure for selected method is <b>Eta<sup>2</s pwr.txt.effect.f2 <- rk.XML.text("Measure for selected method is <b>Cohen's f<sup>2</sup></b>", id.name="pwr_txt_efct_f2") pwr.txt.effect.w <- rk.XML.text("Measure for selected method is <b>Cohen's w</b>", id.name="pwr_txt_efct_w") pwr.txt.effect.h <- rk.XML.text("Measure for selected method is <b>Cohen's h</b>", id.name="pwr_txt_efct_h") -pwr.input.signif <- rk.XML.spinbox(label="Significance level", min=0, max=1, initial=0.05) +pwr.input.signif <- rk.XML.spinbox(label="Significance level", min=0, max=1, initial=0.05, help="Targetted level of significance") save.results.pwr <- rk.XML.saveobj("Save results to workspace", initial="pwr.result", @@ -508,11 +511,14 @@ pwr.rkh.summary <- rk.rkh.summary("Perform power anaylsis for a variety of stati pwr.rkh.usage <- rk.rkh.usage("Given three of the parameters 'power of test', 'sample size', 'effect size', and 'significance level', this plugin will estimate the fourth, i.e. for example the test power of a t.test at a given - sample size, effect size, and level of significance. On the left hand control, - select which of the parameters to estimate. In the middle, specify the + sample size, effect size, and level of significance. On the left hand, specify the statistical method, on the right hand side, enter the values of the given - parameters.") + parameters. In the control in the middle, select which of the parameters to estimate.\n\n + Note that in some cases it will not be possible to estimate a (finite) parameter at the given + specifications. In general, this means that you have to increase sample size(s) or effect size, + or decrease effect power or parameter count.") +pwr.rkh.related <- rk.rkh.related(rk.rkh.link ("pwr", text="Description of the R package \"pwr\", used to perform the power calculations.")) ############# ## if you run the following function call, files will be written to tempdir! @@ -533,7 +539,8 @@ pwr.plugin.dir <<- rk.plugin.skeleton( printout=pwr.js.print), rkh=list( summary=pwr.rkh.summary, - usage=pwr.rkh.usage + usage=pwr.rkh.usage, + related=pwr.rkh.related ), pluginmap=list(name="Power analysis", hierarchy=list("analysis")), dependencies=dependencies.info, |
From: Thomas F. <tho...@ru...> - 2015-01-11 20:14:14
|
Git commit f6ced56dc39d42b43f9ad38f60aa3f8af61a719a by Thomas Friedrichsmeier, on behalf of Meik Michalke. Committed on 04/10/2014 at 22:26. Pushed by tfry into branch 'master'. add first edition of new rk.power plugin svn path=/branches/external_plugins/; revision=4873 A +490 -0 rkwarddev_power_plugin_script.R http://commits.kde.org/rkward/f6ced56dc39d42b43f9ad38f60aa3f8af61a719a diff --git a/rkwarddev_power_plugin_script.R b/rkwarddev_power_plugin_script.R new file mode 100644 index 0000000..6453b25 --- /dev/null +++ b/rkwarddev_power_plugin_script.R @@ -0,0 +1,490 @@ +# the plugin code was generated by this script +# you should not change the plugin code directly, but this script +# note: this script only creates objects in your workspace, +# *EXCEPT* for the last call, see below. + +require(rkwarddev) + +local({ +# set the output directory to overwrite the actual plugin +output.dir <- tempdir() +overwrite <- TRUE +# if you set guess.getters to TRUE, the resulting code willdat need RKWard >= 0.6.0 +guess.getter <- FALSE + +about.info <- rk.XML.about( + name="rk.power", + author=c( + person(given="Meik", family="Michalke", + email="mei...@hh...", role=c("aut","cre"))), + about=list(desc="RKWard GUI to perform power analysis and sample size estimation.", + version="0.01-1", url="http://rkward.sf.net") + ) +dependencies.info <- rk.XML.dependencies( + dependencies=list(rkward.min=ifelse(isTRUE(guess.getter), "0.6.0", "0.5.6"), + package=list(c(name="pwr"))) +) + + +pwr.parameter.rad <- rk.XML.radio(label="Parameter to determine", options=list( + "Power of test"=c(val="power", chk=TRUE), + "Sample size"=c(val="sample"), + "Effect size"=c(val="effect"), + "Significance level"=c(val="significance") + ), id.name="rad_pwr_param") + +pwr.parameter.twosamples.rad <- rk.XML.radio(label="Estimate", options=list( + "First sample"=c(val="n1", chk=TRUE), + "Second sample"=c(val="n2") + ), id.name="rad_pwr_param_2samples") + +pwr.parameter.twodf.rad <- rk.XML.radio(label="Estimate", options=list( + "Numerator"=c(val="u", chk=TRUE), + "Denominator"=c(val="v") + ), id.name="rad_pwr_param_2df") + +pwr.stat.drop <- rk.XML.dropdown(label="Select a method", options=list( + "t-Tests of means"=c(val="pwr.t.test", chk=TRUE), + "Correlation test"=c(val="pwr.r.test"), + "ANOVA (balanced one-way)"=c(val="pwr.anova.test"), + "General linear model"=c(val="pwr.f2.test"), + "Chi-squared test"=c(val="pwr.chisq.test"), + "Proportion tests"=c(val="pwr.p.test"), + "Mean of a normal distribution (known variance)"=c(val="pwr.norm.test") + ), id.name="drp_pwr_stat") + +pwr.hypothesis.drop <- rk.XML.dropdown("Using test hypothesis", + options=list( + "Two-sided"=c(val="two.sided", chk=TRUE), + "First is greater"=c(val="greater"), + "Second is greater"=c(val="less") + ), + id.name="drp_pwr_hypothesis") +pwr.txt.hypothesis.neg <- rk.XML.text("Hypothesis probably expects a negative effect size!", id.name="pwr_txt_hypothesis_neg", type="warning") +pwr.txt.hypothesis.pos <- rk.XML.text("Hypothesis probably expects a positive effect size!", id.name="pwr_txt_hypothesis_pos", type="warning") + +pwr.effect.etasq.rad <- rk.XML.radio(label="Provided effect size", options=list( + "Cohen's f"=c(val="f", chk=TRUE), + "Eta squared"=c(val="e2") + ), id.name="rad_effct_eta") + +pwr.type.drop <- rk.XML.dropdown("Samples", + options=list( + "Two samples (equal sizes)"=c(val="two.sample", chk=TRUE), + "Two samples (different sizes)"=c(val="two.sample.diff"), # pwr.t2n.test + "Single sample (test against constant)"=c(val="one.sample"), + "Paired samples"=c(val="paired") + ), + id.name="drp_pwr_type") + +pwr.proptype.drop <- rk.XML.dropdown("Samples", + options=list( + "Two samples (equal sizes)"=c(val="two.sample.same", chk=TRUE), # pwr.2p.test + "Two samples (different sizes)"=c(val="two.sample.diff"), # pwr.2p2n.test + "One sample"=c(val="one.sample") # pwr.p.test + ), + id.name="drp_pwr_proptype") + +pwr.input.power <- rk.XML.spinbox(label="Power", min=0, max=1, initial=0.8) +pwr.input.df <- rk.XML.spinbox(label="Degrees of freedom", id.name="pwr_spin_df", min=1, real=FALSE, initial=30) +pwr.input.dfu <- rk.XML.spinbox(label="Degrees of freedom for numerator", id.name="pwr_spin_dfu", min=1, real=FALSE, initial=30) +pwr.input.dfv <- rk.XML.spinbox(label="Degrees of freedom for denominator", id.name="pwr_spin_dfv", min=1, real=FALSE, initial=30) + +pwr.input.sample <- rk.XML.spinbox(label="Sample size", id.name="pwr_spin_sample0", min=1, real=FALSE, initial=30) +pwr.input.sample.n1 <- rk.XML.spinbox(label="First sample", id.name="pwr_spin_sample1", min=1, real=FALSE, initial=30) +pwr.input.sample.n2 <- rk.XML.spinbox(label="Second sample", id.name="pwr_spin_sample2", min=1, real=FALSE, initial=30) +pwr.txt.sample.default <- rk.XML.text("Number of observations", id.name="pwr_txt_smpl") +pwr.txt.sample.ps <- rk.XML.text("Number of observations <b>per sample</b>", id.name="pwr_txt_smpl_ps") +pwr.txt.sample.pg <- rk.XML.text("Number of observations <b>per group</b>", id.name="pwr_txt_smpl_pg") +pwr.txt.sample.tt <- rk.XML.text("Number of observations <b>in total</b>", id.name="pwr_txt_smpl_tt") +pwr.txt.sample.pairs <- rk.XML.text("Number of <b>pairs</b>", id.name="pwr_txt_smpl_pairs") + +pwr.input.groups <- rk.XML.spinbox(label="Number of groups", min=1, real=FALSE, initial=2) + +pwr.input.effect <- rk.XML.spinbox(label="Effect size", min=-1, max=1, initial=0.3) +# effect sizes: d, r, f, f2, w, h +pwr.txt.effect.d <- rk.XML.text("Measure for selected method is <b>Cohen's d</b>", id.name="pwr_txt_efct_d") +pwr.txt.effect.r <- rk.XML.text("Measure for selected method is <b>Pearson's r</b>", id.name="pwr_txt_efct_r") +pwr.txt.effect.f <- rk.XML.text("Measure for selected method is <b>Cohen's f</b>", id.name="pwr_txt_efct_f") +pwr.txt.effect.e2 <- rk.XML.text("Measure for selected method is <b>Eta<sup>2</sup></b>", id.name="pwr_txt_efct_e2") +# f <- sqrt(etasq / (1 - etasq)) +pwr.txt.effect.f2 <- rk.XML.text("Measure for selected method is <b>Cohen's f<sup>2</sup></b>", id.name="pwr_txt_efct_f2") +pwr.txt.effect.w <- rk.XML.text("Measure for selected method is <b>Cohen's w</b>", id.name="pwr_txt_efct_w") +pwr.txt.effect.h <- rk.XML.text("Measure for selected method is <b>Cohen's h</b>", id.name="pwr_txt_efct_h") +pwr.input.signif <- rk.XML.spinbox(label="Significance level", min=0, max=1, initial=0.05) + + +save.results.pwr <- rk.XML.saveobj("Save results to workspace", initial="pwr.result") + +tab.pwr.data <- rk.XML.row( + rk.XML.col( + rk.XML.frame( + pwr.parameter.rad, + rk.XML.stretch(), + pwr.parameter.twosamples.rad, + pwr.parameter.twodf.rad, + label="Target measure" + ) + ), + rk.XML.col( + rk.XML.frame( + pwr.stat.drop, + pwr.input.groups, + pwr.type.drop, + pwr.proptype.drop, + pwr.hypothesis.drop, + pwr.txt.hypothesis.neg, + pwr.txt.hypothesis.pos, + pwr.effect.etasq.rad, + label="Statistical Method" + ), + rk.XML.stretch() + ), + rk.XML.col( + rk.XML.frame( + rk.XML.frame( + pwr.frame.power <- rk.XML.frame(pwr.input.power), + pwr.frame.df <- rk.XML.frame( + pwr.input.df, + pwr.input.dfu, + pwr.input.dfv + ), + pwr.frame.sample <- rk.XML.frame( + pwr.input.sample, + pwr.input.sample.n1, + pwr.input.sample.n2, + pwr.txt.sample.default, + pwr.txt.sample.ps, + pwr.txt.sample.pg, + pwr.txt.sample.tt, + pwr.txt.sample.pairs + ), + pwr.frame.effect <- rk.XML.frame( + pwr.input.effect, + pwr.txt.effect.d, + pwr.txt.effect.r, + pwr.txt.effect.f, + pwr.txt.effect.e2, + pwr.txt.effect.f2, + pwr.txt.effect.w, + pwr.txt.effect.h + ), + pwr.frame.signif <- rk.XML.frame(pwr.input.signif) + ), + rk.XML.stretch(), + save.results.pwr, + label="Known measures" + ) + ) + ) + +pwr.full.dialog <- rk.XML.dialog( + tab.pwr.data, + label="Power analysis") + +## logic section + lgc.sect.pwr <- rk.XML.logic( + pwr.gov.want.power <- rk.XML.convert(sources=list(string=pwr.parameter.rad), mode=c(equals="power"), id.name="pwr_lgc_power"), + pwr.gov.want.sample <- rk.XML.convert(sources=list(string=pwr.parameter.rad), mode=c(equals="sample"), id.name="pwr_lgc_sample"), + pwr.gov.want.effect <- rk.XML.convert(sources=list(string=pwr.parameter.rad), mode=c(equals="effect"), id.name="pwr_lgc_effect"), + pwr.gov.want.signif <- rk.XML.convert(sources=list(string=pwr.parameter.rad), mode=c(equals="significance"), id.name="pwr_lgc_signif"), + rk.XML.connect(governor=pwr.gov.want.power, client=pwr.frame.power, set="enabled", not=TRUE), + rk.XML.connect(governor=pwr.gov.want.effect, client=pwr.frame.effect, set="enabled", not=TRUE), + rk.XML.connect(governor=pwr.gov.want.signif, client=pwr.frame.signif, set="enabled", not=TRUE), + + pwr.gov.meth.ttest <- rk.XML.convert(sources=list(string=pwr.stat.drop), mode=c(equals="pwr.t.test"), id.name="pwr_lgc_ttest"), + pwr.gov.meth.rtest <- rk.XML.convert(sources=list(string=pwr.stat.drop), mode=c(equals="pwr.r.test"), id.name="pwr_lgc_rtest"), + pwr.gov.meth.anova <- rk.XML.convert(sources=list(string=pwr.stat.drop), mode=c(equals="pwr.anova.test"), id.name="pwr_lgc_anova"), + pwr.gov.meth.f2test <- rk.XML.convert(sources=list(string=pwr.stat.drop), mode=c(equals="pwr.f2.test"), id.name="pwr_lgc_f2test"), + pwr.gov.meth.chisq <- rk.XML.convert(sources=list(string=pwr.stat.drop), mode=c(equals="pwr.chisq.test"), id.name="pwr_lgc_chisq"), + pwr.gov.meth.proptest <- rk.XML.convert(sources=list(string=pwr.stat.drop), mode=c(equals="pwr.p.test"), id.name="pwr_lgc_proptest"), + pwr.gov.meth.norm <- rk.XML.convert(sources=list(string=pwr.stat.drop), mode=c(equals="pwr.norm.test"), id.name="pwr_lgc_norm"), + pwr.gov.meth.proptest.same <- rk.XML.convert(sources=list(string=pwr.proptype.drop), mode=c(equals="two.sample.same"), id.name="pwr_lgc_sample_2p_same"), + pwr.gov.meth.proptest.diff <- rk.XML.convert(sources=list(string=pwr.proptype.drop), mode=c(equals="two.sample.diff"), id.name="pwr_lgc_sample_2p_diff"), + pwr.gov.meth.ttest.2diff <- rk.XML.convert(sources=list(string=pwr.type.drop), mode=c(equals="two.sample.diff"), id.name="pwr_lgc_sample_t_diff"), + pwr.gov.meth.ttest.pairs <- rk.XML.convert(sources=list(string=pwr.type.drop), mode=c(equals="paired"), id.name="pwr_lgc_sample_t_pairs"), + pwr.gov.meth.ttest.nopairs <- rk.XML.convert(sources=list(string=pwr.type.drop), mode=c(notequals="paired"), id.name="pwr_lgc_sample_t_nopairs"), + pwr.gov.meth.2ptest <- rk.XML.convert(sources=list(pwr.gov.meth.proptest.same, pwr.gov.meth.proptest), mode=c(and=""), id.name="pwr_lgc_2p"), + pwr.gov.meth.2p2ntest <- rk.XML.convert(sources=list(pwr.gov.meth.proptest.diff, pwr.gov.meth.proptest), mode=c(and=""), id.name="pwr_lgc_2p2n"), + pwr.gov.meth.ttest.diff <- rk.XML.convert(sources=list(pwr.gov.meth.ttest.2diff, pwr.gov.meth.ttest), mode=c(and=""), id.name="pwr_lgc_tdiff"), + pwr.gov.meth.ttest.paired <- rk.XML.convert(sources=list(pwr.gov.meth.ttest.pairs, pwr.gov.meth.ttest), mode=c(and=""), id.name="pwr_lgc_tpaired"), + pwr.gov.meth.ttest.unpaired <- rk.XML.convert(sources=list(pwr.gov.meth.ttest.nopairs, pwr.gov.meth.ttest), mode=c(and=""), + id.name="pwr_lgc_tunpaired"), + + rk.XML.connect(governor=pwr.gov.meth.proptest, client=pwr.type.drop, set="visible", not=TRUE), + rk.XML.connect(governor=pwr.gov.meth.ttest, client=pwr.type.drop, set="enabled"), + rk.XML.connect(governor=pwr.gov.meth.proptest, client=pwr.proptype.drop, set="visible"), + rk.XML.connect(governor=pwr.gov.meth.proptest, client=pwr.proptype.drop, set="enabled"), + rk.XML.connect(governor=pwr.gov.meth.f2test, client=pwr.frame.sample, set="visible", not=TRUE), + pwr.gov.meth.df <- rk.XML.convert(sources=list(pwr.gov.meth.f2test, pwr.gov.meth.chisq), mode=c(or=""), id.name="pwr_lgc_show_df"), + rk.XML.connect(governor=pwr.gov.meth.df, client=pwr.frame.df, set="visible"), + rk.XML.connect(governor=pwr.gov.meth.chisq, client=pwr.input.df, set="visible"), + rk.XML.connect(governor=pwr.gov.meth.f2test, client=pwr.input.dfu, set="visible"), + rk.XML.connect(governor=pwr.gov.meth.f2test, client=pwr.input.dfv, set="visible"), + + pwr.gov.efct.d <- rk.XML.convert(sources=list(pwr.gov.meth.ttest, pwr.gov.meth.norm), mode=c(or=""), id.name="pwr_lgc_efct_d"), + rk.XML.connect(governor=pwr.gov.efct.d, client=pwr.txt.effect.d, set="visible"), + rk.XML.connect(governor=pwr.gov.meth.rtest, client=pwr.txt.effect.r, set="visible"), + pwr.gov.efct.f <- rk.XML.convert(sources=list(string=pwr.effect.etasq.rad), mode=c(equals="f"), id.name="pwr_lgc_efct_f"), + pwr.gov.efct.show.f <- rk.XML.convert(sources=list(pwr.gov.meth.anova, pwr.gov.efct.f), mode=c(and=""), id.name="pwr_lgc_efct_show_f"), + pwr.gov.efct.show.e2 <- rk.XML.convert(sources=list(pwr.gov.meth.anova, not=pwr.gov.efct.f), mode=c(and=""), id.name="pwr_lgc_efct_show_e2"), + rk.XML.connect(governor=pwr.gov.efct.show.f, client=pwr.txt.effect.f, set="visible"), + rk.XML.connect(governor=pwr.gov.efct.show.e2, client=pwr.txt.effect.e2, set="visible"), + rk.XML.connect(governor=pwr.gov.meth.f2test, client=pwr.txt.effect.f2, set="visible"), + rk.XML.connect(governor=pwr.gov.meth.chisq, client=pwr.txt.effect.w, set="visible"), + rk.XML.connect(governor=pwr.gov.meth.proptest, client=pwr.txt.effect.h, set="visible"), + rk.XML.connect(governor=pwr.gov.meth.anova, client=pwr.effect.etasq.rad, set="visible"), + rk.XML.connect(governor=pwr.gov.want.effect, client=pwr.effect.etasq.rad, set="enabled", not=TRUE), + + rk.XML.connect(governor=pwr.gov.meth.anova, client=pwr.input.groups, set="enabled"), + + # text for sample size + pwr.gov.smpl.ps <- rk.XML.convert(sources=list(pwr.gov.meth.ttest.unpaired, pwr.gov.meth.2ptest), mode=c(or=""), id.name="pwr_lgc_smpl_ps"), + pwr.gov.smpl.nondefault <- rk.XML.convert(sources=list( + pwr.gov.meth.ttest, + pwr.gov.meth.2ptest, + pwr.txt.sample.ps, + pwr.gov.meth.anova, + pwr.gov.meth.chisq), mode=c(or=""), id.name="pwr_lgc_smpl_nondefault"), + rk.XML.connect(governor=pwr.gov.smpl.ps, client=pwr.txt.sample.ps, set="visible"), + rk.XML.connect(governor=pwr.gov.meth.anova, client=pwr.txt.sample.pg, set="visible"), + rk.XML.connect(governor=pwr.gov.meth.chisq, client=pwr.txt.sample.tt, set="visible"), + rk.XML.connect(governor=pwr.gov.meth.ttest.paired, client=pwr.txt.sample.pairs, set="visible"), + rk.XML.connect(governor=pwr.gov.smpl.nondefault, client=pwr.txt.sample.default, set="visible", not=TRUE), + pwr.gov.smpl.diff <- rk.XML.convert(sources=list(pwr.gov.meth.ttest.diff, pwr.gov.meth.2p2ntest), mode=c(or=""), id.name="pwr_lgc_smpl_diff"), + rk.XML.connect(governor=pwr.gov.smpl.diff, client=pwr.input.sample.n1, set="visible"), + rk.XML.connect(governor=pwr.gov.smpl.diff, client=pwr.input.sample.n2, set="visible"), + rk.XML.connect(governor=pwr.gov.smpl.diff, client=pwr.input.sample, set="visible", not=TRUE), + + # switch between sample estimations + pwr.gov.smpl.switch <- rk.XML.convert(sources=list(pwr.gov.want.sample, pwr.gov.smpl.diff), mode=c(and=""), id.name="pwr_lgc_smpl_switch"), + pwr.gov.df.switch <- rk.XML.convert(sources=list(pwr.gov.want.sample, pwr.gov.meth.f2test), mode=c(and=""), id.name="pwr_lgc_df_switch"), + pwr.gov.enable.sample.frame <- rk.XML.convert(sources=list(not=pwr.gov.want.sample, pwr.gov.smpl.switch), mode=c(or=""), id.name="pwr_lgc_enable_sample_frame"), + rk.XML.connect(governor=pwr.gov.enable.sample.frame, client=pwr.frame.sample, set="enabled"), + rk.XML.connect(governor=pwr.gov.smpl.switch, client=pwr.parameter.twosamples.rad, set="visible"), + rk.XML.connect(governor=pwr.gov.df.switch, client=pwr.parameter.twodf.rad, set="visible"), + pwr.gov.smpl.n1 <- rk.XML.convert(sources=list(string=pwr.parameter.twosamples.rad), mode=c(equals="n1"), id.name="pwr_lgc_smpl_n1"), + pwr.gov.smpl.n2 <- rk.XML.convert(sources=list(string=pwr.parameter.twosamples.rad), mode=c(equals="n2"), id.name="pwr_lgc_smpl_n2"), + pwr.gov.df.u <- rk.XML.convert(sources=list(string=pwr.parameter.twodf.rad), mode=c(equals="u"), id.name="pwr_lgc_df_u"), + pwr.gov.df.v <- rk.XML.convert(sources=list(string=pwr.parameter.twodf.rad), mode=c(equals="v"), id.name="pwr_lgc_df_v"), + pwr.gov.smpl.show.n1 <- rk.XML.convert(sources=list(pwr.gov.smpl.n2, not=pwr.gov.want.sample), mode=c(or=""), id.name="pwr_lgc_smpl_show_n1"), + pwr.gov.smpl.show.n2 <- rk.XML.convert(sources=list(pwr.gov.smpl.n1, not=pwr.gov.want.sample), mode=c(or=""), id.name="pwr_lgc_smpl_show_n2"), + pwr.gov.df.show.u <- rk.XML.convert(sources=list(pwr.gov.df.v, not=pwr.gov.want.sample), mode=c(or=""), id.name="pwr_lgc_df_show_u"), + pwr.gov.df.show.v <- rk.XML.convert(sources=list(pwr.gov.df.u, not=pwr.gov.want.sample), mode=c(or=""), id.name="pwr_lgc_df_show_v"), + rk.XML.connect(governor=pwr.gov.smpl.show.n1, client=pwr.input.sample.n1, set="enabled"), + rk.XML.connect(governor=pwr.gov.smpl.show.n2, client=pwr.input.sample.n2, set="enabled"), + rk.XML.connect(governor=pwr.gov.df.show.u, client=pwr.input.dfu, set="enabled"), + rk.XML.connect(governor=pwr.gov.df.show.v, client=pwr.input.dfv, set="enabled"), + + # disable alterative setting + pwr.gov.meth.noalternative <- rk.XML.convert(sources=list(not=pwr.gov.meth.anova, not=pwr.gov.meth.f2test, not=pwr.gov.meth.chisq), mode=c(and=""), id.name="pwr_lgc_noalternative"), + rk.XML.connect(governor=pwr.gov.meth.noalternative, client=pwr.hypothesis.drop, set="enabled"), + # check if a warning regarding negative effect size is in order + pwr.gov.meth.alt.less <- rk.XML.convert(sources=list(string=pwr.hypothesis.drop), mode=c(equals="less"), id.name="pwr_lgc_alt_less"), + pwr.gov.meth.alt.greater <- rk.XML.convert(sources=list(string=pwr.hypothesis.drop), mode=c(equals="greater"), id.name="pwr_lgc_alt_greater"), + pwr.gov.meth.effect.positive <- rk.XML.convert(sources=list(real=pwr.input.effect), mode=c(min=0), id.name="pwr_lgc_pos_effect"), + pwr.gov.meth.effect.negative <- rk.XML.convert(sources=list(real=pwr.input.effect), mode=c(max=0), id.name="pwr_lgc_neg_effect"), + pwr.gov.meth.alt.warning.neg <- rk.XML.convert(sources=list(pwr.gov.meth.alt.less, pwr.gov.meth.noalternative, pwr.gov.meth.effect.positive), mode=c(and=""), id.name="pwr_lgc_alt_warn_neg"), + pwr.gov.meth.alt.warning.pos <- rk.XML.convert(sources=list(pwr.gov.meth.alt.greater, pwr.gov.meth.noalternative, pwr.gov.meth.effect.negative), mode=c(and=""), id.name="pwr_lgc_alt_warn_pos"), + rk.XML.connect(governor=pwr.gov.meth.alt.warning.neg, client=pwr.txt.hypothesis.neg, set="visible"), + rk.XML.connect(governor=pwr.gov.meth.alt.warning.pos, client=pwr.txt.hypothesis.pos, set="visible") + ) + + + +## JavaScript +pwr.js.calc <- rk.paste.JS( + echo("\tpwr.result <- "), + ######### + ## t-test + ite(id(pwr.stat.drop, " == \"pwr.t.test\""), + rk.paste.JS( + # two samples with different sizes or not? + ite(id(pwr.type.drop, " == \"two.sample.diff\""), + rk.paste.JS(# yes + echo("pwr.t2n.test("), + ite(id(pwr.parameter.rad, " != \"sample\""), + echo("\n\t\tn1=", pwr.input.sample.n1, ",\n\t\tn2=", pwr.input.sample.n2), + ite(id(pwr.parameter.twosamples.rad, " == \"n2\""), + echo("\n\t\tn1=", pwr.input.sample.n1, ","), + echo("\n\t\tn2=", pwr.input.sample.n2, ",") + ) + ) + ), + rk.paste.JS(#no + echo("pwr.t.test("), + ite(id(pwr.parameter.rad, " != \"sample\""), + echo("\n\t\tn=", pwr.input.sample) + ) + ) + ), + ite(id(pwr.parameter.rad, " != \"effect\""), + rk.paste.JS( + ite(id(pwr.parameter.rad, " != \"sample\""), echo(",")), + echo("\n\t\td=", pwr.input.effect) + ) + ) + ) + ), + ############### + ## correlations + ite(id(pwr.stat.drop, " == \"pwr.r.test\""), + rk.paste.JS( + echo("pwr.r.test("), + ite(id(pwr.parameter.rad, " != \"sample\""), + echo("\n\t\tn=", pwr.input.sample) + ), + ite(id(pwr.parameter.rad, " != \"effect\""), + rk.paste.JS( + ite(id(pwr.parameter.rad, " != \"sample\""), echo(",")), + echo("\n\t\tr=", pwr.input.effect) + ) + ) + ) + ), + ######## + ## ANOVA + ite(id(pwr.stat.drop, " == \"pwr.anova.test\""), + rk.paste.JS( + echo("pwr.anova.test("), + echo("\n\t\tk=", pwr.input.groups), + ite(id(pwr.parameter.rad, " != \"sample\""), + echo(",\n\t\tn=", pwr.input.sample) + ), + ite(id(pwr.parameter.rad, " != \"effect\""), + ite(id(pwr.effect.etasq.rad, " == \"f\""), + echo(",\n\t\tf=", pwr.input.effect), + echo(",\n\t\tf=sqrt(", pwr.input.effect,"/(1-", pwr.input.effect,")) # calculate f from eta squared") + ) + ) + ) + ), + ###### + ## GLM + ite(id(pwr.stat.drop, " == \"pwr.f2.test\""), + rk.paste.JS( + echo("pwr.f2.test("), + ite(id(pwr.parameter.rad, " != \"sample\""), + echo(",\n\t\tu=", pwr.input.dfu, ",\n\t\tv=", pwr.input.dfv), + ite(id(pwr.parameter.twodf.rad, " == \"v\""), + echo("\n\t\tu=", pwr.input.dfu), + echo("\n\t\tv=", pwr.input.dfv) + ) + ), + ite(id(pwr.parameter.rad, " != \"effect\""), + rk.paste.JS( + echo(",\n\t\tf2=", pwr.input.effect) + ) + ) + ) + ), + ############## + ## Chi squared + ite(id(pwr.stat.drop, " == \"pwr.chisq.test\""), + rk.paste.JS( + echo("pwr.chisq.test("), + ite(id(pwr.parameter.rad, " != \"effect\""), + echo("\n\t\tw=", pwr.input.effect) + ), + ite(id(pwr.parameter.rad, " != \"sample\""), + rk.paste.JS( + ite(id(pwr.parameter.rad, " != \"effect\""), echo(",")), + echo("\n\t\tN=", pwr.input.sample) + ) + ), + echo(",\n\t\tdf=", pwr.input.df) + ) + ), + ############## + ## proportions + ite(id(pwr.stat.drop, " == \"pwr.p.test\""), + rk.paste.JS( + ite(id(pwr.proptype.drop, " == \"two.sample.same\""), echo("pwr.2p.test(")), + ite(id(pwr.proptype.drop, " == \"two.sample.diff\""), echo("pwr.2p2n.test(")), + ite(id(pwr.proptype.drop, " == \"one.sample\""), echo("pwr.p.test(")), + ite(id(pwr.parameter.rad, " != \"effect\""), + echo("\n\t\th=", pwr.input.effect) + ), + ite(id(pwr.parameter.rad, " != \"sample\""), + rk.paste.JS( + ite(id(pwr.parameter.rad, " != \"effect\""), echo(",")), + ite(id(pwr.proptype.drop, " != \"two.sample.diff\""), + echo("\n\t\tn=", pwr.input.sample), + echo("\n\t\tn1=", pwr.input.sample.n1, ",\n\t\tn2=", pwr.input.sample.n2) + ) + ), + ite(id(pwr.proptype.drop, " == \"two.sample.diff\""), + ite(id(pwr.parameter.twosamples.rad, " == \"n2\""), + echo("\n\t\tn1=", pwr.input.sample.n1, ","), + echo("\n\t\tn2=", pwr.input.sample.n2, ",") + ) + ) + ) + ) + ), + ###################### + ## normal distribution + ite(id(pwr.stat.drop, " == \"pwr.norm.test\""), + rk.paste.JS( + echo("pwr.norm.test("), + ite(id(pwr.parameter.rad, " != \"effect\""), + echo("\n\t\td=", pwr.input.effect) + ), + ite(id(pwr.parameter.rad, " != \"sample\""), + rk.paste.JS( + ite(id(pwr.parameter.rad, " != \"effect\""), echo(",")), + echo("\n\t\tn=", pwr.input.sample) + ) + ) + ) + ), + ite(id(pwr.parameter.rad, " != \"significance\""), + ite(id(pwr.input.signif, " != 0.05"), echo("\n\t\tsig.level=", pwr.input.signif, ",")), + echo(",\n\t\tsig.level=NULL") + ), + ite(id(pwr.parameter.rad, " != \"power\""), + echo(",\n\t\tpower=", pwr.input.power) + ), + ite(id(pwr.stat.drop, " == \"pwr.t.test\" & ", pwr.type.drop, " != \"two.sample.diff\" & ", pwr.type.drop, " != \"two.sample\""), + echo(",\n\t\ttype=\"", pwr.type.drop, "\"") + ), + ite(id(pwr.stat.drop, " != \"pwr.anova.test\" & ", pwr.stat.drop, " != \"pwr.f2.test\" & ", pwr.stat.drop, " != \"pwr.chisq.test\""), + ite(id(pwr.hypothesis.drop, " != \"two.sided\""), + echo(",\n\t\talternative=\"", pwr.hypothesis.drop, "\"") + ) + ), + echo("\n\t)\n\n") +) + +pwr.js.print <- rk.paste.JS( + echo("rk.print(pwr.result)\n") +) + + +############# +## if you run the following function call, files will be written to tempdir! +############# +# this is where it get's serious, that is, here all of the above is put together into one plugin + +pwr.plugin.dir <<- rk.plugin.skeleton( + about.info, + path=output.dir, + guess.getter=guess.getter, + xml=list( + dialog=pwr.full.dialog, + logic=lgc.sect.pwr + ), + js=list(#results.header=FALSE, + require="pwr", + calculate=pwr.js.calc, + printout=pwr.js.print), + pluginmap=list(name="Power analysis", hierarchy=list("analysis")), + dependencies=dependencies.info, + create=c("pmap", "xml", "js", "desc"), + overwrite=overwrite, + tests=FALSE, +# edit=TRUE, + load=TRUE, +# show=TRUE, + hints=FALSE) +}) |
From: Thomas F. <tho...@ru...> - 2015-01-11 20:14:14
|
Git commit 1589f8379490cfd31b39d04505dbbcb57fa04f82 by Thomas Friedrichsmeier, on behalf of Meik Michalke. Committed on 05/10/2014 at 18:46. Pushed by tfry into branch 'master'. rk.power: nicer output, fixing sample information svn path=/branches/external_plugins/; revision=4876 M +103 -66 rkwarddev_power_plugin_script.R http://commits.kde.org/rkward/1589f8379490cfd31b39d04505dbbcb57fa04f82 diff --git a/rkwarddev_power_plugin_script.R b/rkwarddev_power_plugin_script.R index 6453b25..a084a12 100644 --- a/rkwarddev_power_plugin_script.R +++ b/rkwarddev_power_plugin_script.R @@ -18,7 +18,7 @@ about.info <- rk.XML.about( person(given="Meik", family="Michalke", email="mei...@hh...", role=c("aut","cre"))), about=list(desc="RKWard GUI to perform power analysis and sample size estimation.", - version="0.01-1", url="http://rkward.sf.net") + version="0.01-2", url="http://rkward.sf.net") ) dependencies.info <- rk.XML.dependencies( dependencies=list(rkward.min=ifelse(isTRUE(guess.getter), "0.6.0", "0.5.6"), @@ -27,10 +27,10 @@ dependencies.info <- rk.XML.dependencies( pwr.parameter.rad <- rk.XML.radio(label="Parameter to determine", options=list( - "Power of test"=c(val="power", chk=TRUE), - "Sample size"=c(val="sample"), - "Effect size"=c(val="effect"), - "Significance level"=c(val="significance") + "Power of test"=c(val="Power", chk=TRUE), + "Sample size"=c(val="Sample size"), + "Effect size"=c(val="Effect size"), + "Significance level"=c(val="Significance level") ), id.name="rad_pwr_param") pwr.parameter.twosamples.rad <- rk.XML.radio(label="Estimate", options=list( @@ -91,8 +91,8 @@ pwr.input.dfu <- rk.XML.spinbox(label="Degrees of freedom for numerator", id.nam pwr.input.dfv <- rk.XML.spinbox(label="Degrees of freedom for denominator", id.name="pwr_spin_dfv", min=1, real=FALSE, initial=30) pwr.input.sample <- rk.XML.spinbox(label="Sample size", id.name="pwr_spin_sample0", min=1, real=FALSE, initial=30) -pwr.input.sample.n1 <- rk.XML.spinbox(label="First sample", id.name="pwr_spin_sample1", min=1, real=FALSE, initial=30) -pwr.input.sample.n2 <- rk.XML.spinbox(label="Second sample", id.name="pwr_spin_sample2", min=1, real=FALSE, initial=30) +pwr.input.sample.n1 <- rk.XML.spinbox(label="First sample size", id.name="pwr_spin_sample1", min=1, real=FALSE, initial=30) +pwr.input.sample.n2 <- rk.XML.spinbox(label="Second sample size", id.name="pwr_spin_sample2", min=1, real=FALSE, initial=30) pwr.txt.sample.default <- rk.XML.text("Number of observations", id.name="pwr_txt_smpl") pwr.txt.sample.ps <- rk.XML.text("Number of observations <b>per sample</b>", id.name="pwr_txt_smpl_ps") pwr.txt.sample.pg <- rk.XML.text("Number of observations <b>per group</b>", id.name="pwr_txt_smpl_pg") @@ -142,35 +142,33 @@ tab.pwr.data <- rk.XML.row( ), rk.XML.col( rk.XML.frame( - rk.XML.frame( - pwr.frame.power <- rk.XML.frame(pwr.input.power), - pwr.frame.df <- rk.XML.frame( - pwr.input.df, - pwr.input.dfu, - pwr.input.dfv - ), + pwr.frame.power <- rk.XML.frame(pwr.input.power), + pwr.frame.df <- rk.XML.frame( + pwr.input.df, + pwr.input.dfu, + pwr.input.dfv + ), pwr.frame.sample <- rk.XML.frame( - pwr.input.sample, - pwr.input.sample.n1, - pwr.input.sample.n2, - pwr.txt.sample.default, - pwr.txt.sample.ps, - pwr.txt.sample.pg, - pwr.txt.sample.tt, - pwr.txt.sample.pairs - ), + pwr.input.sample, + pwr.input.sample.n1, + pwr.input.sample.n2, + pwr.txt.sample.default, + pwr.txt.sample.ps, + pwr.txt.sample.pg, + pwr.txt.sample.tt, + pwr.txt.sample.pairs + ), pwr.frame.effect <- rk.XML.frame( - pwr.input.effect, - pwr.txt.effect.d, - pwr.txt.effect.r, - pwr.txt.effect.f, - pwr.txt.effect.e2, - pwr.txt.effect.f2, - pwr.txt.effect.w, - pwr.txt.effect.h - ), - pwr.frame.signif <- rk.XML.frame(pwr.input.signif) + pwr.input.effect, + pwr.txt.effect.d, + pwr.txt.effect.r, + pwr.txt.effect.f, + pwr.txt.effect.e2, + pwr.txt.effect.f2, + pwr.txt.effect.w, + pwr.txt.effect.h ), + pwr.frame.signif <- rk.XML.frame(pwr.input.signif), rk.XML.stretch(), save.results.pwr, label="Known measures" @@ -184,10 +182,10 @@ pwr.full.dialog <- rk.XML.dialog( ## logic section lgc.sect.pwr <- rk.XML.logic( - pwr.gov.want.power <- rk.XML.convert(sources=list(string=pwr.parameter.rad), mode=c(equals="power"), id.name="pwr_lgc_power"), - pwr.gov.want.sample <- rk.XML.convert(sources=list(string=pwr.parameter.rad), mode=c(equals="sample"), id.name="pwr_lgc_sample"), - pwr.gov.want.effect <- rk.XML.convert(sources=list(string=pwr.parameter.rad), mode=c(equals="effect"), id.name="pwr_lgc_effect"), - pwr.gov.want.signif <- rk.XML.convert(sources=list(string=pwr.parameter.rad), mode=c(equals="significance"), id.name="pwr_lgc_signif"), + pwr.gov.want.power <- rk.XML.convert(sources=list(string=pwr.parameter.rad), mode=c(equals="Power"), id.name="pwr_lgc_power"), + pwr.gov.want.sample <- rk.XML.convert(sources=list(string=pwr.parameter.rad), mode=c(equals="Sample size"), id.name="pwr_lgc_sample"), + pwr.gov.want.effect <- rk.XML.convert(sources=list(string=pwr.parameter.rad), mode=c(equals="Effect size"), id.name="pwr_lgc_effect"), + pwr.gov.want.signif <- rk.XML.convert(sources=list(string=pwr.parameter.rad), mode=c(equals="Significance level"), id.name="pwr_lgc_signif"), rk.XML.connect(governor=pwr.gov.want.power, client=pwr.frame.power, set="enabled", not=TRUE), rk.XML.connect(governor=pwr.gov.want.effect, client=pwr.frame.effect, set="enabled", not=TRUE), rk.XML.connect(governor=pwr.gov.want.signif, client=pwr.frame.signif, set="enabled", not=TRUE), @@ -201,14 +199,16 @@ pwr.full.dialog <- rk.XML.dialog( pwr.gov.meth.norm <- rk.XML.convert(sources=list(string=pwr.stat.drop), mode=c(equals="pwr.norm.test"), id.name="pwr_lgc_norm"), pwr.gov.meth.proptest.same <- rk.XML.convert(sources=list(string=pwr.proptype.drop), mode=c(equals="two.sample.same"), id.name="pwr_lgc_sample_2p_same"), pwr.gov.meth.proptest.diff <- rk.XML.convert(sources=list(string=pwr.proptype.drop), mode=c(equals="two.sample.diff"), id.name="pwr_lgc_sample_2p_diff"), + pwr.gov.meth.ttest.typesame <- rk.XML.convert(sources=list(string=pwr.type.drop), mode=c(equals="two.sample"), id.name="pwr_lgc_sample_t_same"), pwr.gov.meth.ttest.2diff <- rk.XML.convert(sources=list(string=pwr.type.drop), mode=c(equals="two.sample.diff"), id.name="pwr_lgc_sample_t_diff"), pwr.gov.meth.ttest.pairs <- rk.XML.convert(sources=list(string=pwr.type.drop), mode=c(equals="paired"), id.name="pwr_lgc_sample_t_pairs"), - pwr.gov.meth.ttest.nopairs <- rk.XML.convert(sources=list(string=pwr.type.drop), mode=c(notequals="paired"), id.name="pwr_lgc_sample_t_nopairs"), + pwr.gov.meth.ttest.single <- rk.XML.convert(sources=list(string=pwr.type.drop), mode=c(equals="one.sample"), id.name="pwr_lgc_sample_t_onesample"), pwr.gov.meth.2ptest <- rk.XML.convert(sources=list(pwr.gov.meth.proptest.same, pwr.gov.meth.proptest), mode=c(and=""), id.name="pwr_lgc_2p"), pwr.gov.meth.2p2ntest <- rk.XML.convert(sources=list(pwr.gov.meth.proptest.diff, pwr.gov.meth.proptest), mode=c(and=""), id.name="pwr_lgc_2p2n"), + pwr.gov.meth.ttest.same <- rk.XML.convert(sources=list(pwr.gov.meth.ttest.typesame, pwr.gov.meth.ttest), mode=c(and=""), id.name="pwr_lgc_tsame"), pwr.gov.meth.ttest.diff <- rk.XML.convert(sources=list(pwr.gov.meth.ttest.2diff, pwr.gov.meth.ttest), mode=c(and=""), id.name="pwr_lgc_tdiff"), pwr.gov.meth.ttest.paired <- rk.XML.convert(sources=list(pwr.gov.meth.ttest.pairs, pwr.gov.meth.ttest), mode=c(and=""), id.name="pwr_lgc_tpaired"), - pwr.gov.meth.ttest.unpaired <- rk.XML.convert(sources=list(pwr.gov.meth.ttest.nopairs, pwr.gov.meth.ttest), mode=c(and=""), + pwr.gov.meth.ttest.onesample <- rk.XML.convert(sources=list(pwr.gov.meth.ttest.single, pwr.gov.meth.ttest), mode=c(and=""), id.name="pwr_lgc_tunpaired"), rk.XML.connect(governor=pwr.gov.meth.proptest, client=pwr.type.drop, set="visible", not=TRUE), @@ -239,11 +239,12 @@ pwr.full.dialog <- rk.XML.dialog( rk.XML.connect(governor=pwr.gov.meth.anova, client=pwr.input.groups, set="enabled"), # text for sample size - pwr.gov.smpl.ps <- rk.XML.convert(sources=list(pwr.gov.meth.ttest.unpaired, pwr.gov.meth.2ptest), mode=c(or=""), id.name="pwr_lgc_smpl_ps"), + pwr.gov.smpl.ps <- rk.XML.convert(sources=list(pwr.gov.meth.ttest.same, pwr.gov.meth.ttest.onesample, pwr.gov.meth.2ptest), mode=c(or=""), id.name="pwr_lgc_smpl_ps"), pwr.gov.smpl.nondefault <- rk.XML.convert(sources=list( pwr.gov.meth.ttest, pwr.gov.meth.2ptest, - pwr.txt.sample.ps, + pwr.gov.meth.2p2ntest, + pwr.gov.meth.ttest.diff, pwr.gov.meth.anova, pwr.gov.meth.chisq), mode=c(or=""), id.name="pwr_lgc_smpl_nondefault"), rk.XML.connect(governor=pwr.gov.smpl.ps, client=pwr.txt.sample.ps, set="visible"), @@ -303,7 +304,7 @@ pwr.js.calc <- rk.paste.JS( ite(id(pwr.type.drop, " == \"two.sample.diff\""), rk.paste.JS(# yes echo("pwr.t2n.test("), - ite(id(pwr.parameter.rad, " != \"sample\""), + ite(id(pwr.parameter.rad, " != \"Sample size\""), echo("\n\t\tn1=", pwr.input.sample.n1, ",\n\t\tn2=", pwr.input.sample.n2), ite(id(pwr.parameter.twosamples.rad, " == \"n2\""), echo("\n\t\tn1=", pwr.input.sample.n1, ","), @@ -313,14 +314,14 @@ pwr.js.calc <- rk.paste.JS( ), rk.paste.JS(#no echo("pwr.t.test("), - ite(id(pwr.parameter.rad, " != \"sample\""), + ite(id(pwr.parameter.rad, " != \"Sample size\""), echo("\n\t\tn=", pwr.input.sample) ) ) ), - ite(id(pwr.parameter.rad, " != \"effect\""), + ite(id(pwr.parameter.rad, " != \"Effect size\""), rk.paste.JS( - ite(id(pwr.parameter.rad, " != \"sample\""), echo(",")), + ite(id(pwr.parameter.rad, " != \"Sample size\""), echo(",")), echo("\n\t\td=", pwr.input.effect) ) ) @@ -331,12 +332,12 @@ pwr.js.calc <- rk.paste.JS( ite(id(pwr.stat.drop, " == \"pwr.r.test\""), rk.paste.JS( echo("pwr.r.test("), - ite(id(pwr.parameter.rad, " != \"sample\""), + ite(id(pwr.parameter.rad, " != \"Sample size\""), echo("\n\t\tn=", pwr.input.sample) ), - ite(id(pwr.parameter.rad, " != \"effect\""), + ite(id(pwr.parameter.rad, " != \"Effect size\""), rk.paste.JS( - ite(id(pwr.parameter.rad, " != \"sample\""), echo(",")), + ite(id(pwr.parameter.rad, " != \"Sample size\""), echo(",")), echo("\n\t\tr=", pwr.input.effect) ) ) @@ -348,10 +349,10 @@ pwr.js.calc <- rk.paste.JS( rk.paste.JS( echo("pwr.anova.test("), echo("\n\t\tk=", pwr.input.groups), - ite(id(pwr.parameter.rad, " != \"sample\""), + ite(id(pwr.parameter.rad, " != \"Sample size\""), echo(",\n\t\tn=", pwr.input.sample) ), - ite(id(pwr.parameter.rad, " != \"effect\""), + ite(id(pwr.parameter.rad, " != \"Effect size\""), ite(id(pwr.effect.etasq.rad, " == \"f\""), echo(",\n\t\tf=", pwr.input.effect), echo(",\n\t\tf=sqrt(", pwr.input.effect,"/(1-", pwr.input.effect,")) # calculate f from eta squared") @@ -364,14 +365,14 @@ pwr.js.calc <- rk.paste.JS( ite(id(pwr.stat.drop, " == \"pwr.f2.test\""), rk.paste.JS( echo("pwr.f2.test("), - ite(id(pwr.parameter.rad, " != \"sample\""), + ite(id(pwr.parameter.rad, " != \"Sample size\""), echo(",\n\t\tu=", pwr.input.dfu, ",\n\t\tv=", pwr.input.dfv), ite(id(pwr.parameter.twodf.rad, " == \"v\""), echo("\n\t\tu=", pwr.input.dfu), echo("\n\t\tv=", pwr.input.dfv) ) ), - ite(id(pwr.parameter.rad, " != \"effect\""), + ite(id(pwr.parameter.rad, " != \"Effect size\""), rk.paste.JS( echo(",\n\t\tf2=", pwr.input.effect) ) @@ -383,12 +384,12 @@ pwr.js.calc <- rk.paste.JS( ite(id(pwr.stat.drop, " == \"pwr.chisq.test\""), rk.paste.JS( echo("pwr.chisq.test("), - ite(id(pwr.parameter.rad, " != \"effect\""), + ite(id(pwr.parameter.rad, " != \"Effect size\""), echo("\n\t\tw=", pwr.input.effect) ), - ite(id(pwr.parameter.rad, " != \"sample\""), + ite(id(pwr.parameter.rad, " != \"Sample size\""), rk.paste.JS( - ite(id(pwr.parameter.rad, " != \"effect\""), echo(",")), + ite(id(pwr.parameter.rad, " != \"Effect size\""), echo(",")), echo("\n\t\tN=", pwr.input.sample) ) ), @@ -402,12 +403,12 @@ pwr.js.calc <- rk.paste.JS( ite(id(pwr.proptype.drop, " == \"two.sample.same\""), echo("pwr.2p.test(")), ite(id(pwr.proptype.drop, " == \"two.sample.diff\""), echo("pwr.2p2n.test(")), ite(id(pwr.proptype.drop, " == \"one.sample\""), echo("pwr.p.test(")), - ite(id(pwr.parameter.rad, " != \"effect\""), + ite(id(pwr.parameter.rad, " != \"Effect size\""), echo("\n\t\th=", pwr.input.effect) ), - ite(id(pwr.parameter.rad, " != \"sample\""), + ite(id(pwr.parameter.rad, " != \"Sample size\""), rk.paste.JS( - ite(id(pwr.parameter.rad, " != \"effect\""), echo(",")), + ite(id(pwr.parameter.rad, " != \"Effect size\""), echo(",")), ite(id(pwr.proptype.drop, " != \"two.sample.diff\""), echo("\n\t\tn=", pwr.input.sample), echo("\n\t\tn1=", pwr.input.sample.n1, ",\n\t\tn2=", pwr.input.sample.n2) @@ -427,22 +428,22 @@ pwr.js.calc <- rk.paste.JS( ite(id(pwr.stat.drop, " == \"pwr.norm.test\""), rk.paste.JS( echo("pwr.norm.test("), - ite(id(pwr.parameter.rad, " != \"effect\""), + ite(id(pwr.parameter.rad, " != \"Effect size\""), echo("\n\t\td=", pwr.input.effect) ), - ite(id(pwr.parameter.rad, " != \"sample\""), + ite(id(pwr.parameter.rad, " != \"Sample size\""), rk.paste.JS( - ite(id(pwr.parameter.rad, " != \"effect\""), echo(",")), + ite(id(pwr.parameter.rad, " != \"Effect size\""), echo(",")), echo("\n\t\tn=", pwr.input.sample) ) ) ) ), - ite(id(pwr.parameter.rad, " != \"significance\""), + ite(id(pwr.parameter.rad, " != \"Significance level\""), ite(id(pwr.input.signif, " != 0.05"), echo("\n\t\tsig.level=", pwr.input.signif, ",")), echo(",\n\t\tsig.level=NULL") ), - ite(id(pwr.parameter.rad, " != \"power\""), + ite(id(pwr.parameter.rad, " != \"Power\""), echo(",\n\t\tpower=", pwr.input.power) ), ite(id(pwr.stat.drop, " == \"pwr.t.test\" & ", pwr.type.drop, " != \"two.sample.diff\" & ", pwr.type.drop, " != \"two.sample\""), @@ -457,10 +458,46 @@ pwr.js.calc <- rk.paste.JS( ) pwr.js.print <- rk.paste.JS( - echo("rk.print(pwr.result)\n") + rk.JS.vars(list(pwr.stat.drop, pwr.parameter.rad)), + echo( + "\t# Prepare printout\n", + "\tmethod <- pwr.result[[\"method\"]]\n", + "\tnote <- pwr.result[[\"note\"]]\n", + "\tparameters <- list(\"Target measure\"=\"", pwr.parameter.rad, "\")\n", + "\tif(!is.null(pwr.result[[\"alternative\"]])){\n\t\tparameters[[\"alternative\"]] <- pwr.result[[\"alternative\"]]\n\t}\n\n", + "\tpwr.result[c(\"method\", \"note\", \"alternative\")] <- NULL\n", + "\tpwr.result <- as.data.frame(unlist(pwr.result))\n", + "\tcolnames(pwr.result) <- \"Parameters\"\n\n", + "\trk.header(method, parameters=parameters)\n", + "\trk.results(pwr.result)\n", + "\tif(!is.null(note)){\n\t\trk.print(paste(\"<strong>Note:</strong> \", note))\n\t}\n\n" + ), + ite(id(pwr.stat.drop, " == \"pwr.t.test\" | ", pwr.stat.drop, " == \"pwr.norm.test\""), + echo("\trk.print(\"Interpretation of effect size <strong>d</strong> (according to Cohen):\")\n", + "\trk.results(data.frame(small=0.2, medium=0.5, large=0.8))\n") + ), + ite(id(pwr.stat.drop, " == \"pwr.r.test\""), + echo("\trk.print(\"Interpretation of effect size <strong>r</strong> (according to Cohen):\")\n", + "\trk.results(data.frame(small=0.1, medium=0.3, large=0.5))\n") + ), + ite(id(pwr.stat.drop, " == \"pwr.f2.test\""), + echo("\trk.print(\"Interpretation of effect size <strong>f<sup>2</sup></strong> (according to Cohen):\")\n", + "\trk.results(data.frame(small=0.02, medium=0.15, large=0.35))\n") + ), + ite(id(pwr.stat.drop, " == \"pwr.anova.test\""), + echo("\trk.print(\"Interpretation of effect size <strong>f</strong> (according to Cohen):\")\n", + "\trk.results(data.frame(small=0.1, medium=0.25, large=0.4))\n") + ), + ite(id(pwr.stat.drop, " == \"pwr.chisq.test\""), + echo("\trk.print(\"Interpretation of effect size <strong>w</strong> (according to Cohen):\")\n", + "\trk.results(data.frame(small=0.1, medium=0.3, large=0.5))\n") + ), + ite(id(pwr.stat.drop, " == \"pwr.p.test\""), + echo("\trk.print(\"Interpretation of effect size <strong>h</strong> (according to Cohen):\")\n", + "\trk.results(data.frame(small=0.2, medium=0.5, large=0.8))\n") + ) ) - ############# ## if you run the following function call, files will be written to tempdir! ############# @@ -474,7 +511,7 @@ pwr.plugin.dir <<- rk.plugin.skeleton( dialog=pwr.full.dialog, logic=lgc.sect.pwr ), - js=list(#results.header=FALSE, + js=list(results.header=FALSE, require="pwr", calculate=pwr.js.calc, printout=pwr.js.print), |
From: Thomas F. <tho...@ru...> - 2015-01-11 20:14:14
|
Git commit a71d0171b33b7df85b3c7e8c0d4c11362cc5f64c by Thomas Friedrichsmeier. Committed on 11/10/2014 at 18:49. Pushed by tfry into branch 'master'. Some more help fragments. Don't show df num and df den hints for chi-sq test. Meik, I have modified the df den hint as explained on the list. Hope that is ok with you. svn path=/branches/external_plugins/; revision=4892 M +19 -10 rkwarddev_power_plugin_script.R http://commits.kde.org/rkward/a71d0171b33b7df85b3c7e8c0d4c11362cc5f64c diff --git a/rkwarddev_power_plugin_script.R b/rkwarddev_power_plugin_script.R index 091514b..029dd45 100644 --- a/rkwarddev_power_plugin_script.R +++ b/rkwarddev_power_plugin_script.R @@ -56,14 +56,15 @@ pwr.stat.drop <- rk.XML.dropdown(label="Select a method", options=list( "Chi-squared test"=c(val="pwr.chisq.test"), "Proportion tests"=c(val="pwr.p.test"), "Mean of a normal distribution (known variance)"=c(val="pwr.norm.test") - ), id.name="drp_pwr_stat") + ), help="Specify the statistical method to perform power estimation for", id.name="drp_pwr_stat") pwr.hypothesis.drop <- rk.XML.dropdown("Using test hypothesis", options=list( "Two-sided"=c(val="two.sided", chk=TRUE), "First is greater"=c(val="greater"), "Second is greater"=c(val="less") - ), + ), help="Specify the hypothesis to use. Note that for the one-sided hypothesis \"first is greater\", + a positive effect size is expected. For \"second is greater\", a negative effect size is expected.", id.name="drp_pwr_hypothesis") pwr.txt.hypothesis.neg <- rk.XML.text("Hypothesis probably expects a negative effect size!", id.name="pwr_txt_hypothesis_neg", type="warning") pwr.txt.hypothesis.pos <- rk.XML.text("Hypothesis probably expects a positive effect size!", id.name="pwr_txt_hypothesis_pos", type="warning") @@ -71,7 +72,8 @@ pwr.txt.hypothesis.pos <- rk.XML.text("Hypothesis probably expects a positive ef pwr.effect.etasq.rad <- rk.XML.radio(label="Provided effect size", options=list( "Cohen's f"=c(val="f", chk=TRUE), "Eta squared"=c(val="e2") - ), id.name="rad_effct_eta") + ), help="Only shown where applicable. Allows you to select, whether to specify the effect size as Cohen's f, or as Eta squared.", + id.name="rad_effct_eta") pwr.type.drop <- rk.XML.dropdown("Samples", options=list( @@ -79,7 +81,7 @@ pwr.type.drop <- rk.XML.dropdown("Samples", "Two samples (different sizes)"=c(val="two.sample.diff"), # pwr.t2n.test "Single sample (test against constant)"=c(val="one.sample"), "Paired samples"=c(val="paired") - ), + ), help="Only enabled where applicable. Specify the nature of samples used in the test. For samples of different sizes, only one sample size can be estimated.", id.name="drp_pwr_type") pwr.proptype.drop <- rk.XML.dropdown("Samples", @@ -87,15 +89,20 @@ pwr.proptype.drop <- rk.XML.dropdown("Samples", "Two samples (equal sizes)"=c(val="two.sample.same", chk=TRUE), # pwr.2p.test "Two samples (different sizes)"=c(val="two.sample.diff"), # pwr.2p2n.test "One sample"=c(val="one.sample") # pwr.p.test - ), + ), help=FALSE, # In the help file, same as t.test dropdown id.name="drp_pwr_proptype") -pwr.input.power <- rk.XML.spinbox(label="Power", min=0, max=1, initial=0.8) -pwr.input.df <- rk.XML.spinbox(label="Degrees of freedom", id.name="pwr_spin_df", min=1, real=FALSE, initial=30) -pwr.input.dfu <- rk.XML.spinbox(label="Degrees of freedom for numerator", id.name="pwr_spin_dfu", min=1, real=FALSE, initial=30) -pwr.input.dfv <- rk.XML.spinbox(label="Degrees of freedom for denominator", id.name="pwr_spin_dfv", min=1, real=FALSE, initial=30) +pwr.input.power <- rk.XML.spinbox(label="Power", min=0, max=1, initial=0.8, help="Targetted power of test (1 minus Type II error probability)") +pwr.input.df <- rk.XML.spinbox(label="Degrees of freedom", id.name="pwr_spin_df", min=1, real=FALSE, initial=30, + help="Only shown for chi-square statistics: Targetted degrees of freedom. As a reminder, this is (rows − 1)×(columns − 1) for a test of independence, + and (cells − 1) for a test of goodness of fit.") +pwr.input.dfu <- rk.XML.spinbox(label="Degrees of freedom for numerator", id.name="pwr_spin_dfu", min=1, real=FALSE, initial=30, + help="Only shown for general linear model: Targetted numerator degrees of freedom. As a reminder, this is the number of parameters to estimate, or number of groups/samples minus 1.") +pwr.input.dfv <- rk.XML.spinbox(label="Degrees of freedom for denominator", id.name="pwr_spin_dfv", min=1, real=FALSE, initial=30, + help="Only shown for general linear model: Available denominator degrees of freedom / degrees of freedom of the error term. + As a reminder, this is the total number of observations minus numerator degrees of freedom minus 1, or total number of observations minus number of groups/samples.") pwr.txt.dfu <- rk.XML.text("df<sub>num</sub>: k − 1", id.name="pwr_txt_dfu") -pwr.txt.dfv <- rk.XML.text("df<sub>den</sub>: k × (n − 1)", id.name="pwr_txt_dfv") +pwr.txt.dfv <- rk.XML.text("df<sub>den</sub>: N − k", id.name="pwr_txt_dfv") pwr.input.sample <- rk.XML.spinbox(label="Sample size", id.name="pwr_spin_sample0", min=1, real=FALSE, initial=30) pwr.input.sample.n1 <- rk.XML.spinbox(label="First sample size", id.name="pwr_spin_sample1", min=1, real=FALSE, initial=30) @@ -230,7 +237,9 @@ pwr.full.dialog <- rk.XML.dialog( rk.XML.connect(governor=pwr.gov.meth.df, client=pwr.frame.df, set="visible"), rk.XML.connect(governor=pwr.gov.meth.chisq, client=pwr.input.df, set="visible"), rk.XML.connect(governor=pwr.gov.meth.f2test, client=pwr.input.dfu, set="visible"), + rk.XML.connect(governor=pwr.gov.meth.f2test, client=pwr.txt.dfu, set="visible"), rk.XML.connect(governor=pwr.gov.meth.f2test, client=pwr.input.dfv, set="visible"), + rk.XML.connect(governor=pwr.gov.meth.f2test, client=pwr.txt.dfv, set="visible"), pwr.gov.efct.d <- rk.XML.convert(sources=list(pwr.gov.meth.ttest, pwr.gov.meth.norm), mode=c(or=""), id.name="pwr_lgc_efct_d"), rk.XML.connect(governor=pwr.gov.efct.d, client=pwr.txt.effect.d, set="visible"), |
From: Thomas F. <tho...@ru...> - 2015-01-11 20:14:13
|
Git commit fb74bf2d5e6093c2d46cff31fa7565f2b848e23f by Thomas Friedrichsmeier, on behalf of Meik Michalke. Committed on 11/10/2014 at 20:40. Pushed by tfry into branch 'master'. add a hint to the minimum required rkwarddev version. maybe rkwarddev should get its own dependency check for scripts. svn path=/branches/external_plugins/; revision=4894 M +1 -1 rkwarddev_power_plugin_script.R http://commits.kde.org/rkward/fb74bf2d5e6093c2d46cff31fa7565f2b848e23f diff --git a/rkwarddev_power_plugin_script.R b/rkwarddev_power_plugin_script.R index 029dd45..5933974 100644 --- a/rkwarddev_power_plugin_script.R +++ b/rkwarddev_power_plugin_script.R @@ -3,7 +3,7 @@ # note: this script only creates objects in your workspace, # *EXCEPT* for the last call, see below. -require(rkwarddev) +require(rkwarddev) ## this script needs rkwarddev >= 0.06-5 local({ # set the output directory to overwrite the actual plugin |
From: Thomas F. <tho...@ru...> - 2015-01-11 20:14:13
|
Git commit a6f2f1264b4e242b7fc0f3dbd88f1579c8c24fa4 by Thomas Friedrichsmeier, on behalf of Meik Michalke. Committed on 07/10/2014 at 21:06. Pushed by tfry into branch 'master'. rk.power: here's a script using the new .rkh generator feature (scan for "help="). if you set "help=FALSE", the node will not appear in the resulting help page. svn path=/branches/external_plugins/; revision=4886 M +53 -41 rkwarddev_power_plugin_script.R http://commits.kde.org/rkward/a6f2f1264b4e242b7fc0f3dbd88f1579c8c24fa4 diff --git a/rkwarddev_power_plugin_script.R b/rkwarddev_power_plugin_script.R index a084a12..0770ccb 100644 --- a/rkwarddev_power_plugin_script.R +++ b/rkwarddev_power_plugin_script.R @@ -25,17 +25,19 @@ dependencies.info <- rk.XML.dependencies( package=list(c(name="pwr"))) ) +rk.set.comp("Power analysis") pwr.parameter.rad <- rk.XML.radio(label="Parameter to determine", options=list( "Power of test"=c(val="Power", chk=TRUE), "Sample size"=c(val="Sample size"), "Effect size"=c(val="Effect size"), "Significance level"=c(val="Significance level") - ), id.name="rad_pwr_param") + ), id.name="rad_pwr_param", + help="foo") pwr.parameter.twosamples.rad <- rk.XML.radio(label="Estimate", options=list( - "First sample"=c(val="n1", chk=TRUE), - "Second sample"=c(val="n2") + "First sample"=c(val="n1"), + "Second sample"=c(val="n2", chk=TRUE) ), id.name="rad_pwr_param_2samples") pwr.parameter.twodf.rad <- rk.XML.radio(label="Estimate", options=list( @@ -51,7 +53,8 @@ pwr.stat.drop <- rk.XML.dropdown(label="Select a method", options=list( "Chi-squared test"=c(val="pwr.chisq.test"), "Proportion tests"=c(val="pwr.p.test"), "Mean of a normal distribution (known variance)"=c(val="pwr.norm.test") - ), id.name="drp_pwr_stat") + ), id.name="drp_pwr_stat", + help="bar") pwr.hypothesis.drop <- rk.XML.dropdown("Using test hypothesis", options=list( @@ -85,7 +88,8 @@ pwr.proptype.drop <- rk.XML.dropdown("Samples", ), id.name="drp_pwr_proptype") -pwr.input.power <- rk.XML.spinbox(label="Power", min=0, max=1, initial=0.8) +pwr.input.power <- rk.XML.spinbox(label="Power", min=0, max=1, initial=0.8, + help="baz") pwr.input.df <- rk.XML.spinbox(label="Degrees of freedom", id.name="pwr_spin_df", min=1, real=FALSE, initial=30) pwr.input.dfu <- rk.XML.spinbox(label="Degrees of freedom for numerator", id.name="pwr_spin_dfu", min=1, real=FALSE, initial=30) pwr.input.dfv <- rk.XML.spinbox(label="Degrees of freedom for denominator", id.name="pwr_spin_dfv", min=1, real=FALSE, initial=30) @@ -114,7 +118,8 @@ pwr.txt.effect.h <- rk.XML.text("Measure for selected method is <b>Cohen's h</b> pwr.input.signif <- rk.XML.spinbox(label="Significance level", min=0, max=1, initial=0.05) -save.results.pwr <- rk.XML.saveobj("Save results to workspace", initial="pwr.result") +save.results.pwr <- rk.XML.saveobj("Save results to workspace", initial="pwr.result", + component="Power analysis", help=FALSE) tab.pwr.data <- rk.XML.row( rk.XML.col( @@ -295,7 +300,7 @@ pwr.full.dialog <- rk.XML.dialog( ## JavaScript pwr.js.calc <- rk.paste.JS( - echo("\tpwr.result <- "), + echo("\tpwr.result <- try(\n\t\t"), ######### ## t-test ite(id(pwr.stat.drop, " == \"pwr.t.test\""), @@ -305,24 +310,24 @@ pwr.js.calc <- rk.paste.JS( rk.paste.JS(# yes echo("pwr.t2n.test("), ite(id(pwr.parameter.rad, " != \"Sample size\""), - echo("\n\t\tn1=", pwr.input.sample.n1, ",\n\t\tn2=", pwr.input.sample.n2), + echo("\n\t\t\tn1=", pwr.input.sample.n1, ",\n\t\t\tn2=", pwr.input.sample.n2), ite(id(pwr.parameter.twosamples.rad, " == \"n2\""), - echo("\n\t\tn1=", pwr.input.sample.n1, ","), - echo("\n\t\tn2=", pwr.input.sample.n2, ",") + echo("\n\t\t\tn1=", pwr.input.sample.n1, ","), + echo("\n\t\t\tn2=", pwr.input.sample.n2, ",") ) ) ), rk.paste.JS(#no echo("pwr.t.test("), ite(id(pwr.parameter.rad, " != \"Sample size\""), - echo("\n\t\tn=", pwr.input.sample) + echo("\n\t\t\tn=", pwr.input.sample) ) ) ), ite(id(pwr.parameter.rad, " != \"Effect size\""), rk.paste.JS( ite(id(pwr.parameter.rad, " != \"Sample size\""), echo(",")), - echo("\n\t\td=", pwr.input.effect) + echo("\n\t\t\td=", pwr.input.effect) ) ) ) @@ -333,12 +338,12 @@ pwr.js.calc <- rk.paste.JS( rk.paste.JS( echo("pwr.r.test("), ite(id(pwr.parameter.rad, " != \"Sample size\""), - echo("\n\t\tn=", pwr.input.sample) + echo("\n\t\t\tn=", pwr.input.sample) ), ite(id(pwr.parameter.rad, " != \"Effect size\""), rk.paste.JS( ite(id(pwr.parameter.rad, " != \"Sample size\""), echo(",")), - echo("\n\t\tr=", pwr.input.effect) + echo("\n\t\t\tr=", pwr.input.effect) ) ) ) @@ -348,14 +353,14 @@ pwr.js.calc <- rk.paste.JS( ite(id(pwr.stat.drop, " == \"pwr.anova.test\""), rk.paste.JS( echo("pwr.anova.test("), - echo("\n\t\tk=", pwr.input.groups), + echo("\n\t\t\tk=", pwr.input.groups), ite(id(pwr.parameter.rad, " != \"Sample size\""), - echo(",\n\t\tn=", pwr.input.sample) + echo(",\n\t\t\tn=", pwr.input.sample) ), ite(id(pwr.parameter.rad, " != \"Effect size\""), ite(id(pwr.effect.etasq.rad, " == \"f\""), - echo(",\n\t\tf=", pwr.input.effect), - echo(",\n\t\tf=sqrt(", pwr.input.effect,"/(1-", pwr.input.effect,")) # calculate f from eta squared") + echo(",\n\t\t\tf=", pwr.input.effect), + echo(",\n\t\t\tf=sqrt(", pwr.input.effect,"/(1-", pwr.input.effect,")) # calculate f from eta squared") ) ) ) @@ -366,15 +371,15 @@ pwr.js.calc <- rk.paste.JS( rk.paste.JS( echo("pwr.f2.test("), ite(id(pwr.parameter.rad, " != \"Sample size\""), - echo(",\n\t\tu=", pwr.input.dfu, ",\n\t\tv=", pwr.input.dfv), + echo(",\n\t\t\tu=", pwr.input.dfu, ",\n\t\t\tv=", pwr.input.dfv), ite(id(pwr.parameter.twodf.rad, " == \"v\""), - echo("\n\t\tu=", pwr.input.dfu), - echo("\n\t\tv=", pwr.input.dfv) + echo("\n\t\t\tu=", pwr.input.dfu), + echo("\n\t\t\tv=", pwr.input.dfv) ) ), ite(id(pwr.parameter.rad, " != \"Effect size\""), rk.paste.JS( - echo(",\n\t\tf2=", pwr.input.effect) + echo(",\n\t\t\tf2=", pwr.input.effect) ) ) ) @@ -385,15 +390,15 @@ pwr.js.calc <- rk.paste.JS( rk.paste.JS( echo("pwr.chisq.test("), ite(id(pwr.parameter.rad, " != \"Effect size\""), - echo("\n\t\tw=", pwr.input.effect) + echo("\n\t\t\tw=", pwr.input.effect) ), ite(id(pwr.parameter.rad, " != \"Sample size\""), rk.paste.JS( ite(id(pwr.parameter.rad, " != \"Effect size\""), echo(",")), - echo("\n\t\tN=", pwr.input.sample) + echo("\n\t\t\tN=", pwr.input.sample) ) ), - echo(",\n\t\tdf=", pwr.input.df) + echo(",\n\t\t\tdf=", pwr.input.df) ) ), ############## @@ -404,20 +409,20 @@ pwr.js.calc <- rk.paste.JS( ite(id(pwr.proptype.drop, " == \"two.sample.diff\""), echo("pwr.2p2n.test(")), ite(id(pwr.proptype.drop, " == \"one.sample\""), echo("pwr.p.test(")), ite(id(pwr.parameter.rad, " != \"Effect size\""), - echo("\n\t\th=", pwr.input.effect) + echo("\n\t\t\th=", pwr.input.effect) ), ite(id(pwr.parameter.rad, " != \"Sample size\""), rk.paste.JS( ite(id(pwr.parameter.rad, " != \"Effect size\""), echo(",")), ite(id(pwr.proptype.drop, " != \"two.sample.diff\""), - echo("\n\t\tn=", pwr.input.sample), - echo("\n\t\tn1=", pwr.input.sample.n1, ",\n\t\tn2=", pwr.input.sample.n2) + echo("\n\t\t\tn=", pwr.input.sample), + echo("\n\t\t\tn1=", pwr.input.sample.n1, ",\n\t\t\tn2=", pwr.input.sample.n2) ) ), ite(id(pwr.proptype.drop, " == \"two.sample.diff\""), ite(id(pwr.parameter.twosamples.rad, " == \"n2\""), - echo("\n\t\tn1=", pwr.input.sample.n1, ","), - echo("\n\t\tn2=", pwr.input.sample.n2, ",") + echo(",\n\t\t\tn1=", pwr.input.sample.n1), + echo(",\n\t\t\tn2=", pwr.input.sample.n2) ) ) ) @@ -429,46 +434,49 @@ pwr.js.calc <- rk.paste.JS( rk.paste.JS( echo("pwr.norm.test("), ite(id(pwr.parameter.rad, " != \"Effect size\""), - echo("\n\t\td=", pwr.input.effect) + echo("\n\t\t\td=", pwr.input.effect) ), ite(id(pwr.parameter.rad, " != \"Sample size\""), rk.paste.JS( ite(id(pwr.parameter.rad, " != \"Effect size\""), echo(",")), - echo("\n\t\tn=", pwr.input.sample) + echo("\n\t\t\tn=", pwr.input.sample) ) ) ) ), ite(id(pwr.parameter.rad, " != \"Significance level\""), - ite(id(pwr.input.signif, " != 0.05"), echo("\n\t\tsig.level=", pwr.input.signif, ",")), - echo(",\n\t\tsig.level=NULL") + ite(id(pwr.input.signif, " != 0.05"), echo("\n\t\t\tsig.level=", pwr.input.signif, ",")), + echo(",\n\t\t\tsig.level=NULL") ), ite(id(pwr.parameter.rad, " != \"Power\""), - echo(",\n\t\tpower=", pwr.input.power) + echo(",\n\t\t\tpower=", pwr.input.power) ), ite(id(pwr.stat.drop, " == \"pwr.t.test\" & ", pwr.type.drop, " != \"two.sample.diff\" & ", pwr.type.drop, " != \"two.sample\""), - echo(",\n\t\ttype=\"", pwr.type.drop, "\"") + echo(",\n\t\t\ttype=\"", pwr.type.drop, "\"") ), ite(id(pwr.stat.drop, " != \"pwr.anova.test\" & ", pwr.stat.drop, " != \"pwr.f2.test\" & ", pwr.stat.drop, " != \"pwr.chisq.test\""), ite(id(pwr.hypothesis.drop, " != \"two.sided\""), - echo(",\n\t\talternative=\"", pwr.hypothesis.drop, "\"") + echo(",\n\t\t\talternative=\"", pwr.hypothesis.drop, "\"") ) ), - echo("\n\t)\n\n") + echo("\n\t\t)\n\t)\n\n") ) pwr.js.print <- rk.paste.JS( rk.JS.vars(list(pwr.stat.drop, pwr.parameter.rad)), echo( + "\t# Catch errors due to unsuitable data\n", + "\tif(class(pwr.result) == \"try-error\"){\n", + "\t\trk.print(\"Power anaylsis not possible with the data you provided\")\n", + "\t\treturn()\n\t}\n\n", "\t# Prepare printout\n", - "\tmethod <- pwr.result[[\"method\"]]\n", "\tnote <- pwr.result[[\"note\"]]\n", "\tparameters <- list(\"Target measure\"=\"", pwr.parameter.rad, "\")\n", "\tif(!is.null(pwr.result[[\"alternative\"]])){\n\t\tparameters[[\"alternative\"]] <- pwr.result[[\"alternative\"]]\n\t}\n\n", + "\trk.header(pwr.result[[\"method\"]], parameters=parameters)\n", "\tpwr.result[c(\"method\", \"note\", \"alternative\")] <- NULL\n", "\tpwr.result <- as.data.frame(unlist(pwr.result))\n", "\tcolnames(pwr.result) <- \"Parameters\"\n\n", - "\trk.header(method, parameters=parameters)\n", "\trk.results(pwr.result)\n", "\tif(!is.null(note)){\n\t\trk.print(paste(\"<strong>Note:</strong> \", note))\n\t}\n\n" ), @@ -515,9 +523,13 @@ pwr.plugin.dir <<- rk.plugin.skeleton( require="pwr", calculate=pwr.js.calc, printout=pwr.js.print), + rkh=list( + summary=rk.rkh.summary("Perform power analysis and sample size estimation, using the pwr package."), + usage=rk.rkh.usage("See blow.") + ), pluginmap=list(name="Power analysis", hierarchy=list("analysis")), dependencies=dependencies.info, - create=c("pmap", "xml", "js", "desc"), + create=c("pmap", "xml", "js", "desc", "rkh"), overwrite=overwrite, tests=FALSE, # edit=TRUE, |