Free Statistics

of Irreproducible Research!

Author's title

Author*The author of this computation has been verified*
R Software Modulerwasp_twosampletests_mean.wasp
Title produced by softwarePaired and Unpaired Two Samples Tests about the Mean
Date of computationTue, 16 Dec 2014 14:34:29 +0000
Cite this page as followsStatistical Computations at FreeStatistics.org, Office for Research Development and Education, URL https://freestatistics.org/blog/index.php?v=date/2014/Dec/16/t1418740537x2ze2fv9e4hnfml.htm/, Retrieved Thu, 16 May 2024 11:38:40 +0000
Statistical Computations at FreeStatistics.org, Office for Research Development and Education, URL https://freestatistics.org/blog/index.php?pk=269628, Retrieved Thu, 16 May 2024 11:38:40 +0000
QR Codes:

Original text written by user:
IsPrivate?No (this computation is public)
User-defined keywords
Estimated Impact84
Family? (F = Feedback message, R = changed R code, M = changed R Module, P = changed Parameters, D = changed Data)
-     [Paired and Unpaired Two Samples Tests about the Mean] [1.2 Two Sample B-...] [2014-12-16 13:28:17] [e7da31d1eb6eab8d5ed70d87d07c747b]
-    D    [Paired and Unpaired Two Samples Tests about the Mean] [1.2.2 Two Sample ...] [2014-12-16 14:34:29] [5d881a36bd0ad8435ec4402f15a04cd7] [Current]
Feedback Forum

Post a new message
Dataseries X:
'NA'	51
'NA'	56
'NA'	67
'NA'	69
57	'NA'
56	'NA'
'NA'	55
'NA'	63
'NA'	67
'NA'	65
'NA'	47
'NA'	76
'NA'	64
'NA'	68
'NA'	64
'NA'	65
71	'NA'
'NA'	63
'NA'	60
'NA'	68
'NA'	72
'NA'	70
'NA'	61
'NA'	61
'NA'	62
'NA'	71
'NA'	71
'NA'	51
56	'NA'
'NA'	70
'NA'	73
'NA'	76
'NA'	59
'NA'	68
'NA'	48
'NA'	52
'NA'	59
'NA'	60
'NA'	59
'NA'	57
'NA'	79
'NA'	60
'NA'	60
'NA'	59
62	'NA'
59	'NA'
'NA'	61
'NA'	71
57	'NA'
66	'NA'
63	'NA'
69	'NA'
'NA'	58
'NA'	59
48	'NA'
66	'NA'
73	'NA'
67	'NA'
61	'NA'
68	'NA'
75	'NA'
62	'NA'
69	'NA'
'NA'	58
'NA'	60
74	'NA'
'NA'	55
'NA'	62
63	'NA'
'NA'	69
58	'NA'
58	'NA'
'NA'	68
72	'NA'
62	'NA'
62	'NA'
65	'NA'
69	'NA'
66	'NA'
72	'NA'
62	'NA'
75	'NA'
58	'NA'
66	'NA'
55	'NA'
47	'NA'
'NA'	72
62	'NA'
64	'NA'
64	'NA'
'NA'	19
50	'NA'
'NA'	68
70	'NA'
'NA'	79
69	'NA'
'NA'	71
48	'NA'
66	'NA'
73	'NA'
74	'NA'
66	'NA'
'NA'	71
'NA'	74
78	'NA'
'NA'	75
'NA'	53
60	'NA'
'NA'	50
'NA'	70
69	'NA'
65	'NA'
'NA'	78
78	'NA'
'NA'	59
'NA'	72
'NA'	70
63	'NA'
'NA'	63
71	'NA'
'NA'	74
'NA'	67
'NA'	66
'NA'	62
80	'NA'
'NA'	73
'NA'	67
'NA'	61
73	'NA'
'NA'	74
'NA'	32
69	'NA'
'NA'	69
84	'NA'
64	'NA'
58	'NA'
'NA'	60
59	'NA'
78	'NA'
'NA'	57
'NA'	60
'NA'	68
'NA'	68
'NA'	73
'NA'	69
67	'NA'
60	'NA'
'NA'	65
66	'NA'
74	'NA'
'NA'	81
72	'NA'
55	'NA'
49	'NA'
74	'NA'
53	'NA'
64	'NA'
65	'NA'
57	'NA'
51	'NA'
80	'NA'
67	'NA'
70	'NA'
74	'NA'
75	'NA'
70	'NA'
69	'NA'
65	'NA'
'NA'	55
71	'NA'
65	'NA'




