The t test (also called Student’s T Test) compares two averages (means) and tells if they are different from each other. The t-test also tells how significant the differences are. In other words it lets you know if those differences could have happened by chance. t-test can be calculated by using formula :

where,
x?1 is the mean of first data set
x?2 is the mean of second data set
S12 is the standard deviation of first data set
S22 is the standard deviation of second data set
N1 is the number of elements in the first data set
N2 is the number of elements in the second data set
Examples :
Input : arr1[] = {10, 20, 30, 40, 50}
arr2[] = {1, 29, 46, 78, 99}
Output : -1.09789
Input : arr1[] = {5, 20, 40, 80, 100, 120}
arr2[] = {1, 29, 46, 78, 99}
Output : 0.399518
Explanation :
In example 1, x?1 = 30, x?2 = 50.6, S12 = 15.8114, S12 = 38.8626
using the formula, t-test = -1.09789
Below is the implementation of t-test.
C++
#include <bits/stdc++.h>
using namespace std;
float Mean( float arr[], int n)
{
float sum = 0;
for ( int i = 0; i < n; i++)
sum = sum + arr[i];
return sum / n;
}
float standardDeviation( float arr[], int n)
{
float sum = 0;
for ( int i = 0; i < n; i++)
sum = sum + (arr[i] - Mean(arr, n)) *
(arr[i] - Mean(arr, n));
return sqrt (sum / (n - 1));
}
float tTest( float arr1[], int n,
float arr2[], int m)
{
float mean1 = Mean(arr1, n);
float mean2 = Mean(arr2, m);
float sd1 = standardDeviation(arr1, n);
float sd2 = standardDeviation(arr2, m);
float t_test = (mean1 - mean2) / sqrt ((sd1 * sd1)
/ n + (sd2 * sd2) / m);
return t_test;
}
int main()
{
float arr1[] = { 10, 20, 30, 40, 50 };
int n = sizeof (arr1) / sizeof (arr1[0]);
float arr2[] = { 1, 29, 46, 78, 99 };
int m = sizeof (arr2) / sizeof (arr2[0]);
cout << tTest(arr1, n, arr2, m);
return 0;
}
|
Java
import java.util.*;
import java.io.*;
class GFG
{
static float Mean( float arr[], int n)
{
float sum = 0 ;
for ( int i = 0 ; i < n; i++)
sum = sum + arr[i];
return sum / n;
}
static float standardDeviation( float arr[], int n)
{
float sum = 0 ;
for ( int i = 0 ; i < n; i++)
sum = sum + (arr[i] - Mean(arr, n))
* (arr[i] - Mean(arr, n));
return ( float )Math.sqrt(sum / (n - 1 ));
}
static float tTest( float arr1[], int n,
float arr2[], int m)
{
float mean1 = Mean(arr1, n);
float mean2 = Mean(arr2, m);
float sd1 = standardDeviation(arr1, n);
float sd2 = standardDeviation(arr2, m);
float t_test = (mean1 - mean2) /
( float )Math.sqrt((sd1 * sd1) /
n + (sd2 * sd2) / m);
return t_test;
}
public static void main(String args[])
{
float arr1[] = { 10 , 20 , 30 , 40 , 50 };
int n = arr1.length;
float arr2[] = { 1 , 29 , 46 , 78 , 99 };
int m = arr2.length;
System.out.print(tTest(arr1, n, arr2, m));
}
}
|
Python3
from math import sqrt
def Mean(arr, n):
sum = 0
for i in range ( 0 , n, 1 ):
sum = sum + arr[i]
return sum / n
def standardDeviation(arr, n):
sum = 0
for i in range ( 0 , n, 1 ):
sum = ( sum + (arr[i] - Mean(arr, n)) *
(arr[i] - Mean(arr, n)))
return sqrt( sum / (n - 1 ))
def tTest(arr1, n, arr2, m):
mean1 = Mean(arr1, n)
mean2 = Mean(arr2, m)
sd1 = standardDeviation(arr1, n)
sd2 = standardDeviation(arr2, m)
t_test = (mean1 - mean2) / sqrt((sd1 * sd1) / n +
(sd2 * sd2) / m)
return t_test
if __name__ = = '__main__' :
arr1 = [ 10 , 20 , 30 , 40 , 50 ]
n = len (arr1)
arr2 = [ 1 , 29 , 46 , 78 , 99 ]
m = len (arr2)
print ( '{0:.6}' . format (tTest(arr1, n, arr2, m)))
|
C#
using System;
class GFG {
static float Mean( float [] arr, int n)
{
float sum = 0;
for ( int i = 0; i < n; i++)
sum = sum + arr[i];
return sum / n;
}
static float standardDeviation( float [] arr, int n)
{
float sum = 0;
for ( int i = 0; i < n; i++)
sum = sum + (arr[i] - Mean(arr, n)) *
(arr[i] - Mean(arr, n));
return ( float )Math.Sqrt(sum / (n - 1));
}
static float tTest( float [] arr1, int n,
float [] arr2, int m)
{
float mean1 = Mean(arr1, n);
float mean2 = Mean(arr2, m);
float sd1 = standardDeviation(arr1, n);
float sd2 = standardDeviation(arr2, m);
float t_test = (mean1 - mean2) /
( float )Math.Sqrt((sd1 * sd1) /
n + (sd2 * sd2) / m);
return t_test;
}
static public void Main ()
{
float [] arr1 = {10, 20, 30, 40, 50};
int n = arr1.Length;
float [] arr2 = { 1, 29, 46, 78, 99 };
int m = arr2.Length;
Console.Write(tTest(arr1, n, arr2, m));
}
}
|
PHP
<?php
function Mean( $arr , $n )
{
$sum = 0;
for ( $i = 0; $i < $n ; $i ++)
$sum = $sum + $arr [ $i ];
return $sum / $n ;
}
function standardDeviation( $arr , $n )
{
$sum = 0;
for ( $i = 0; $i < $n ; $i ++)
$sum = $sum + ( $arr [ $i ] - Mean( $arr , $n )) *
( $arr [ $i ] - Mean( $arr , $n ));
return sqrt( $sum / ( $n - 1));
}
function tTest( $arr1 , $n ,
$arr2 , $m )
{
$mean1 = Mean( $arr1 , $n );
$mean2 = Mean( $arr2 , $m );
$sd1 = standardDeviation( $arr1 , $n );
$sd2 = standardDeviation( $arr2 , $m );
$t_test = ( $mean1 - $mean2 ) /
sqrt(( $sd1 * $sd1 ) /
$n + ( $sd2 * $sd2 ) / $m );
return $t_test ;
}
{
$arr1 = array (10, 20, 30, 40, 50);
$n = sizeof( $arr1 ) / sizeof( $arr1 [0]);
$arr2 = array ( 1, 29, 46, 78, 99 );
$m = sizeof( $arr2 ) / sizeof( $arr2 [0]);
echo tTest( $arr1 , $n , $arr2 , $m );
return 0;
}
?>
|
Javascript
<script>
function Mean(arr, n)
{
let sum = 0;
for (let i = 0; i < n; i++)
sum = sum + arr[i];
return sum / n;
}
function standardDeviation(arr, n)
{
let sum = 0;
for (let i = 0; i < n; i++)
sum = sum + (arr[i] - Mean(arr, n)) *
(arr[i] - Mean(arr, n));
return Math.sqrt(sum / (n - 1));
}
function tTest(arr1, n, arr2, m)
{
let mean1 = Mean(arr1, n);
let mean2 = Mean(arr2, m);
let sd1 = standardDeviation(arr1, n);
let sd2 = standardDeviation(arr2, m);
let t_test = (mean1 - mean2) /
Math.sqrt((sd1 * sd1) /
n + (sd2 * sd2) / m);
return t_test.toFixed(5);
}
let arr1 = [ 10, 20, 30, 40, 50 ];
let n = arr1.length;
let arr2 = [ 1, 29, 46, 78, 99 ];
let m = arr2.length;
document.write(tTest(arr1, n, arr2, m));
</script>
|