Effect Size Calculator 1

Group 1:

Group 2:

Option:

Mean of the differences and 95% CI

t-test

Effect size indices

Note

This web application is developed with Shiny.

Code

Source code for this application is based on "The handbook of Research in Foreign Language Learning and Teaching" (Takeuchi & Mizumoto, 2012).

The code for this web application is available at GitHub.

If you want to run this code on your computer (in a local R session), run the code below:
`library(shiny)`
`runGitHub("mes","mizumot")`

Citation in Publications

Article

Mizumoto, A., & Plonsky, L. (2015). R as a lingua franca: Advantages of using R for quantitative research in applied linguistics. Applied Linguistics, Advance online publication. doi:10.1093/applin/amv025

Recommended

To learn more about R, I suggest this excellent and free e-book (pdf), A Guide to Doing Statistics in Second Language Research Using R, written by Dr. Jenifer Larson-Hall.

Also, if you are a cool Mac user and want to use R with GUI, MacR is defenitely the way to go!

Author

Atsushi MIZUMOTO, Ph.D.
Professor of Applied Linguistics
Faculty of Foreign Language Studies /
Graduate School of Foreign Language Education and Research,
Kansai University, Osaka, Japan

Code for "Effect Size Calculator 1" by Atsushi Mizumoto

``````library(shiny)
library(compute.es)

shinyServer(function(input, output) {

options(warn=-1)

sliderValues <- reactive ({
n1 <- as.integer(input\$nx)
n2 <- as.integer(input\$ny)

data.frame(
n = c(n1, n2),
Mean = c(input\$mx, input\$my),
SD = c(input\$sdx, input\$sdy),
stringsAsFactors=FALSE)
})

difference <- reactive({
nx <- input\$nx
mx <- input\$mx
sdx <- input\$sdx
ny <- input\$ny
my <- input\$my
sdy <- input\$sdy

if (input\$varequal) {
df <- nx+ny-2
v <- ((nx-1)*sdx^2+(ny-1)*sdy^2)/df
diff <- round((mx - my), 3)
diff.std <- sqrt(v * (1/nx + 1/ny))
diff.lower <- round(diff + diff.std * qt(0.05/2, df),3)
diff.upper <- round(diff + diff.std * qt(0.05/2, df, lower.tail = FALSE),3)
} else {
stderrx <- sqrt(sdx^2/nx)
stderry <- sqrt(sdy^2/ny)
stderr <- sqrt(stderrx^2 + stderry^2)
df <- round(stderr^4/(stderrx^4/(nx - 1) + stderry^4/(ny - 1)),3)
tstat <- round(abs(mx - my)/stderr,3)
diff <- round((mx - my), 3)
cint <- qt(1 - 0.05/2, df)
diff.lower <- round(((tstat - cint) * stderr),3)
diff.upper <- round(((tstat + cint) * stderr),3)
}

cat("Mean of the differences [95% CI] =", diff, "[", diff.lower,",", diff.upper,"]", "\n")
})

es <- reactive({
nx <- input\$nx
mx <- input\$mx
sdx <- input\$sdx
ny <- input\$ny
my <- input\$my
sdy <- input\$sdy

mes(mx, my, sdx, sdy, nx, ny)
})

ttest <- reactive({
nx <- input\$nx
mx <- input\$mx
sdx <- input\$sdx
ny <- input\$ny
my <- input\$my
sdy <- input\$sdy

if (input\$varequal) {
df1 <- input\$nx+input\$ny-2
v1 <- ((input\$nx-1)*input\$sdx^2+(input\$ny-1)*input\$sdy^2)/df1
tstat1 <- round(abs(input\$mx-input\$my)/sqrt(v1*(1/input\$nx+1/input\$ny)),3)
diff <- round((input\$mx - input\$my), 3)
P1 <- 2 * pt(-abs(tstat1), df1)

cat("Independent t-test (equal variances assumed)", "\n",
" t =", tstat1, ",", "df =", df1, ",", "p-value =", P1, "\n")

} else {

stderrx <- sqrt(input\$sdx^2/input\$nx)
stderry <- sqrt(input\$sdy^2/input\$ny)
stderr <- sqrt(stderrx^2 + stderry^2)
df2 <- round(stderr^4/(stderrx^4/(input\$nx - 1) + stderry^4/(input\$ny - 1)),3)
tstat2 <- round(abs(input\$mx - input\$my)/stderr,3)
P2 <- 2 * pt(-abs(tstat2), df2)

cat("Welch's t-test (equal variances not assumed)", "\n",
" t =", tstat2, ",", "df =", df2, ",", "p-value =", P2, "\n")
}
})

vartest <- reactive({
if (input\$vartest) {
nx <- input\$nx
sdx <- input\$sdx
vx <- sdx^2
ny <- input\$ny
sdy <- input\$sdy
vy <- sdy^2

if (vx > vy) {
f <- vx/vy
df1 <- nx-1
df2 <- ny-1
} else {
f <- vy/vx
df1 <- ny-1
df2 <- nx-1
}

p <- 2*pf(f, df1, df2, lower.tail=FALSE)
dfs <- c("num df"=df1, "denom df"=df2)

cat(" Test for equality of variances", "\n",
"  F =", f, ",", "num df =", df1, ",", "denom df =", df2, "\n",
"  p-value = ", p, "\n"
)

} else {
cat("Test for equality of variances will be displayed if the option is selected.")
}
})

# Show the values using an HTML table
output\$values <- renderTable({
sliderValues()
})

# Show the final calculated value

output\$difference.out <- renderPrint({
difference()
})

output\$es.out <- renderPrint({
es()
})

output\$ttest.out <- renderPrint({
ttest()
})

output\$vartest.out <- renderPrint({
vartest()
})

})``````
``````library(shiny)

