From: 李飞腾 <fei...@yo...> - 2014-03-23 09:26:44
|
Hi: I think the way to computer variance in MomentStatistics() is not right. variance-wiki http://en.wikipedia.org/wiki/Variance using ApplyPow() to replace vec_aux.MulElements(vec); std::string MomentStatistics(const Vector<Real> &vec) { // we use an auxiliary vector for the higher order powers Vector<Real> vec_aux(vec); // mean Real mean = vec.Sum() / vec.Dim(); // variance vec_aux.Add(-mean); vec_aux.ApplyPow(2.0); //vec_aux.MulElements(vec); // (vec-mean)^2 Real variance = vec_aux.Sum() / vec.Dim(); vec_aux.ApplyPow(3.0/2.0); //vec_aux.MulElements(vec); // (vec-mean)^3 Real skewness = vec_aux.Sum() / pow(variance, 3.0/2.0) / vec.Dim(); vec_aux.ApplyPow(4.0/3.0); //vec_aux.MulElements(vec); // (vec-mean)^4 Real kurtosis = vec_aux.Sum() / (variance * variance) / vec.Dim() - 3.0; // send the statistics to stream, std::ostringstream ostr; ostr << " ( min " << vec.Min() << ", max " << vec.Max() << ", mean " << mean << ", variance " << variance << ", skewness " << skewness << ", kurtosis " << kurtosis << " ) "; return ostr.str(); } Am I right? What is the easiest way to contribute to kaldi? Best! feiteng li |