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, |