Summary of computational transaction
Raw Inputview raw input (R code)
Raw Outputview raw output of R engine
Computing time2 seconds
R Server'Sir Ronald Aylmer Fisher' @ fisher.wessa.net

\begin{tabular}{lllllllll}
\hline
Summary of computational transaction \tabularnewline
Raw Input & view raw input (R code)  \tabularnewline
Raw Output & view raw output of R engine  \tabularnewline
Computing time & 2 seconds \tabularnewline
R Server & 'Sir Ronald Aylmer Fisher' @ fisher.wessa.net \tabularnewline
\hline
\end{tabular}
%Source: https://freestatistics.org/blog/index.php?pk=269628&T=0

[TABLE]
[ROW][C]Summary of computational transaction[/C][/ROW]
[ROW][C]Raw Input[/C][C]view raw input (R code) [/C][/ROW]
[ROW][C]Raw Output[/C][C]view raw output of R engine [/C][/ROW]
[ROW][C]Computing time[/C][C]2 seconds[/C][/ROW]
[ROW][C]R Server[/C][C]'Sir Ronald Aylmer Fisher' @ fisher.wessa.net[/C][/ROW]
[/TABLE]
Source: https://freestatistics.org/blog/index.php?pk=269628&T=0

Globally Unique Identifier (entire table): ba.freestatistics.org/blog/index.php?pk=269628&T=0

As an alternative you can also use a QR Code:  

The GUIDs for individual cells are displayed in the table below:

Summary of computational transaction
Raw Inputview raw input (R code)
Raw Outputview raw output of R engine
Computing time2 seconds
R Server'Sir Ronald Aylmer Fisher' @ fisher.wessa.net







Two Sample t-test (unpaired)
Mean of Sample 165.3764705882353
Mean of Sample 263.8604651162791
t-stat1.11908013188724
df169
p-value0.2646940018057
H0 value0
Alternativetwo.sided
CI Level0.95
CI[-1.15828656055537,4.19029750446781]
F-test to compare two variances
F-stat0.685408314776691
df84
p-value0.0845538682632024
H0 value1
Alternativetwo.sided
CI Level0.95
CI[0.44628629604265,1.05323386438419]

\begin{tabular}{lllllllll}
\hline
Two Sample t-test (unpaired) \tabularnewline
Mean of Sample 1 & 65.3764705882353 \tabularnewline
Mean of Sample 2 & 63.8604651162791 \tabularnewline
t-stat & 1.11908013188724 \tabularnewline
df & 169 \tabularnewline
p-value & 0.2646940018057 \tabularnewline
H0 value & 0 \tabularnewline
Alternative & two.sided \tabularnewline
CI Level & 0.95 \tabularnewline
CI & [-1.15828656055537,4.19029750446781] \tabularnewline
F-test to compare two variances \tabularnewline
F-stat & 0.685408314776691 \tabularnewline
df & 84 \tabularnewline
p-value & 0.0845538682632024 \tabularnewline
H0 value & 1 \tabularnewline
Alternative & two.sided \tabularnewline
CI Level & 0.95 \tabularnewline
CI & [0.44628629604265,1.05323386438419] \tabularnewline
\hline
\end{tabular}
%Source: https://freestatistics.org/blog/index.php?pk=269628&T=1

[TABLE]
[ROW][C]Two Sample t-test (unpaired)[/C][/ROW]
[ROW][C]Mean of Sample 1[/C][C]65.3764705882353[/C][/ROW]
[ROW][C]Mean of Sample 2[/C][C]63.8604651162791[/C][/ROW]
[ROW][C]t-stat[/C][C]1.11908013188724[/C][/ROW]
[ROW][C]df[/C][C]169[/C][/ROW]
[ROW][C]p-value[/C][C]0.2646940018057[/C][/ROW]
[ROW][C]H0 value[/C][C]0[/C][/ROW]
[ROW][C]Alternative[/C][C]two.sided[/C][/ROW]
[ROW][C]CI Level[/C][C]0.95[/C][/ROW]
[ROW][C]CI[/C][C][-1.15828656055537,4.19029750446781][/C][/ROW]
[ROW][C]F-test to compare two variances[/C][/ROW]
[ROW][C]F-stat[/C][C]0.685408314776691[/C][/ROW]
[ROW][C]df[/C][C]84[/C][/ROW]
[ROW][C]p-value[/C][C]0.0845538682632024[/C][/ROW]
[ROW][C]H0 value[/C][C]1[/C][/ROW]
[ROW][C]Alternative[/C][C]two.sided[/C][/ROW]
[ROW][C]CI Level[/C][C]0.95[/C][/ROW]
[ROW][C]CI[/C][C][0.44628629604265,1.05323386438419][/C][/ROW]
[/TABLE]
Source: https://freestatistics.org/blog/index.php?pk=269628&T=1