# Define UI for dataset viewer application
shinyUI(pageWithSidebar(

# Application title

# Sidebar
sidebarPanel(

p(strong("Group 1:")),

numericInput("nx", " Sample size (n)", 21),

numericInput("mx", " Mean", 61.33),

numericInput("sdx", " SD", 16.43),

p(br()),

p(strong("Group 2:")),

numericInput("ny", " Sample size (n)", 24),

numericInput("my", " Mean", 59.79),

numericInput("sdy", " SD", 18.50),

p(br()),

strong('Option:'),

checkboxInput("varequal", "t-test with equal variances assumed", FALSE),

checkboxInput("vartest", "Show test for equality of variances", FALSE)

),

mainPanel(
tabsetPanel(

tabPanel("Main",
h3("Checking the input data"),
tableOutput("values"),

br(),

h3("Mean of the differences and 95% CI"),
verbatimTextOutput("difference.out"),

br(),

h3("t-test"),
verbatimTextOutput("ttest.out"),
h3(""),
verbatimTextOutput("vartest.out"),

br(),

h3("Effect size indices"),
verbatimTextOutput("es.out"),

br()

),

strong('Note'),
p('This web application is developed with',
a("Shiny.", href="http://www.rstudio.com/shiny/", target="_blank"),
''),

br(),

strong('Code'),
p('Source code for this application is based on',
a('"The handbook of Research in Foreign Language Learning and Teaching" (Takeuchi & Mizumoto, 2012).', href='http://mizumot.com/handbook/', target="_blank")),

p('The code for this web application is available at',
a('GitHub.', href='https://github.com/mizumot/mes', target="_blank")),

p('If you want to run this code on your computer (in a local R session), run the code below:',
br(),
code('library(shiny)'),br(),
code('runGitHub("mes","mizumot")')
),

br(),

strong('Citation in Publications'),

br(),

strong('Article'),
p('Mizumoto, A., & Plonsky, L. (2015).', a("R as a lingua franca: Advantages of using R for quantitative research in applied linguistics.", href='http://applij.oxfordjournals.org/content/early/2015/06/24/applin.amv025.abstract', target="_blank"), em('Applied Linguistics,'), 'Advance online publication. doi:10.1093/applin/amv025'),

br(),

strong('Recommended'),
a("A Guide to Doing Statistics in Second Language Research Using R,", href="http://cw.routledge.com/textbooks/9780805861853/guide-to-R.asp", target="_blank"),
'written by Dr. Jenifer Larson-Hall.'),

p('Also, if you are a cool Mac user and want to use R with GUI,',
a("MacR", href="http://www.urano-ken.com/blog/2013/02/25/installing-and-using-macr/", target="_blank"),
'is defenitely the way to go!'),

br(),

strong('Author'),
p(a("Atsushi MIZUMOTO,", href="http://mizumot.com", target="_blank"),' Ph.D.',br(),
'Professor of Applied Linguistics',br(),
'Faculty of Foreign Language Studies /',br(),
'Graduate School of Foreign Language Education and Research,',br(),
'Kansai University, Osaka, Japan'),

br(),

a(img(src="http://i.creativecommons.org/p/mark/1.0/80x15.png"), target="_blank", href="http://creativecommons.org/publicdomain/mark/1.0/")
)
)
)
))``````