michi3012
asked on
Calculating Variance
HI,
I have to calculate the Variance of a user input in Java. I have to use this formula:
V(X) = E(X²) - (E(X))²
The user input may consist of an arbitrary amount of integers from 1 to 5.
The thing is that I have absolutely no clue how to code this formula. So if anyone can help me it would be really great.
The best solution for me would be a code snipplet which calculates the variance.
Nevertheless if you can tell me how the formula really works and what the variables used in the code mean.
This would be definitely the best thing.
thank, michi
I have to calculate the Variance of a user input in Java. I have to use this formula:
V(X) = E(X²) - (E(X))²
The user input may consist of an arbitrary amount of integers from 1 to 5.
The thing is that I have absolutely no clue how to code this formula. So if anyone can help me it would be really great.
The best solution for me would be a code snipplet which calculates the variance.
Nevertheless if you can tell me how the formula really works and what the variables used in the code mean.
This would be definitely the best thing.
thank, michi
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
This should help
public void variance()
{
Vector<int> numbers = new Vector<int>();
//file your vector
//note a vector is like an array by the size can grow easily.
double sumX = sumX(numbers);
double variance = sumXSquared(numbers)+sumx* sumX;
//display your variance value
}
public double xSquared(Vector<int> numbers)
{
double total=0;
for(int cnt=0;cnt<numbers.size();c nt++)
{
total += numbers.get(cnt)*numbers.g et(cnt);
}
return total;
}
public double sumX(Vector<int> numbers)
{
double total=0;
for(int cnt=0;cnt<numbers.size();c nt++)
{
total += numbers.get(cnt);
}
return total;
}
cheers,
Ricky
public void variance()
{
Vector<int> numbers = new Vector<int>();
//file your vector
//note a vector is like an array by the size can grow easily.
double sumX = sumX(numbers);
double variance = sumXSquared(numbers)+sumx*
//display your variance value
}
public double xSquared(Vector<int> numbers)
{
double total=0;
for(int cnt=0;cnt<numbers.size();c
{
total += numbers.get(cnt)*numbers.g
}
return total;
}
public double sumX(Vector<int> numbers)
{
double total=0;
for(int cnt=0;cnt<numbers.size();c
{
total += numbers.get(cnt);
}
return total;
}
cheers,
Ricky
Hi,
V(X) = variance.
E(X) = expected value.
Wikipedia has more info: http://en.wikipedia.org/wiki/Variance
Here is some code.
class VarianceExample
{
public static void main(String[] args)
{
double ex2 = 0;
double e2x = 0;
double ex = 0;
double vx = 0;
int[] xs = new int[]{1, 4, 2, 3};
int numxs = xs.length;
for(int i=0;i<numxs;i++)
{
ex2 += xs[i] * xs[i];
ex += xs[i];
}
ex2 /= numxs; //E(X^2)
ex /= numxs; //E(X)
e2x = ex * ex; //E(X)^2
vx = ex2 - e2x; //V(X)
//String representation of xs
String sxs = "";
for(int i=0;i<numxs-1;i++)
sxs += xs[i]+", ";
sxs += xs[numxs-1];
System.out.println("X = "+sxs);
System.out.println("E(X) = "+ex);
System.out.println("E(X^2) = "+ex2);
System.out.println("E(X)^2 = "+e2x);
System.out.println("V(X) = "+vx);
}
}
Mark
V(X) = variance.
E(X) = expected value.
Wikipedia has more info: http://en.wikipedia.org/wiki/Variance
Here is some code.
class VarianceExample
{
public static void main(String[] args)
{
double ex2 = 0;
double e2x = 0;
double ex = 0;
double vx = 0;
int[] xs = new int[]{1, 4, 2, 3};
int numxs = xs.length;
for(int i=0;i<numxs;i++)
{
ex2 += xs[i] * xs[i];
ex += xs[i];
}
ex2 /= numxs; //E(X^2)
ex /= numxs; //E(X)
e2x = ex * ex; //E(X)^2
vx = ex2 - e2x; //V(X)
//String representation of xs
String sxs = "";
for(int i=0;i<numxs-1;i++)
sxs += xs[i]+", ";
sxs += xs[numxs-1];
System.out.println("X = "+sxs);
System.out.println("E(X) = "+ex);
System.out.println("E(X^2)
System.out.println("E(X)^2
System.out.println("V(X) = "+vx);
}
}
Mark
So if you have a data set (in this case, X), then you simply square each number, and find the mean (sum and divide by how many there are), then you subtract from this the mean of the set squared.
public double Var(int [] X)
{
double E_X2=0.0;
double EX_2=0.0;
for(int i=0; i<X.length; i++)
{
E_X2 += X[i]*X[i];
EX_2 += X[i];
}
E_X2 /= X.length;
EX_2 /= X.length;
return E_X2 - EX_2;
}