Globally Unique Identifier (entire table): ba.freestatistics.org/blog/index.php?pk=269628&T=1

As an alternative you can also use a QR Code:  

The GUIDs for individual cells are displayed in the table below:

Two Sample t-test (unpaired)
Mean of Sample 165.3764705882353
Mean of Sample 263.8604651162791
t-stat1.11908013188724
df169
p-value0.2646940018057
H0 value0
Alternativetwo.sided
CI Level0.95
CI[-1.15828656055537,4.19029750446781]
F-test to compare two variances
F-stat0.685408314776691
df84
p-value0.0845538682632024
H0 value1
Alternativetwo.sided
CI Level0.95
CI[0.44628629604265,1.05323386438419]







Welch Two Sample t-test (unpaired)
Mean of Sample 165.3764705882353
Mean of Sample 263.8604651162791
t-stat1.12030956588962
df163.973066717263
p-value0.264220062774657
H0 value0
Alternativetwo.sided
CI Level0.95
CI[-1.15594250328617,4.18795344719861]

\begin{tabular}{lllllllll}
\hline
Welch Two Sample t-test (unpaired) \tabularnewline
Mean of Sample 1 & 65.3764705882353 \tabularnewline
Mean of Sample 2 & 63.8604651162791 \tabularnewline
t-stat & 1.12030956588962 \tabularnewline
df & 163.973066717263 \tabularnewline
p-value & 0.264220062774657 \tabularnewline
H0 value & 0 \tabularnewline
Alternative & two.sided \tabularnewline
CI Level & 0.95 \tabularnewline
CI & [-1.15594250328617,4.18795344719861] \tabularnewline
\hline
\end{tabular}
%Source: https://freestatistics.org/blog/index.php?pk=269628&T=2

[TABLE]
[ROW][C]Welch Two Sample t-test (unpaired)[/C][/ROW]
[ROW][C]Mean of Sample 1[/C][C]65.3764705882353[/C][/ROW]
[ROW][C]Mean of Sample 2[/C][C]63.8604651162791[/C][/ROW]
[ROW][C]t-stat[/C][C]1.12030956588962[/C][/ROW]
[ROW][C]df[/C][C]163.973066717263[/C][/ROW]
[ROW][C]p-value[/C][C]0.264220062774657[/C][/ROW]
[ROW][C]H0 value[/C][C]0[/C][/ROW]
[ROW][C]Alternative[/C][C]two.sided[/C][/ROW]
[ROW][C]CI Level[/C][C]0.95[/C][/ROW]
[ROW][C]CI[/C][C][-1.15594250328617,4.18795344719861][/C][/ROW]
[/TABLE]
Source: https://freestatistics.org/blog/index.php?pk=269628&T=2

Globally Unique Identifier (entire table): ba.freestatistics.org/blog/index.php?pk=269628&T=2

As an alternative you can also use a QR Code:  

The GUIDs for individual cells are displayed in the table below:

Welch Two Sample t-test (unpaired)
Mean of Sample 165.3764705882353
Mean of Sample 263.8604651162791
t-stat1.12030956588962
df163.973066717263
p-value0.264220062774657
H0 value0
Alternativetwo.sided
CI Level0.95
CI[-1.15594250328617,4.18795344719861]







Wicoxon rank sum test with continuity correction (unpaired)
W3907.5
p-value0.435892440736836
H0 value0
Alternativetwo.sided
Kolmogorov-Smirnov Test to compare Distributions of two Samples
KS Statistic0.124760601915185
p-value0.518799942196421
Kolmogorov-Smirnov Test to compare Distributional Shape of two Samples
KS Statistic0.112722298221614
p-value0.64907096106667

\begin{tabular}{lllllllll}
\hline
Wicoxon rank sum test with continuity correction (unpaired) \tabularnewline
W & 3907.5 \tabularnewline
p-value & 0.435892440736836 \tabularnewline
H0 value & 0 \tabularnewline
Alternative & two.sided \tabularnewline
Kolmogorov-Smirnov Test to compare Distributions of two Samples \tabularnewline
KS Statistic & 0.124760601915185 \tabularnewline
p-value & 0.518799942196421 \tabularnewline
Kolmogorov-Smirnov Test to compare Distributional Shape of two Samples \tabularnewline
KS Statistic & 0.112722298221614 \tabularnewline
p-value & 0.64907096106667 \tabularnewline
\hline
\end{tabular}
%Source: https://freestatistics.org/blog/index.php?pk=269628&T=3

