private void BIC(int cluster, int size, double[] data, double[] trans,
			double[] mean, double[] var, double[] weight, File resFile) {//BICo
		try {
			File biclogFile = new File(resFile.getParentFile(), biclogFileName);
			OutputStreamWriter biclogOsw = new OutputStreamWriter(new FileOutputStream(biclogFile, true));
			BufferedWriter biclogBw = new BufferedWriter(biclogOsw);
			double maxLikelihood = 0.0;
			for(int i=0; i<size; i++){
				double dataLikelihood = 0.0;
				for (int k=0; k<cluster; k++){
					double delay = data[i] - trans[k];
					if (delay > 0) { //Ԓxtzł́Ao[Xg_Õf[^͕zɑȂ̂Ŗޓx[ƌ
						//if (delay < 1) delay = altDelay;
						double gap = Math.log(delay) - mean[k];
						double denom = Math.sqrt(2 * Math.PI * var[k]) * delay;
						dataLikelihood += weight[k] * Math.exp(-0.5 * gap * gap / var[k]) / denom;
					}
				}
				maxLikelihood += Math.log(dataLikelihood);
			}
			int numOfParam = 4; //NX^̃p[^
			double BIC = -2 * maxLikelihood + Math.log(size) * (numOfParam * cluster + cluster - 1);
			
			if (biclogFile.length() == 0){
				stopWatch("Using BIC...");
				biclogBw.write("maxIter = ," + maxIter + ", upperMax = ," + upperMax);
				biclogBw.newLine();
			}
			biclogBw.write(cluster + ", " + BIC + ", " + resFile.toString());
			biclogBw.newLine();
			
			biclogBw.close();
			biclogOsw.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			return;
		} catch (IOException e) {
			e.printStackTrace();
			return;
		}
	}