<?xml version="1.0" encoding="UTF-8" standalone="yes"?><oembed><version><![CDATA[1.0]]></version><provider_name><![CDATA[Replicability-Index]]></provider_name><provider_url><![CDATA[https://replicationindex.wordpress.com]]></provider_url><author_name><![CDATA[Dr. R]]></author_name><author_url><![CDATA[https://replicationindex.wordpress.com/author/rindex4science/]]></author_url><title><![CDATA[R-Code for (Simplified) Powergraphs with StatCheck&nbsp;Dataset]]></title><type><![CDATA[link]]></type><html><![CDATA[<p>First you need to download the datafile from<br />
<a href="https://github.com/chartgerink/2016statcheck_data/blob/master/statcheck_dataset.csv" rel="nofollow">https://github.com/chartgerink/2016statcheck_data/blob/master/statcheck_dataset.csv</a></p>
<p>Right click on &lt;Raw&gt; and save file.</p>
<p>When you are done, provide Path where R can find the file.</p>
<p># Provide Path<br />
GetPath =  &lt;path&gt;</p>
<p># give file name<br />
fn = &#8220;statcheck_dataset.csv&#8221;</p>
<p># read datafile<br />
d = read.csv(paste0(GetPath,fn))</p>
<p># get t-values<br />
t = d$Value<br />
t[d$Statistic != &#8220;t&#8221;] = 0<br />
summary(t)</p>
<p>#convert t-values into absolute z-scores<br />
z.val.t = qnorm(pt(abs(t),d$df2,log.p=TRUE),log.p=TRUE)<br />
z.val.t[z.val.t &gt; 20] = 20<br />
z.val.t[is.na(z.val.t)] = 0<br />
summary(z.val.t)<br />
hist(z.val.t[z.val.t &lt; 6 &amp; z.val.t &gt; 0],breaks=30)<br />
abline(v=1.96,col=&#8221;red&#8221;,lwd=2)<br />
abline(v=1.65,col=&#8221;red&#8221;,lty=3)</p>
<p>#get F-values<br />
F = d$Value<br />
F[d$Statistic != &#8220;F&#8221;] = 0<br />
F[F &gt; 20] = 400<br />
summary(F)</p>
<p>#convert F-values into absolute z-scores<br />
z.val.F = qnorm(pf(abs(F),d$df1,d$df2,log.p=TRUE),log.p=TRUE)<br />
z.val.F[z.val.F &gt; 20] = 20<br />
z.val.F[z.val.F &lt; 0] = 0<br />
z.val.F[is.na(z.val.F)] = 0<br />
summary(z.val.F)<br />
hist(z.val.F[z.val.F &lt; 6 &amp; z.val.F &gt; 0],breaks=30)<br />
abline(v=1.96,col=&#8221;red&#8221;,lwd=2)<br />
abline(v=1.65,col=&#8221;red&#8221;,lty=3)</p>
<p>#get z-scores and convert into absolute z-scores<br />
z.val.z = abs(d$Value)<br />
z.val.z[d$Statistic != &#8220;Z&#8221;] = 0<br />
z.val.z[z.val.z &gt; 20] = 20<br />
summary(z.val.z)<br />
hist(z.val.z[z.val.z &lt; 6 &amp; z.val.z &gt; 0],breaks=30)<br />
abline(v=1.96,col=&#8221;red&#8221;,lwd=2)<br />
abline(v=1.65,col=&#8221;red&#8221;,lty=3)</p>
<p>#check results<br />
summary(cbind(z.val.t,z.val.F,z.val.z))</p>
<p>#get z-values for t,F, and z-tests<br />
z.val = z.val.t + z.val.F + z.val.z</p>
<p>#check median absolute z-score by test statistic<br />
tapply(z.val,d$Statistic,median)</p>
<p>##### save as r data file and reuse</p>
<p>### run analysis for specific author</p>
<p># provide an author name as it appears in the authors column of the data file<br />
author = &#8220;Stapel&#8221;<br />
author.found = grepl(pattern = author,d$authors,ignore.case=TRUE)<br />
table(author.found)</p>
<p># give title for graphic<br />
Name = paste0(&#8220;StatCheck &#8220;,author)</p>
<p># select z-scores of author<br />
z.val.sel = z.val[author.found == &#8220;TRUE&#8221;]</p>
<p>#set limit of y-axis of graph<br />
ylim = 1</p>
<p>#create histogram<br />
hist(z.val.sel[z.val.sel &lt; 6 &amp; z.val.sel &gt; 0],xlim=c(0,6),ylab=&#8221;Density&#8221;,xlab=&#8221;|z| scores&#8221;,breaks=30,ylim=c(0,ylim),freq=FALSE,main=Name)<br />
#add line for significance<br />
abline(v=1.96,col=&#8221;red&#8221;,lwd=2)<br />
#add line for marginal significance<br />
abline(v=1.65,col=&#8221;red&#8221;,lty=3)</p>
<p>#compute median observed power<br />
mop = median(z.val[z.val &gt; 2 &amp; z.val &lt; 4])<br />
# add bias to move normal distribution of fitted function to match observed distribution<br />
bias = 0<br />
# change variance of normal distribution to model heterogeneity (1 = equal power for all studies)<br />
hetero = 1</p>
<p>### add fitted model curve to the plot<br />
par(new=TRUE)<br />
curve(dnorm(x,mop-bias,hetero),0,6,col=&#8221;red&#8221;,ylim=c(0,ylim),xlab=&#8221;&#8221;,ylab=&#8221;&#8221;)</p>
<p>### when satisfied with fit compute power<br />
power = length(z.val.sel[z.val.sel &gt; 1.96 &amp; z.val.sel &lt; 4]) * pnorm(mop &#8211; bias,1.96) + length(z.val.sel[z.val.sel &gt; 4])<br />
power = power / length(z.val.sel[z.val.sel &gt; 1.96])</p>
<p>### add power estimate to the figure<br />
text(3,.8,pos=4,paste0(&#8220;Power: &#8220;,round(power,2)))</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></html><thumbnail_url><![CDATA[https://replicationindex.files.wordpress.com/2016/06/statcheckstapel.png?fit=440%2C330]]></thumbnail_url><thumbnail_width><![CDATA[331]]></thumbnail_width><thumbnail_height><![CDATA[330]]></thumbnail_height></oembed>