[TABLE]
[ROW][C]Wicoxon rank sum test with continuity correction (unpaired)[/C][/ROW]
[ROW][C]W[/C][C]3907.5[/C][/ROW]
[ROW][C]p-value[/C][C]0.435892440736836[/C][/ROW]
[ROW][C]H0 value[/C][C]0[/C][/ROW]
[ROW][C]Alternative[/C][C]two.sided[/C][/ROW]
[ROW][C]Kolmogorov-Smirnov Test to compare Distributions of two Samples[/C][/ROW]
[ROW][C]KS Statistic[/C][C]0.124760601915185[/C][/ROW]
[ROW][C]p-value[/C][C]0.518799942196421[/C][/ROW]
[ROW][C]Kolmogorov-Smirnov Test to compare Distributional Shape of two Samples[/C][/ROW]
[ROW][C]KS Statistic[/C][C]0.112722298221614[/C][/ROW]
[ROW][C]p-value[/C][C]0.64907096106667[/C][/ROW]
[/TABLE]
Source: https://freestatistics.org/blog/index.php?pk=269628&T=3

Globally Unique Identifier (entire table): ba.freestatistics.org/blog/index.php?pk=269628&T=3

As an alternative you can also use a QR Code:  

The GUIDs for individual cells are displayed in the table below:

Wicoxon rank sum test with continuity correction (unpaired)
W3907.5
p-value0.435892440736836
H0 value0
Alternativetwo.sided
Kolmogorov-Smirnov Test to compare Distributions of two Samples
KS Statistic0.124760601915185
p-value0.518799942196421
Kolmogorov-Smirnov Test to compare Distributional Shape of two Samples
KS Statistic0.112722298221614
p-value0.64907096106667



Parameters (Session):
Parameters (R input):
par1 = 1 ; par2 = 2 ; par3 = 0.95 ; par4 = two.sided ; par5 = unpaired ; par6 = 0.0 ;
R code (references can be found in the software module):
par1 <- as.numeric(par1) #column number of first sample
par2 <- as.numeric(par2) #column number of second sample
par3 <- as.numeric(par3) #confidence (= 1 - alpha)
if (par5 == 'unpaired') paired <- FALSE else paired <- TRUE
par6 <- as.numeric(par6) #H0
z <- t(y)
if (par1 == par2) stop('Please, select two different column numbers')
if (par1 < 1) stop('Please, select a column number greater than zero for the first sample')
if (par2 < 1) stop('Please, select a column number greater than zero for the second sample')
if (par1 > length(z[1,])) stop('The column number for the first sample should be smaller')
if (par2 > length(z[1,])) stop('The column number for the second sample should be smaller')
if (par3 <= 0) stop('The confidence level should be larger than zero')
if (par3 >= 1) stop('The confidence level should be smaller than zero')
(r.t <- t.test(z[,par1],z[,par2],var.equal=TRUE,alternative=par4,paired=paired,mu=par6,conf.level=par3))
(v.t <- var.test(z[,par1],z[,par2],conf.level=par3))
(r.w <- t.test(z[,par1],z[,par2],var.equal=FALSE,alternative=par4,paired=paired,mu=par6,conf.level=par3))
(w.t <- wilcox.test(z[,par1],z[,par2],alternative=par4,paired=paired,mu=par6,conf.level=par3))
(ks.t <- ks.test(z[,par1],z[,par2],alternative=par4))
m1 <- mean(z[,par1],na.rm=T)
m2 <- mean(z[,par2],na.rm=T)
mdiff <- m1 - m2
newsam1 <- z[!is.na(z[,par1]),par1]
newsam2 <- z[,par2]+mdiff
newsam2 <- newsam2[!is.na(newsam2)]
(ks1.t <- ks.test(newsam1,newsam2,alternative=par4))
mydf <- data.frame(cbind(z[,par1],z[,par2]))
colnames(mydf) <- c('Variable 1','Variable 2')
bitmap(file='test1.png')
boxplot(mydf, notch=TRUE, ylab='value',main=main)
dev.off()
bitmap(file='test2.png')
qqnorm(z[,par1],main='Normal QQplot - Variable 1')
qqline(z[,par1])
dev.off()
bitmap(file='test3.png')
qqnorm(z[,par2],main='Normal QQplot - Variable 2')
qqline(z[,par2])
dev.off()
load(file='createtable')
a<-table.start()
a<-table.row.start(a)
a<-table.element(a,paste('Two Sample t-test (',par5,')',sep=''),2,TRUE)
a<-table.row.end(a)
if(!paired){
a<-table.row.start(a)
a<-table.element(a,'Mean of Sample 1',header=TRUE)
a<-table.element(a,r.t$estimate[[1]])
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'Mean of Sample 2',header=TRUE)
a<-table.element(a,r.t$estimate[[2]])
a<-table.row.end(a)
} else {
a<-table.row.start(a)
a<-table.element(a,'Difference: Mean1 - Mean2',header=TRUE)
a<-table.element(a,r.t$estimate)
a<-table.row.end(a)
}
a<-table.row.start(a)
a<-table.element(a,'t-stat',header=TRUE)
a<-table.element(a,r.t$statistic[[1]])
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'df',header=TRUE)
a<-table.element(a,r.t$parameter[[1]])
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'p-value',header=TRUE)
a<-table.element(a,r.t$p.value)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'H0 value',header=TRUE)
a<-table.element(a,r.t$null.value[[1]])
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'Alternative',header=TRUE)
a<-table.element(a,r.t$alternative)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'CI Level',header=TRUE)
a<-table.element(a,attr(r.t$conf.int,'conf.level'))
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'CI',header=TRUE)
a<-table.element(a,paste('[',r.t$conf.int[1],',',r.t$conf.int[2],']',sep=''))
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'F-test to compare two variances',2,TRUE)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'F-stat',header=TRUE)
a<-table.element(a,v.t$statistic[[1]])
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'df',header=TRUE)
a<-table.element(a,v.t$parameter[[1]])
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'p-value',header=TRUE)
a<-table.element(a,v.t$p.value)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'H0 value',header=TRUE)
a<-table.element(a,v.t$null.value[[1]])
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'Alternative',header=TRUE)
a<-table.element(a,v.t$alternative)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'CI Level',header=TRUE)
a<-table.element(a,attr(v.t$conf.int,'conf.level'))
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'CI',header=TRUE)
a<-table.element(a,paste('[',v.t$conf.int[1],',',v.t$conf.int[2],']',sep=''))
a<-table.row.end(a)
a<-table.end(a)
table.save(a,file='mytable.tab')
a<-table.start()
a<-table.row.start(a)
a<-table.element(a,paste('Welch Two Sample t-test (',par5,')',sep=''),2,TRUE)
a<-table.row.end(a)
if(!paired){
a<-table.row.start(a)
a<-table.element(a,'Mean of Sample 1',header=TRUE)
a<-table.element(a,r.w$estimate[[1]])
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'Mean of Sample 2',header=TRUE)
a<-table.element(a,r.w$estimate[[2]])
a<-table.row.end(a)
} else {
a<-table.row.start(a)
a<-table.element(a,'Difference: Mean1 - Mean2',header=TRUE)
a<-table.element(a,r.w$estimate)
a<-table.row.end(a)
}
a<-table.row.start(a)
a<-table.element(a,'t-stat',header=TRUE)
a<-table.element(a,r.w$statistic[[1]])
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'df',header=TRUE)
a<-table.element(a,r.w$parameter[[1]])
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'p-value',header=TRUE)
a<-table.element(a,r.w$p.value)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'H0 value',header=TRUE)
a<-table.element(a,r.w$null.value[[1]])
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'Alternative',header=TRUE)
a<-table.element(a,r.w$alternative)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'CI Level',header=TRUE)
a<-table.element(a,attr(r.w$conf.int,'conf.level'))
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'CI',header=TRUE)
a<-table.element(a,paste('[',r.w$conf.int[1],',',r.w$conf.int[2],']',sep=''))
a<-table.row.end(a)
a<-table.end(a)
table.save(a,file='mytable1.tab')
a<-table.start()
a<-table.row.start(a)
a<-table.element(a,paste('Wicoxon rank sum test with continuity correction (',par5,')',sep=''),2,TRUE)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'W',header=TRUE)
a<-table.element(a,w.t$statistic[[1]])
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'p-value',header=TRUE)
a<-table.element(a,w.t$p.value)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'H0 value',header=TRUE)
a<-table.element(a,w.t$null.value[[1]])
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'Alternative',header=TRUE)
a<-table.element(a,w.t$alternative)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'Kolmogorov-Smirnov Test to compare Distributions of two Samples',2,TRUE)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'KS Statistic',header=TRUE)
a<-table.element(a,ks.t$statistic[[1]])
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'p-value',header=TRUE)
a<-table.element(a,ks.t$p.value)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'Kolmogorov-Smirnov Test to compare Distributional Shape of two Samples',2,TRUE)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'KS Statistic',header=TRUE)
a<-table.element(a,ks1.t$statistic[[1]])
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'p-value',header=TRUE)
a<-table.element(a,ks1.t$p.value)
a<-table.row.end(a)
a<-table.end(a)
table.save(a,file='mytable2.tab')