{
"cells": [
{
"cell_type": "markdown",
"id": "c47ebc4d-d172-4e70-9e16-cf6a0ba7153a",
"metadata": {},
"source": [
"# Multiple Factor Nonparametric Tests - R"
]
},
{
"cell_type": "markdown",
"id": "4ecefac5-3aac-4309-a413-d1e62eb0fc81",
"metadata": {},
"source": [
"## Aligned Rank Transform for Between Subjects (ART)\n",
"\n",
"* **Samples:** `≥2`\n",
"* **Levels:** `≥2`\n",
"* **Between or Within Subjects:** Between\n",
"* **Reporting:** \"Figure 10 shows boxplots for all levels of X1×X2. A nonparametric analysis of variance based on the Aligned Rank Transform indicated no statistically significant effect on Y of X1 (F(1, 56) = 1.98, n.s.), or of X2 (F(1, 56) = 0.81, n.s.), but there was a statistically significant X1×X2 interaction (F(1, 56) = 13.65, p < .001).\""
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "c7fa707e-af25-4dab-a4f6-cddd99a5ca4e",
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"A data.frame: 20 × 4\n",
"\n",
"\t | S | X1 | X2 | Y |
\n",
"\t | <int> | <chr> | <chr> | <dbl> |
\n",
"\n",
"\n",
"\t1 | 1 | a | a | 8.236467 |
\n",
"\t2 | 2 | a | b | 12.965256 |
\n",
"\t3 | 3 | b | a | 10.782947 |
\n",
"\t4 | 4 | b | b | 7.385979 |
\n",
"\t5 | 5 | a | a | 12.041681 |
\n",
"\t6 | 6 | a | b | 12.779924 |
\n",
"\t7 | 7 | b | a | 11.581190 |
\n",
"\t8 | 8 | b | b | 9.529899 |
\n",
"\t9 | 9 | a | a | 12.658464 |
\n",
"\t10 | 10 | a | b | 14.159172 |
\n",
"\t11 | 11 | b | a | 9.548367 |
\n",
"\t12 | 12 | b | b | 7.859910 |
\n",
"\t13 | 13 | a | a | 10.395678 |
\n",
"\t14 | 14 | a | b | 10.385932 |
\n",
"\t15 | 15 | b | a | 12.512831 |
\n",
"\t16 | 16 | b | b | 8.080291 |
\n",
"\t17 | 17 | a | a | 10.252031 |
\n",
"\t18 | 18 | a | b | 12.052793 |
\n",
"\t19 | 19 | b | a | 13.768800 |
\n",
"\t20 | 20 | b | b | 11.417579 |
\n",
"\n",
"
\n"
],
"text/latex": [
"A data.frame: 20 × 4\n",
"\\begin{tabular}{r|llll}\n",
" & S & X1 & X2 & Y\\\\\n",
" & & & & \\\\\n",
"\\hline\n",
"\t1 & 1 & a & a & 8.236467\\\\\n",
"\t2 & 2 & a & b & 12.965256\\\\\n",
"\t3 & 3 & b & a & 10.782947\\\\\n",
"\t4 & 4 & b & b & 7.385979\\\\\n",
"\t5 & 5 & a & a & 12.041681\\\\\n",
"\t6 & 6 & a & b & 12.779924\\\\\n",
"\t7 & 7 & b & a & 11.581190\\\\\n",
"\t8 & 8 & b & b & 9.529899\\\\\n",
"\t9 & 9 & a & a & 12.658464\\\\\n",
"\t10 & 10 & a & b & 14.159172\\\\\n",
"\t11 & 11 & b & a & 9.548367\\\\\n",
"\t12 & 12 & b & b & 7.859910\\\\\n",
"\t13 & 13 & a & a & 10.395678\\\\\n",
"\t14 & 14 & a & b & 10.385932\\\\\n",
"\t15 & 15 & b & a & 12.512831\\\\\n",
"\t16 & 16 & b & b & 8.080291\\\\\n",
"\t17 & 17 & a & a & 10.252031\\\\\n",
"\t18 & 18 & a & b & 12.052793\\\\\n",
"\t19 & 19 & b & a & 13.768800\\\\\n",
"\t20 & 20 & b & b & 11.417579\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 20 × 4\n",
"\n",
"| | S <int> | X1 <chr> | X2 <chr> | Y <dbl> |\n",
"|---|---|---|---|---|\n",
"| 1 | 1 | a | a | 8.236467 |\n",
"| 2 | 2 | a | b | 12.965256 |\n",
"| 3 | 3 | b | a | 10.782947 |\n",
"| 4 | 4 | b | b | 7.385979 |\n",
"| 5 | 5 | a | a | 12.041681 |\n",
"| 6 | 6 | a | b | 12.779924 |\n",
"| 7 | 7 | b | a | 11.581190 |\n",
"| 8 | 8 | b | b | 9.529899 |\n",
"| 9 | 9 | a | a | 12.658464 |\n",
"| 10 | 10 | a | b | 14.159172 |\n",
"| 11 | 11 | b | a | 9.548367 |\n",
"| 12 | 12 | b | b | 7.859910 |\n",
"| 13 | 13 | a | a | 10.395678 |\n",
"| 14 | 14 | a | b | 10.385932 |\n",
"| 15 | 15 | b | a | 12.512831 |\n",
"| 16 | 16 | b | b | 8.080291 |\n",
"| 17 | 17 | a | a | 10.252031 |\n",
"| 18 | 18 | a | b | 12.052793 |\n",
"| 19 | 19 | b | a | 13.768800 |\n",
"| 20 | 20 | b | b | 11.417579 |\n",
"\n"
],
"text/plain": [
" S X1 X2 Y \n",
"1 1 a a 8.236467\n",
"2 2 a b 12.965256\n",
"3 3 b a 10.782947\n",
"4 4 b b 7.385979\n",
"5 5 a a 12.041681\n",
"6 6 a b 12.779924\n",
"7 7 b a 11.581190\n",
"8 8 b b 9.529899\n",
"9 9 a a 12.658464\n",
"10 10 a b 14.159172\n",
"11 11 b a 9.548367\n",
"12 12 b b 7.859910\n",
"13 13 a a 10.395678\n",
"14 14 a b 10.385932\n",
"15 15 b a 12.512831\n",
"16 16 b b 8.080291\n",
"17 17 a a 10.252031\n",
"18 18 a b 12.052793\n",
"19 19 b a 13.768800\n",
"20 20 b b 11.417579"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Example data\n",
"# df has subjects (S), two between-Ss factors (X1,X2) each w/levels (a,b), and continuous response (Y)\n",
"df <- read.csv(\"data/2F2LBs.csv\")\n",
"head(df, 20)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "9c5f3020-cc55-4064-bb7d-867f7d1f37dc",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Loading required package: survival\n",
"\n"
]
},
{
"data": {
"text/plain": [
"\n",
"\tExact Wilcoxon-Mann-Whitney Test\n",
"\n",
"data: Y by X (a, b)\n",
"Z = -2.4394, p-value = 0.01425\n",
"alternative hypothesis: true mu is not equal to 0\n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# library(ARTool)\n",
"# df$S = factor(df$S) # Subject id is nominal (unused)\n",
"# df$X1 = factor(df$X1) # X1 is a 2-level factor\n",
"# df$X2 = factor(df$X2) # X2 is a 2-level factor\n",
"# m = art(Y ~ X1*X2, data=df)\n",
"# anova(m)"
]
},
{
"cell_type": "markdown",
"id": "d2e9942f-eb49-4a79-b244-cdcc21b5a691",
"metadata": {},
"source": [
"## Generalized Linear Model (GLM)\n",
"\n",
"* **Samples:** `≥2`\n",
"* **Levels:** `≥2`\n",
"* **Between or Within Subjects:** Between\n",
"* **Reporting:** \"The median of ‘a’ was 11.92 (IQR = 2.35) and of ‘b’ was 10.74 (IQR = 2.29). This difference was statistically significant according to a Wilcoxon signed-rank test (Z = 2.11, p < .05).\"\n",
"\n",
"[See Generalized Linear (Mixed) Models: Distributions and Canonical Links]()"
]
},
{
"cell_type": "markdown",
"id": "328e4c96-8c2b-4ce5-865d-b9a0784dcc78",
"metadata": {},
"source": [
"## Aligned Rank Transform for Within Subjects (ART)\n",
"\n",
"* **Samples:** `≥2`\n",
"* **Levels:** `≥2`\n",
"* **Between or Within Subjects:** Within\n",
"* **Reporting:** \"Figure 11 shows boxplots for all levels of X1×X2. A nonparametric analysis of variance based on the Aligned Rank Transform indicated no statistically significant effect on Y of X1 (F(1, 42) = 1.85, n.s.) or of the X1×X2 interaction (F(1, 42) = 1.93, n.s.), but there was a statistically significant effect of X2 (F(1, 42) = 24.97, p < .0001).\""
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "494b0730-a4d2-4d93-a4a9-4a3d2fbe6580",
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"A data.frame: 20 × 4\n",
"\n",
"\t | S | X1 | X2 | Y |
\n",
"\t | <int> | <chr> | <chr> | <dbl> |
\n",
"\n",
"\n",
"\t1 | 1 | a | a | 13.177771 |
\n",
"\t2 | 1 | a | b | 13.299755 |
\n",
"\t3 | 1 | b | a | 9.909350 |
\n",
"\t4 | 1 | b | b | 16.457684 |
\n",
"\t5 | 2 | a | a | 11.770180 |
\n",
"\t6 | 2 | a | b | 14.804296 |
\n",
"\t7 | 2 | b | a | 9.819264 |
\n",
"\t8 | 2 | b | b | 13.907344 |
\n",
"\t9 | 3 | a | a | 8.535872 |
\n",
"\t10 | 3 | a | b | 12.210064 |
\n",
"\t11 | 3 | b | a | 12.448765 |
\n",
"\t12 | 3 | b | b | 12.204888 |
\n",
"\t13 | 4 | a | a | 10.287867 |
\n",
"\t14 | 4 | a | b | 16.082883 |
\n",
"\t15 | 4 | b | a | 9.196968 |
\n",
"\t16 | 4 | b | b | 9.614437 |
\n",
"\t17 | 5 | a | a | 9.040155 |
\n",
"\t18 | 5 | a | b | 16.885613 |
\n",
"\t19 | 5 | b | a | 10.184381 |
\n",
"\t20 | 5 | b | b | 14.435134 |
\n",
"\n",
"
\n"
],
"text/latex": [
"A data.frame: 20 × 4\n",
"\\begin{tabular}{r|llll}\n",
" & S & X1 & X2 & Y\\\\\n",
" & & & & \\\\\n",
"\\hline\n",
"\t1 & 1 & a & a & 13.177771\\\\\n",
"\t2 & 1 & a & b & 13.299755\\\\\n",
"\t3 & 1 & b & a & 9.909350\\\\\n",
"\t4 & 1 & b & b & 16.457684\\\\\n",
"\t5 & 2 & a & a & 11.770180\\\\\n",
"\t6 & 2 & a & b & 14.804296\\\\\n",
"\t7 & 2 & b & a & 9.819264\\\\\n",
"\t8 & 2 & b & b & 13.907344\\\\\n",
"\t9 & 3 & a & a & 8.535872\\\\\n",
"\t10 & 3 & a & b & 12.210064\\\\\n",
"\t11 & 3 & b & a & 12.448765\\\\\n",
"\t12 & 3 & b & b & 12.204888\\\\\n",
"\t13 & 4 & a & a & 10.287867\\\\\n",
"\t14 & 4 & a & b & 16.082883\\\\\n",
"\t15 & 4 & b & a & 9.196968\\\\\n",
"\t16 & 4 & b & b & 9.614437\\\\\n",
"\t17 & 5 & a & a & 9.040155\\\\\n",
"\t18 & 5 & a & b & 16.885613\\\\\n",
"\t19 & 5 & b & a & 10.184381\\\\\n",
"\t20 & 5 & b & b & 14.435134\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 20 × 4\n",
"\n",
"| | S <int> | X1 <chr> | X2 <chr> | Y <dbl> |\n",
"|---|---|---|---|---|\n",
"| 1 | 1 | a | a | 13.177771 |\n",
"| 2 | 1 | a | b | 13.299755 |\n",
"| 3 | 1 | b | a | 9.909350 |\n",
"| 4 | 1 | b | b | 16.457684 |\n",
"| 5 | 2 | a | a | 11.770180 |\n",
"| 6 | 2 | a | b | 14.804296 |\n",
"| 7 | 2 | b | a | 9.819264 |\n",
"| 8 | 2 | b | b | 13.907344 |\n",
"| 9 | 3 | a | a | 8.535872 |\n",
"| 10 | 3 | a | b | 12.210064 |\n",
"| 11 | 3 | b | a | 12.448765 |\n",
"| 12 | 3 | b | b | 12.204888 |\n",
"| 13 | 4 | a | a | 10.287867 |\n",
"| 14 | 4 | a | b | 16.082883 |\n",
"| 15 | 4 | b | a | 9.196968 |\n",
"| 16 | 4 | b | b | 9.614437 |\n",
"| 17 | 5 | a | a | 9.040155 |\n",
"| 18 | 5 | a | b | 16.885613 |\n",
"| 19 | 5 | b | a | 10.184381 |\n",
"| 20 | 5 | b | b | 14.435134 |\n",
"\n"
],
"text/plain": [
" S X1 X2 Y \n",
"1 1 a a 13.177771\n",
"2 1 a b 13.299755\n",
"3 1 b a 9.909350\n",
"4 1 b b 16.457684\n",
"5 2 a a 11.770180\n",
"6 2 a b 14.804296\n",
"7 2 b a 9.819264\n",
"8 2 b b 13.907344\n",
"9 3 a a 8.535872\n",
"10 3 a b 12.210064\n",
"11 3 b a 12.448765\n",
"12 3 b b 12.204888\n",
"13 4 a a 10.287867\n",
"14 4 a b 16.082883\n",
"15 4 b a 9.196968\n",
"16 4 b b 9.614437\n",
"17 5 a a 9.040155\n",
"18 5 a b 16.885613\n",
"19 5 b a 10.184381\n",
"20 5 b b 14.435134"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Example data\n",
"# df has subjects (S), two within-Ss factors (X1,X2) each w/levels (a,b), and continuous response (Y)\n",
"df <- read.csv(\"data/2F2LWs.csv\")\n",
"head(df, 20)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "9ec98708-36c5-4c0e-944f-b4426476843f",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Loading required package: survival\n",
"\n"
]
},
{
"data": {
"text/plain": [
"\n",
"\tExact Wilcoxon-Mann-Whitney Test\n",
"\n",
"data: Y by X (a, b)\n",
"Z = -2.4394, p-value = 0.01425\n",
"alternative hypothesis: true mu is not equal to 0\n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# library(ARTool)\n",
"# df$S = factor(df$S) # Subject id is nominal\n",
"# df$X1 = factor(df$X1) # X1 is a 2-level factor\n",
"# df$X2 = factor(df$X2) # X2 is a 2-level factor\n",
"# m = art(Y ~ X1*X2 + (1|S), data=df) # S is a random factor\n",
"# anova(m)"
]
},
{
"cell_type": "markdown",
"id": "b38aca62-0d5f-42b0-a290-d6100ea5f179",
"metadata": {},
"source": [
"## Generalized Linear Mixed Model (GLMM)\n",
"\n",
"* **Samples:** `≥2`\n",
"* **Levels:** `≥2`\n",
"* **Between or Within Subjects:** Within\n",
"* **Reporting:** \"The median of ‘a’ was 11.92 (IQR = 2.35) and of ‘b’ was 10.74 (IQR = 2.29). This difference was statistically significant according to a Wilcoxon signed-rank test (Z = 2.11, p < .05).\"\n",
"\n",
"[See Generalized Linear (Mixed) Models: Distributions and Canonical Links]()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "R",
"language": "R",
"name": "ir"
},
"language_info": {
"codemirror_mode": "r",
"file_extension": ".r",
"mimetype": "text/x-r-source",
"name": "R",
"pygments_lexer": "r",
"version": "4.2.2"
}
},
"nbformat": 4,
"nbformat_minor": 5
}