# Predicting Component Failures Using Latent Dirichlet Allocation

Authors: Hailin Liu; Ling Xu; Mengning Yang; Meng Yan; Xiaohong Zhang
Journal: Mathematical Problems in Engineering
 (2015)

---

## Abstract

Latent Dirichlet Allocation (LDA) is a statistical topic model that has been widely used to abstract semantic information from software source code. Failure refers to an observable error in the program behavior. This work investigates whether semantic information and failures recorded in the history can be used to predict component failures. We use LDA to abstract topics from source code and a new metric (topic failure density) is proposed by mapping failures to these topics. Exploring the basic information of topics from neighboring versions of a system, we obtain a similarity matrix. Multiply the Topic Failure Density (TFD) by the similarity matrix to get the TFD of the next version. The prediction results achieve an average 77.8% agreement with the real failures by considering the top 3 and last 3 components descending ordered by the number of failures. We use the Spearman coefficient to measure the statistical correlation between the actual and estimated failure rate. The validation results range from 0.5342 to 0.8337 which beats the similar method. It suggests that our predictor based on similarity of topics does a fine job of component failure prediction.


---

## Body

## 1. Introduction

Components are subsections of a product, which is a simple encapsulation of data and methods. Component-based software development has emerged as an important new set of methods and technologies [1, 2]. How to find failure-prone components of a software system effectively is significant for component-based software quality. The main goal of this paper is to provide a novel method for predicting component failures.Recently, prediction studies are mainly based on two aspects to build a predictor. One is past failure data [3–5], and another is the source code repository [6–8]. Nagappan et al. [9] found if an entity often fails in the past, then it is likely to do so in the future. They combined the two aspects to make a component failure predictor. However, Gill and Grover [10] analyzed the characteristics of component-based software systems and made a conclusion that some traditional metrics are inappropriate to analyze component-based software. They stated that semantic complexity should be considered when we characterize a component.A metric based on semantic concerns [11–13] has provided initial evidence that topics in software systems are related to the defect-proneness of source code. These studies approximate concerns using statistical topic models, such as the LDA model [14]. Nguyen et al. [12] were among the first researchers that concentrated on the technical concerns/functionality of a system to predict failures. They suggested that topic-based metrics have a high correlation to the number of bugs. Also, they found that topic-based defect prediction has better predictive performance than other existing approaches. Chen et al. [15] used defect topics to explain defect-proneness of source code and made a conclusion that prior defect-proneness of a topic can be used to explain the future behavior of topics and their associated entities. However, in Chen’s work, they mainly focused on single file processing and did not draw a clear conclusion whether topics can be used to describe the behavior of components.In this paper, our research is motivated by the recent success of applying the statistical topic model to predict defect-proneness of source code entities. The predicting model in this work is approached based on the failures and semantic concerns as Figure1 shows. A new metric (topic failure density) is defined by mapping failures back to the topics. We study the performance of our new predictor on component failure predicting by analyzing three open source projects. In summary, the main contributions of this research are as follows.(i)
We utilize past failure data and semantic information in component failure prediction and propose a new metric based on semantic and failure data. As a result, it connects the semantic information with failures of a component.(ii)
We explore the word-topic distribution and find the relationship between topics. The more similar the high frequent words are in the topics, the more similar the topics are.(iii)
We investigate the capability of our proposed metric in component failure prediction. We compare its prediction performance against the actual data from Bugzilla on three open source projects.Figure 1
Process of failures prediction of components using LDA. (a) Component failures and source code of components are extracted from a bug database and the source code repository. (b)(1) Failure density is defined as the ratio of failures and number of files. Com1, Com2, and Com3 indicate three components. (2) We map failure density to topics by using the estimated topic distribution of components. Z1, Z2, and Z3 indicate three topics. Next, (3) we get the TFD. (c) A similarity matrix is calculated to depict the similarity of topics from the previous version and next version. At last, based on TFD (previous version) and the similarity matrix, we predict the TFD (next version) and component failures.The remainder of this paper is organized as follows. In Section2, we present the related work of our research. In Section 3, we describe our research preparation, models, and techniques. In Sections 4 and 5, we show our experiments and validate our results. Then at last in Section 6, we make our conclusion.


## 2. Related Work

### 2.1. Software Defect Prediction

Several techniques have been studied on detection and correction of defects in software. In general, software defect prediction is divided into two subcategories: the prediction of the number of expected defects and prediction of the defect-prone entities of a system [16].El Emam et al. [6] constructed a prediction model based on object-oriented design metrics and used the model to predict the classes that contained failures in a future version. The model was then validated on a subsequent release of the same application. Thwin and Quah [17] presented the application of neural networks in software quality estimation. They built a neural network model to predict the number of defects per class and the number of lines changed per class and then used it to estimate the software quality. Gyimóthy et al. [18] employed statistical and machine learning methods to assess object-oriented metrics and then built a classification model to predict the number of bugs in each class. They made a conclusion that there was strong linear association between the bugs in different versions. Malhotra [19] performed a systematic review of the studies that used machine learning techniques for software fault prediction. He concluded that machine learning techniques have the ability for predicting software fault proneness and more studies should be carried out in order to obtain well formed and generalizable results.Some other defect prediction researchers paid attention to finding defect-prone parts [16, 20, 21]. In the work by Ostrand et al. [7], they made a prediction based on the source code in the current release and fault and modification history of the file from previous releases. The predictions were quite accurate when the model was applied to two large industrial systems: one with 17 releases over 4 years and the other with 9 releases over 4 years. However, a long failure history may not exist for some projects. Turhan and Bener [22] proposed a prediction model by combining multivariate approaches combined with Bayesian method. This model was used to predict the number of failure modules. Their major contribution was to incorporate multivariate approaches rather than using a univariate one. K. O. Elish and M. O. Elish [23] investigated the capability of SVM in finding defect-prone modules. They used the SVM to classify modules as defective or not defective. Krishnan et al. [24] investigated the relationship between classification-based prediction of failure-prone files and the product line. Jing et al. [25] introduced the dictionary learning technique into the field of software defect prediction. They used a cost-sensitive discriminative dictionary learning (CDDL) approach to enhance the classification ability for software defect classification and prediction. Caglayan et al. [26] investigated the relationships between defects and test phases to build defect prediction models to predict defect-prone modules. Yang et al. [27] introduced a learning-to-rank approach to construct software defect prediction models by directly optimizing the ranking performance. Ullah [28] proposed a method to select the model which best predicts the residual defects of the OSS (applications or components). Nagappan et al. [9] found complexity metrics correlated with components failures, but a single set of metrics could not act as a universally defect predictor. They used principal component analysis on metrics and built a regression model. With the model, they predicted postrelease defects of components. Abaei et al. [29] proposed a software fault detection model using a semisupervised hybrid self-organizing map. Khoshgoftaar et al. [30] applied discriminant analysis to identify fault-prone modules in a sample from a very large telecommunications system. Ohlsson and Alberg [31] investigated the relationship between design metrics and the number of function test failure reports associated with software modules. Graves et al. [8] inclined to use process measures to predict faults. Several novel process measures, such as deltas, derived from the change history, were used in their work and they found process measure is more appropriate in failure prediction than product metrics. Graves’s work is the most similar one to ours. Both our work and Graves’s work are based on process measure. The difference is that we take the extra semantic concerns between versions into consideration. Neuhaus et al. [32] provided a tool for mining a vulnerability database and mapped the vulnerabilities to individual components and then made a predictor. They used this predictor to explore failure-prone components. Schröter et al. [33] used history data to find which design decisions correlated with failures and usedcombinationsof usages between components to make a failure predictor.


### 2.2. LDA Model in Defect Research

LDA is an unsupervised machine learning technique, which has been widely used in latent topic information recognition from documents or corpuses. It is of great importance in latent semantic analysis, text sentiment analysis, and topic clustering data in the field. Software source code is a kind of text dataset; hence, researchers have applied LDA to diverse software activities such as software evolution [34, 35], defect prediction [12, 15], and defect orientation [36].Nguyen et al. [12] stated that a software system is viewed as a collection of software artifacts. They use the topic model to measure the concerns in the source code and used these as the input for a machine learning-based defect prediction model. They validated their model on an open source system (Eclipse JDT). The results showed that the topic-based metrics have a high correlation to the number of bugs and the topic-based defect prediction has better predictive performance than existing state-of-the-art approaches. Liu et al. [11] proposed a new metric, called Maximal Weighted Entropy (MWE), for the cohesion of classes in object-oriented software systems. They compared the new metric with an extensive set of existing metrics and used them to construct models that predict software faults. Chen et al. [15] used a topic model to study the effect of conceptual concerns on code quality. They combined the traditional metrics (such as LOC) and the word-topic distributions (from topic model) to propose a new topic-based metric. They used the topic-based metrics to explain why some entities are more defect-prone. They also found that defect topics are associated with defect entities in the source code. Lukins et al. [36] used the LDA-based technique for automatic bug localization and to evaluate its effectiveness. They concluded that an effective static technique for automatic bug localization can be built around LDA and there is no significant relationship between the accuracy of the LDA-based technique and the size of the subject software system or the stability of its source code base. Our work is inspired by the recent success of topic modeling in mining source code.


## 2.1. Software Defect Prediction

Several techniques have been studied on detection and correction of defects in software. In general, software defect prediction is divided into two subcategories: the prediction of the number of expected defects and prediction of the defect-prone entities of a system [16].El Emam et al. [6] constructed a prediction model based on object-oriented design metrics and used the model to predict the classes that contained failures in a future version. The model was then validated on a subsequent release of the same application. Thwin and Quah [17] presented the application of neural networks in software quality estimation. They built a neural network model to predict the number of defects per class and the number of lines changed per class and then used it to estimate the software quality. Gyimóthy et al. [18] employed statistical and machine learning methods to assess object-oriented metrics and then built a classification model to predict the number of bugs in each class. They made a conclusion that there was strong linear association between the bugs in different versions. Malhotra [19] performed a systematic review of the studies that used machine learning techniques for software fault prediction. He concluded that machine learning techniques have the ability for predicting software fault proneness and more studies should be carried out in order to obtain well formed and generalizable results.Some other defect prediction researchers paid attention to finding defect-prone parts [16, 20, 21]. In the work by Ostrand et al. [7], they made a prediction based on the source code in the current release and fault and modification history of the file from previous releases. The predictions were quite accurate when the model was applied to two large industrial systems: one with 17 releases over 4 years and the other with 9 releases over 4 years. However, a long failure history may not exist for some projects. Turhan and Bener [22] proposed a prediction model by combining multivariate approaches combined with Bayesian method. This model was used to predict the number of failure modules. Their major contribution was to incorporate multivariate approaches rather than using a univariate one. K. O. Elish and M. O. Elish [23] investigated the capability of SVM in finding defect-prone modules. They used the SVM to classify modules as defective or not defective. Krishnan et al. [24] investigated the relationship between classification-based prediction of failure-prone files and the product line. Jing et al. [25] introduced the dictionary learning technique into the field of software defect prediction. They used a cost-sensitive discriminative dictionary learning (CDDL) approach to enhance the classification ability for software defect classification and prediction. Caglayan et al. [26] investigated the relationships between defects and test phases to build defect prediction models to predict defect-prone modules. Yang et al. [27] introduced a learning-to-rank approach to construct software defect prediction models by directly optimizing the ranking performance. Ullah [28] proposed a method to select the model which best predicts the residual defects of the OSS (applications or components). Nagappan et al. [9] found complexity metrics correlated with components failures, but a single set of metrics could not act as a universally defect predictor. They used principal component analysis on metrics and built a regression model. With the model, they predicted postrelease defects of components. Abaei et al. [29] proposed a software fault detection model using a semisupervised hybrid self-organizing map. Khoshgoftaar et al. [30] applied discriminant analysis to identify fault-prone modules in a sample from a very large telecommunications system. Ohlsson and Alberg [31] investigated the relationship between design metrics and the number of function test failure reports associated with software modules. Graves et al. [8] inclined to use process measures to predict faults. Several novel process measures, such as deltas, derived from the change history, were used in their work and they found process measure is more appropriate in failure prediction than product metrics. Graves’s work is the most similar one to ours. Both our work and Graves’s work are based on process measure. The difference is that we take the extra semantic concerns between versions into consideration. Neuhaus et al. [32] provided a tool for mining a vulnerability database and mapped the vulnerabilities to individual components and then made a predictor. They used this predictor to explore failure-prone components. Schröter et al. [33] used history data to find which design decisions correlated with failures and usedcombinationsof usages between components to make a failure predictor.


## 2.2. LDA Model in Defect Research

LDA is an unsupervised machine learning technique, which has been widely used in latent topic information recognition from documents or corpuses. It is of great importance in latent semantic analysis, text sentiment analysis, and topic clustering data in the field. Software source code is a kind of text dataset; hence, researchers have applied LDA to diverse software activities such as software evolution [34, 35], defect prediction [12, 15], and defect orientation [36].Nguyen et al. [12] stated that a software system is viewed as a collection of software artifacts. They use the topic model to measure the concerns in the source code and used these as the input for a machine learning-based defect prediction model. They validated their model on an open source system (Eclipse JDT). The results showed that the topic-based metrics have a high correlation to the number of bugs and the topic-based defect prediction has better predictive performance than existing state-of-the-art approaches. Liu et al. [11] proposed a new metric, called Maximal Weighted Entropy (MWE), for the cohesion of classes in object-oriented software systems. They compared the new metric with an extensive set of existing metrics and used them to construct models that predict software faults. Chen et al. [15] used a topic model to study the effect of conceptual concerns on code quality. They combined the traditional metrics (such as LOC) and the word-topic distributions (from topic model) to propose a new topic-based metric. They used the topic-based metrics to explain why some entities are more defect-prone. They also found that defect topics are associated with defect entities in the source code. Lukins et al. [36] used the LDA-based technique for automatic bug localization and to evaluate its effectiveness. They concluded that an effective static technique for automatic bug localization can be built around LDA and there is no significant relationship between the accuracy of the LDA-based technique and the size of the subject software system or the stability of its source code base. Our work is inspired by the recent success of topic modeling in mining source code.


## 3. Research Methodology

The proposed method is divided into three steps:(1) the source code extracting and preprocessing step, (2) the topic modeling step, and (3) the prediction step.


### 3.1. Data Extracting and Preprocessing

Modern software usually has a sound bug tracking system, like Bugzilla and JIRA. The Eclipse project, for instance, maintains a bug database that contains status, versions, and components using Bugzilla. Our experiment data is gained by the three steps.(1)
Identify postrelease failures. From the bug tracking system, we get failures that were observed after a release.(2)
Collect source code from version management systems, such as SVN and Git.(3)
Prune the source code of a component. From the source code, we find there are many kinds of files in a component, but not all are necessary, such as project execution files and XML.After the extracting step, we perform the following preprocessing steps:(1) separating the comments and identifiers, (2) removing the JAVA keyword syntax structure, and (3) stemming and (4) removing extremely high or extremely low frequency words. The words with a rate of more than 90% and the emergence rate of less than 5% are removed [37].


### 3.2. Topic Modeling

There are two steps in topic modeling. First, we connect the component size and the failures by defining the failure density. Second, we map failures to topics and build a failure topic metric.


#### 3.2.1. Defining Failure Density

During the design phase of new software, designers make a detail component list. Each component contains a lot of files. In Bugzilla, the bug reports are associated with component units. In Knab et al. [38], they stated that there is a relation between failures and component size. In a software system, researchers used defect density (Dd) to assess the defects of a file, which indicates how many defects per line of code [39]. In our study, we found that components with more files usually have more failures. The number of files in different components is different, so are the failures. Here, we define thefailure densityof a component (FDcom) as(1)FDcomj=FailurecomjFilecomj,where comj represents component j, Failurecomj is the total number of failures in a component j, and Filecomj is the number of files within component j. FDcomj is used to depict how failure-prone a component is.


#### 3.2.2. Mapping Failures to Topics

LDA [14] is a generative probabilistic model of a corpus. It makes a simplifying assumption that all documents have K topics. The k-dimension vector α is the parameter of topic prior distribution, while β, a k×V matrix, is the word probabilities. The joint distribution of a topic mixture θ is a set of N topics z and a set of N words w that we express as(2)pθ,z,w∣α,β=pθ∣α∏n=1Npzn∣θpwn∣zn,β,where pzn∣θ is simply θi for the unique i such that zin=1.Integrating overθ and summing over z, we obtain the marginal distribution of a document:(3)pw∣α,β=∫pθ∣α∏n=1Npzn∣θpwn∣zn,βdθ.A corpusD with M documents is designed as pD∣α,β=∏d=1⋯Mpwd∣α,β, So(4)pD∣α,β=∏d=1M∫pθd∣α·∏n=1Nd∑zdnpzdn∣θdpwdn∣zdn,βdθd.From (4), we obtain the parameters α and β by training and get the pD∣α,β maximum, so that we compute the posterior distribution of the hidden variables given a document:(5)pθ,z∣w,α,β=pθ,z,w∣α,βpw∣α,β.By (2), the Failure Density (FD) is determined by the number of failures and the number of files within a component, defined as the ratio of the number of failures in the component to its size, which reflects the failure information in a component. Using this ratio as motivation, we define the failure density of a topic (TFD)zi as(6)TFDzi=∑j=0nθijFDcomj.Using (6), failures are mapped to topics. TFDzi describes the failure-proneness of topic zi.


### 3.3. Prediction

In the work by Hindle et al. [40], they compared two topics by taking the top 10 words with the highest probability that if 8 of the words are the same, then the two topics are considered to be the same. In this paper, we increased the number of the highest probability words and defined the similarity as a ratio of the number of the same words in different topics to the total number of high probability words (see (7)):(7)Similarity=Highest  Word  fromTi∩Highest  Word  fromTjNumber  of  Highest  Word.By (7), we calculate similarity of the topics in two neighboring versions and get a similarity matrix. Then we define TFD relation:(8)TFDzi,vj+1=∑k=0kμikTFDzk,vj,where vj is version j, k is the total number of topics in vj, and μik is the similar degree of topics zk and zi which is from the similarity matrix. After getting TFD through (8), we get FDcomj+1 in v(j+1) using (6), and then we obtain the number of failures in each component.


## 3.1. Data Extracting and Preprocessing

Modern software usually has a sound bug tracking system, like Bugzilla and JIRA. The Eclipse project, for instance, maintains a bug database that contains status, versions, and components using Bugzilla. Our experiment data is gained by the three steps.(1)
Identify postrelease failures. From the bug tracking system, we get failures that were observed after a release.(2)
Collect source code from version management systems, such as SVN and Git.(3)
Prune the source code of a component. From the source code, we find there are many kinds of files in a component, but not all are necessary, such as project execution files and XML.After the extracting step, we perform the following preprocessing steps:(1) separating the comments and identifiers, (2) removing the JAVA keyword syntax structure, and (3) stemming and (4) removing extremely high or extremely low frequency words. The words with a rate of more than 90% and the emergence rate of less than 5% are removed [37].


## 3.2. Topic Modeling

There are two steps in topic modeling. First, we connect the component size and the failures by defining the failure density. Second, we map failures to topics and build a failure topic metric.


### 3.2.1. Defining Failure Density

During the design phase of new software, designers make a detail component list. Each component contains a lot of files. In Bugzilla, the bug reports are associated with component units. In Knab et al. [38], they stated that there is a relation between failures and component size. In a software system, researchers used defect density (Dd) to assess the defects of a file, which indicates how many defects per line of code [39]. In our study, we found that components with more files usually have more failures. The number of files in different components is different, so are the failures. Here, we define thefailure densityof a component (FDcom) as(1)FDcomj=FailurecomjFilecomj,where comj represents component j, Failurecomj is the total number of failures in a component j, and Filecomj is the number of files within component j. FDcomj is used to depict how failure-prone a component is.


### 3.2.2. Mapping Failures to Topics

LDA [14] is a generative probabilistic model of a corpus. It makes a simplifying assumption that all documents have K topics. The k-dimension vector α is the parameter of topic prior distribution, while β, a k×V matrix, is the word probabilities. The joint distribution of a topic mixture θ is a set of N topics z and a set of N words w that we express as(2)pθ,z,w∣α,β=pθ∣α∏n=1Npzn∣θpwn∣zn,β,where pzn∣θ is simply θi for the unique i such that zin=1.Integrating overθ and summing over z, we obtain the marginal distribution of a document:(3)pw∣α,β=∫pθ∣α∏n=1Npzn∣θpwn∣zn,βdθ.A corpusD with M documents is designed as pD∣α,β=∏d=1⋯Mpwd∣α,β, So(4)pD∣α,β=∏d=1M∫pθd∣α·∏n=1Nd∑zdnpzdn∣θdpwdn∣zdn,βdθd.From (4), we obtain the parameters α and β by training and get the pD∣α,β maximum, so that we compute the posterior distribution of the hidden variables given a document:(5)pθ,z∣w,α,β=pθ,z,w∣α,βpw∣α,β.By (2), the Failure Density (FD) is determined by the number of failures and the number of files within a component, defined as the ratio of the number of failures in the component to its size, which reflects the failure information in a component. Using this ratio as motivation, we define the failure density of a topic (TFD)zi as(6)TFDzi=∑j=0nθijFDcomj.Using (6), failures are mapped to topics. TFDzi describes the failure-proneness of topic zi.


## 3.2.1. Defining Failure Density

During the design phase of new software, designers make a detail component list. Each component contains a lot of files. In Bugzilla, the bug reports are associated with component units. In Knab et al. [38], they stated that there is a relation between failures and component size. In a software system, researchers used defect density (Dd) to assess the defects of a file, which indicates how many defects per line of code [39]. In our study, we found that components with more files usually have more failures. The number of files in different components is different, so are the failures. Here, we define thefailure densityof a component (FDcom) as(1)FDcomj=FailurecomjFilecomj,where comj represents component j, Failurecomj is the total number of failures in a component j, and Filecomj is the number of files within component j. FDcomj is used to depict how failure-prone a component is.


## 3.2.2. Mapping Failures to Topics

LDA [14] is a generative probabilistic model of a corpus. It makes a simplifying assumption that all documents have K topics. The k-dimension vector α is the parameter of topic prior distribution, while β, a k×V matrix, is the word probabilities. The joint distribution of a topic mixture θ is a set of N topics z and a set of N words w that we express as(2)pθ,z,w∣α,β=pθ∣α∏n=1Npzn∣θpwn∣zn,β,where pzn∣θ is simply θi for the unique i such that zin=1.Integrating overθ and summing over z, we obtain the marginal distribution of a document:(3)pw∣α,β=∫pθ∣α∏n=1Npzn∣θpwn∣zn,βdθ.A corpusD with M documents is designed as pD∣α,β=∏d=1⋯Mpwd∣α,β, So(4)pD∣α,β=∏d=1M∫pθd∣α·∏n=1Nd∑zdnpzdn∣θdpwdn∣zdn,βdθd.From (4), we obtain the parameters α and β by training and get the pD∣α,β maximum, so that we compute the posterior distribution of the hidden variables given a document:(5)pθ,z∣w,α,β=pθ,z,w∣α,βpw∣α,β.By (2), the Failure Density (FD) is determined by the number of failures and the number of files within a component, defined as the ratio of the number of failures in the component to its size, which reflects the failure information in a component. Using this ratio as motivation, we define the failure density of a topic (TFD)zi as(6)TFDzi=∑j=0nθijFDcomj.Using (6), failures are mapped to topics. TFDzi describes the failure-proneness of topic zi.


## 3.3. Prediction

In the work by Hindle et al. [40], they compared two topics by taking the top 10 words with the highest probability that if 8 of the words are the same, then the two topics are considered to be the same. In this paper, we increased the number of the highest probability words and defined the similarity as a ratio of the number of the same words in different topics to the total number of high probability words (see (7)):(7)Similarity=Highest  Word  fromTi∩Highest  Word  fromTjNumber  of  Highest  Word.By (7), we calculate similarity of the topics in two neighboring versions and get a similarity matrix. Then we define TFD relation:(8)TFDzi,vj+1=∑k=0kμikTFDzk,vj,where vj is version j, k is the total number of topics in vj, and μik is the similar degree of topics zk and zi which is from the similarity matrix. After getting TFD through (8), we get FDcomj+1 in v(j+1) using (6), and then we obtain the number of failures in each component.


## 4. Experiment

### 4.1. Dataset

The experimental data comes from three open source projects, that is, Platform (a subproject of Eclipse), Ant, and Mylyn. We select three versions of bug reports for each project and the source code of the corresponding versions (Platform3.2, Platform3.3, and Platform3.4; Ant1.6.0, Ant1.7.0, and Ant1.8.0; Mylyn3.5, Mylyn3.6, and Mylyn3.7). The basic information of the three projects is shown in Table1.Table 1
Three open-source projects.
Components
Files
Failures
Platform3.2
11
10946
8773
Platform3.3
11
12185
6814
Platform3.4
11
13735
4922
Ant1.6.0
10
257
20
Ant1.7.0
10
612
104
Ant1.8.0
10
264
5
Mylyn3.5
11
3501
7
Mylyn3.6
11
3621
20
Mylyn3.7
11
5442
11


### 4.2. Results and Analysis on Three Open Source Projects

For any given corpus, how to choose the topic number (K) does not have a unified standard, and different corpora with different topics have great differences [41–43]. Setting K to extremely small values causes the topics to contain multiple concepts (imagine only a single topic, which will contain all of the concepts in the corpus), while setting K to extremely large values makes the topics too fine to be meaningful and only reveals the idiosyncrasies of the data [34]. Synthetically we considered the component number and scale within a project, as well as using our experience; we select K from 10 to 100. The experiment results are shown in Figure 2.Figure 2
The prediction results with different topics.We choose a different number of topics and compare the similarity of predicted data and actual data. From Figure2, the result is better than the others when the number of topics is 20. This visualization allows us to quickly and compactly compare and contrast the trends exhibited by the various topics. We set K to 20 for the three projects.We run LDA on three projects and get the topic distribution of the components. The full listing of the topics distribution discovered 9 is given in Table4. We compare the topic distribution of the components between neighboring versions of the three projects. It is seen that the topics in the current version relate to the topics in the previous version. For example, topic 8 in version 3.5 (T3.58) and topic 1 in version 3.6 (T3.61) have almost the same correlation with 11 components (Figure 3). We also find that T3.58 and T3.63 have a large difference.Figure 3
The relationship between topics and components.Why doT3.58 and T3.61 have only a small variance in COM1 (Bugzilla) with the relation value of T3.58 and T3.61 being 0.8988 and 0.8545 (see Table 4), respectively? Also, what makes T3.58 and T3.63 have a difference within components? We compare the high probability word information of the three topics. Table 2 shows the high probability words (top 10 words) of these three topics.Table 2
High probability words.
T
3.5
8
T
3.6
1
T
3.6
3
Top word
Word frequency
Top word
Word frequency
Top word
Word frequency
nls
0.0275
Nls
0.0281
task
0.1415
non
0.0191
non
0.0182
repository
0.0480
attribute
0.0172
Attribute
0.0182
ui
0.0476
data
0.0158
Data
0.0162
get
0.0350
task
0.0120
Task
0.0157
select
0.0188
repository
0.0095
Repository
0.0105
date
0.0181
bugzilla
0.0087
Bugzilla
0.0088
swt
0.0178
bugzillaattribute
0.0083
bugzillaattribute
0.0087
data
0.0171
message
0.0072
Getvalue
0.0069
page
0.0142
getroot
0.0068
Getroot
0.0069
layout
0.0135In the experiments we found that not all TFD in the previous version had an impact on the later version. When the similarity between topics is below a threshold, the influence between TFD is very small or even has a negative influence on the results.With the high probability words ofT3.58 and T3.61, just the ninth “message” is different. In addition, T3.58 has nothing in common with T3.63 in terms of high probability words. We conclude this is the most direct reason for why the two topics have a high similarly (or great difference) relation value between the components. Hence, this is why we use the similarity of high probability words to describe the similarity between two topics. At the same time, a similarity matrix is built to show the membership of topics in two neighboring versions. Table 3 is a similarity matrix of the three projects. In our study, some topics had one or more similar topics in the next version, but others had no similar topics. This is consistent with the topic evolution [34].Table 3
Similarity matrix of topics.
Ant1.7
T
1
T
2
T
3
T
4
T
5
T
6
T
7
T
8
T
9
T
10
T
11
T
12
T
13
T
14
T
15
T
16
T
17
T
18
T
19
T
20
Ant1.6
T
1
0.06
0.04
0.02
0.00
0.12
0.06
0.00
0.04
0.06
0.02
0.10
0.08
0.02
0.10
0.06
0.14
0.02
0.08
0.06
0.02
T
2
0.16
0.08
0.04
0.06
0.06
0.08
0.12
0.06
0.22
0.02
0.16
0.02
0.10
0.22
0.24
0.04
0.20
0.12
0.06
0.10
T
3
0.26
0.68
0.32
0.34
0.08
0.04
0.32
0.30
0.16
0.02
0.08
0.20
0.16
0.08
0.18
0.04
0.16
0.32
0.14
0.24
T
4
0.10
0.06
0.02
0.08
0.08
0.04
0.08
0.04
0.42
0.08
0.24
0.04
0.18
0.14
0.12
0.02
0.44
0.18
0.06
0.06
T
5
0.30
0.32
0.18
0.26
0.20
0.06
0.14
0.30
0.22
0.02
0.20
0.10
0.14
0.22
0.18
0.06
0.24
0.96
0.12
0.30
T
6
0.96
0.28
0.22
0.18
0.10
0.10
0.14
0.20
0.20
0.00
0.08
0.18
0.06
0.02
0.16
0.02
0.08
0.28
0.10
0.20
T
7
0.26
0.34
0.36
0.34
0.16
0.08
0.16
0.54
0.18
0.04
0.16
0.06
0.18
0.12
0.10
0.10
0.16
0.32
0.08
0.32
T
8
0.08
0.08
0.14
0.14
0.06
0.04
0.10
0.10
0.08
0.06
0.14
0.12
0.12
0.06
0.08
0.22
0.08
0.06
0.14
0.12
T
9
0.10
0.06
0.06
0.12
0.22
0.08
0.06
0.06
0.08
0.00
0.26
0.08
0.26
0.32
0.18
0.04
0.20
0.16
0.10
0.18
T
10
0.20
0.40
0.74
0.28
0.10
0.06
0.12
0.34
0.08
0.02
0.02
0.08
0.16
0.08
0.06
0.08
0.06
0.16
0.08
0.24
T
11
0.14
0.22
0.14
0.14
0.12
0.02
0.08
0.12
0.06
0.06
0.24
0.04
0.16
0.10
0.28
0.10
0.14
0.20
0.10
0.68
T
12
0.04
0.04
0.00
0.02
0.04
0.02
0.08
0.02
0.12
0.10
0.04
0.04
0.12
0.10
0.04
0.04
0.04
0.04
0.02
0.00
T
13
0.10
0.08
0.06
0.08
0.02
0.00
0.12
0.08
0.10
0.18
0.06
0.02
0.14
0.06
0.16
0.02
0.12
0.12
0.10
0.04
T
14
0.10
0.16
0.12
0.18
0.14
0.02
0.12
0.20
0.04
0.06
0.26
0.12
0.12
0.20
0.28
0.10
0.22
0.20
0.04
0.28
T
15
0.04
0.14
0.08
0.12
0.12
0.04
0.08
0.08
0.24
0.06
0.38
0.06
0.38
0.36
0.18
0.06
0.34
0.22
0.10
0.16
T
16
0.08
0.16
0.14
0.16
0.10
0.16
0.08
0.12
0.20
0.06
0.30
0.04
0.18
0.10
0.14
0.10
0.28
0.12
0.16
0.16
T
17
0.14
0.22
0.24
0.64
0.14
0.00
0.20
0.30
0.14
0.02
0.10
0.04
0.10
0.08
0.16
0.10
0.22
0.20
0.12
0.12
T
18
0.16
0.18
0.22
0.12
0.10
0.04
0.18
0.20
0.18
0.04
0.08
0.08
0.12
0.08
0.12
0.10
0.14
0.16
0.12
0.14
T
19
0.02
0.06
0.04
0.06
0.12
0.08
0.06
0.04
0.12
0.04
0.18
0.02
0.18
0.12
0.08
0.06
0.18
0.06
0.12
0.08
T
20
0.06
0.12
0.08
0.08
0.08
0.06
0.08
0.12
0.30
0.02
0.26
0.08
0.16
0.16
0.14
0.06
0.22
0.08
0.06
0.06
Mylyn3.6
T
1
T
2
T
3
T
4
T
5
T
6
T
7
T
8
T
9
T
10
T
11
T
12
T
13
T
14
T
15
T
16
T
17
T
18
T
19
T
20
Mylyn3.5
T
1
0.04
0.02
0.02
0.04
0.04
0.06
0.08
0.08
0.04
0.04
0.02
0.06
0.06
0.06
0.04
0.04
0.10
0.20
0.68
0.06
T
2
0.04
0.08
0.72
0.24
0.24
0.08
0.02
0.08
0.10
0.04
0.08
0.08
0.16
0.32
0.02
0.10
0.02
0.04
0.04
0.08
T
3
0.00
0.02
0.00
0.02
0.04
0.06
0.04
0.04
0.04
0.02
0.02
0.02
0.00
0.06
0.06
0.04
0.00
0.04
0.00
0.04
T
4
0.02
0.00
0.12
0.10
0.08
0.06
0.02
0.06
0.04
0.04
0.14
0.00
0.26
0.02
0.22
0.02
0.06
0.00
0.04
0.12
T
5
0.06
0.02
0.16
0.26
0.32
0.16
0.08
0.18
0.14
0.06
0.22
0.18
0.64
0.20
0.22
0.30
0.08
0.12
0.04
0.08
T
6
0.12
0.06
0.10
0.16
0.12
0.08
0.06
0.12
0.04
0.00
0.16
0.20
0.22
0.10
0.16
0.86
0.02
0.12
0.10
0.00
T
7
0.00
0.04
0.00
0.08
0.14
0.26
0.16
0.26
0.06
0.02
0.10
0.08
0.12
0.08
0.24
0.08
0.52
0.18
0.04
0.06
T
8
0.92
0.10
0.10
0.08
0.14
0.08
0.24
0.26
0.16
0.00
0.06
0.08
0.06
0.12
0.04
0.12
0.26
0.26
0.04
0.02
T
9
0.04
0.06
0.08
0.12
0.16
0.12
0.10
0.14
0.08
0.00
0.14
0.92
0.16
0.04
0.14
0.22
0.04
0.04
0.08
0.08
T
10
0.04
0.06
0.18
0.18
0.38
0.72
0.02
0.14
0.16
0.02
0.08
0.12
0.22
0.36
0.18
0.14
0.16
0.12
0.02
0.10
T
11
0.02
0.02
0.08
0.10
0.10
0.14
0.04
0.08
0.00
0.00
0.08
0.10
0.12
0.04
0.32
0.06
0.12
0.00
0.04
0.68
T
12
0.02
0.02
0.08
0.08
0.10
0.14
0.14
0.70
0.02
0.02
0.08
0.08
0.18
0.08
0.46
0.14
0.18
0.14
0.12
0.12
T
13
0.02
0.06
0.08
0.18
0.22
0.08
0.02
0.02
0.46
0.04
0.08
0.16
0.04
0.04
0.02
0.06
0.04
0.10
0.06
0.06
T
14
0.02
0.06
0.20
0.14
0.14
0.08
0.04
0.02
0.10
0.04
0.12
0.02
0.18
0.48
0.06
0.02
0.08
0.10
0.00
0.08
T
15
0.18
0.00
0.02
0.06
0.06
0.14
0.10
0.28
0.04
0.02
0.10
0.08
0.22
0.04
0.50
0.06
0.18
0.14
0.08
0.14
T
16
0.24
0.52
0.04
0.02
0.02
0.06
0.02
0.02
0.00
0.00
0.04
0.02
0.00
0.08
0.02
0.08
0.02
0.00
0.02
0.04
T
17
0.04
0.08
0.26
0.58
0.40
0.12
0.00
0.08
0.24
0.02
0.08
0.10
0.26
0.38
0.08
0.22
0.12
0.32
0.06
0.08
T
18
0.02
0.08
0.06
0.35
0.08
0.00
0.06
0.04
0.08
0.06
0.14
0.08
0.04
0.18
0.06
0.08
0.06
0.20
0.14
0.00
T
19
0.00
0.12
0.10
0.16
0.10
0.00
0.02
0.10
0.26
0.02
0.06
0.02
0.10
0.14
0.08
0.08
0.08
0.10
0.04
0.04
T
20
0.00
0.12
0.24
0.40
0.84
0.18
0.02
0.10
0.48
0.00
0.10
0.14
0.22
0.36
0.02
0.14
0.08
0.16
0.04
0.10
Platform3.3
T
1
T
2
T
3
T
4
T
5
T
6
T
7
T
8
T
9
T
10
T
11
T
12
T
13
T
14
T
15
T
16
T
17
T
18
T
19
T
20
Platform3.2
T
1
0.04
0.02
0.04
0.02
0.08
0.02
0.10
0.00
0.06
0.04
0.08
0.08
0.06
0.02
0.04
0.00
0.00
0.02
0.04
0.08
T
2
0.24
0.38
0.08
0.08
0.52
0.34
0.08
0.00
0.02
0.88
0.26
0.16
0.20
0.28
0.30
0.30
0.56
0.42
0.28
0.22
T
3
0.20
0.28
0.06
0.10
0.34
0.24
0.08
0.00
0.00
0.28
0.92
0.16
0.16
0.34
0.26
0.18
0.30
0.38
0.16
0.34
T
4
0.12
0.02
0.12
0.02
0.08
0.06
0.04
0.02
0.00
0.04
0.00
0.02
0.16
0.00
0.06
0.04
0.06
0.04
0.14
0.06
T
5
0.02
0.04
0.00
0.00
0.02
0.00
0.00
0.00
0.06
0.02
0.04
0.02
0.00
0.02
0.02
0.00
0.00
0.02
0.00
0.02
T
6
0.28
0.38
0.06
0.06
0.46
0.36
0.12
0.00
0.04
0.46
0.30
0.10
0.22
0.96
0.40
0.24
0.40
0.40
0.24
0.22
T
7
0.36
0.46
0.10
0.12
0.42
0.32
0.08
0.00
0.00
0.52
0.24
0.16
0.22
0.42
0.16
0.30
0.88
0.38
0.30
0.14
T
8
0.26
0.14
0.12
0.04
0.06
0.10
0.02
0.04
0.04
0.06
0.06
0.04
0.10
0.04
0.08
0.20
0.08
0.14
0.16
0.06
T
9
0.14
0.18
0.08
0.02
0.18
0.12
0.10
0.00
0.02
0.18
0.20
0.12
0.12
0.14
0.18
0.22
0.18
0.16
0.10
0.20
T
10
0.52
0.26
0.32
0.00
0.22
0.28
0.00
0.00
0.00
0.24
0.10
0.14
0.70
0.24
0.16
0.22
0.26
0.24
0.72
0.10
T
11
0.18
0.30
0.02
0.06
0.26
0.24
0.12
0.02
0.02
0.26
0.26
0.24
0.16
0.26
0.40
0.28
0.24
0.24
0.10
0.12
T
12
0.38
0.64
0.20
0.06
0.44
0.64
0.12
0.00
0.02
0.52
0.26
0.10
0.32
0.50
0.32
0.32
0.52
0.44
0.36
0.18
T
13
0.04
0.02
0.00
0.04
0.06
0.02
0.04
0.00
0.06
0.04
0.06
0.00
0.00
0.06
0.02
0.04
0.02
0.04
0.00
0.04
T
14
0.18
0.10
0.24
0.04
0.12
0.18
0.10
0.00
0.02
0.08
0.10
0.12
0.16
0.14
0.14
0.16
0.08
0.12
0.18
0.06
T
15
0.06
0.14
0.10
0.08
0.10
0.06
0.20
0.04
0.04
0.06
0.04
0.04
0.02
0.14
0.12
0.14
0.06
0.16
0.02
0.04
T
16
0.22
0.34
0.20
0.14
0.82
0.40
0.12
0.00
0.00
0.52
0.26
0.12
0.26
0.44
0.24
0.28
0.40
0.38
0.34
0.16
T
17
0.18
0.18
0.06
0.04
0.24
0.22
0.14
0.00
0.04
0.26
0.22
0.16
0.18
0.32
0.82
0.20
0.14
0.28
0.20
0.18
T
18
0.10
0.14
0.08
0.06
0.12
0.08
0.12
0.00
0.00
0.10
0.08
0.14
0.08
0.10
0.06
0.04
0.06
0.08
0.10
0.08
T
19
0.30
0.50
0.10
0.08
0.40
0.40
0.06
0.00
0.04
0.42
0.32
0.20
0.32
0.46
0.32
0.36
0.48
0.86
0.30
0.18
T
20
0.04
0.12
0.04
0.04
0.16
0.14
0.06
0.00
0.02
0.20
0.32
0.06
0.10
0.20
0.14
0.20
0.16
0.16
0.12
0.88Table 4
(a)
Ant
COM1
COM2
COM3
COM4
COM5
COM6
COM7
COM8
COM9
COM10
T
1.61
0.0001
0.0001
0.0030
0.0468
0.0005
0.0000
0.0003
0.0000
0.0029
0.0002
T
1.62
0.0000
0.0001
0.0030
0.0002
0.0001
0.0000
0.0003
0.0640
0.0746
0.0012
T
1.63
0.0001
0.0001
0.0030
0.0000
0.0001
0.7864
0.0003
0.0001
0.0001
0.0002
T
1.64
0.0000
0.0001
0.0030
0.0001
0.0001
0.0000
0.0003
0.2429
0.0000
0.0017
T
1.65
0.0001
0.0001
0.0030
0.0000
0.0001
0.0002
0.0067
0.0000
0.9170
0.0001
T
1.66
0.0000
0.0001
0.0030
0.0000
0.0001
0.0000
0.9695
0.0000
0.0000
0.0001
T
1.67
0.8310
0.0014
0.0030
0.0000
0.0019
0.0001
0.0003
0.0000
0.0003
0.0002
T
1.68
0.0001
0.0037
0.0030
0.0700
0.0001
0.0000
0.0003
0.0000
0.0000
0.0131
T
1.69
0.0232
0.0212
0.0090
0.1569
0.0003
0.0027
0.0003
0.0820
0.0035
0.0917
T
1.610
0.0022
0.9462
0.0329
0.0002
0.0005
0.0000
0.0003
0.0000
0.0000
0.0004
T
1.611
0.0006
0.0005
0.0090
0.0000
0.7731
0.0001
0.0051
0.0000
0.0000
0.0001
T
1.612
0.0000
0.0001
0.0030
0.0000
0.0001
0.0000
0.0003
0.0473
0.0000
0.0001
T
1.613
0.0000
0.0001
0.0090
0.0001
0.0005
0.0000
0.0003
0.0731
0.0000
0.0004
T
1.614
0.0002
0.0003
0.0030
0.0070
0.2213
0.0167
0.0111
0.0589
0.0007
0.0922
T
1.615
0.1246
0.0246
0.0030
0.4039
0.0001
0.0186
0.0013
0.2627
0.0000
0.0714
T
1.616
0.0000
0.0003
0.0030
0.1425
0.0005
0.0001
0.0003
0.0000
0.0000
0.0001
T
1.617
0.0001
0.0003
0.8952
0.0000
0.0003
0.0002
0.0024
0.0000
0.0000
0.7243
T
1.618
0.0007
0.0001
0.0030
0.0001
0.0001
0.1729
0.0003
0.0361
0.0002
0.0004
T
1.619
0.0002
0.0001
0.0030
0.0887
0.0001
0.0005
0.0003
0.0124
0.0002
0.0004
T
1.620
0.0165
0.0008
0.0030
0.0835
0.0001
0.0015
0.0003
0.1203
0.0000
0.0016
T
1.71
0.0000
0.0001
0.0031
0.0000
0.0001
0.0000
0.9744
0.0000
0.0003
0.0000
T
1.72
0.0001
0.0001
0.0010
0.0000
0.0001
0.5534
0.0024
0.0000
0.0000
0.0000
T
1.73
0.0952
0.8980
0.9622
0.0000
0.0113
0.0001
0.0030
0.0000
0.0004
0.0000
T
1.74
0.0001
0.0021
0.0010
0.0235
0.0017
0.0004
0.0003
0.0004
0.0000
0.7491
T
1.75
0.1820
0.0003
0.0153
0.0000
0.0001
0.0001
0.0003
0.0000
0.0000
0.0000
T
1.76
0.0000
0.0001
0.0010
0.0381
0.0001
0.0000
0.0003
0.0000
0.0000
0.0000
T
1.77
0.0000
0.0005
0.0010
0.0000
0.0001
0.2607
0.0003
0.0275
0.0000
0.0000
T
1.78
0.5357
0.0003
0.0010
0.0000
0.0001
0.0003
0.0013
0.0000
0.0000
0.0000
T
1.79
0.0000
0.0001
0.0010
0.0000
0.0001
0.0000
0.0008
0.1440
0.0003
0.0000
T
1.710
0.0000
0.0001
0.0010
0.0000
0.0001
0.0000
0.0003
0.0478
0.0001
0.0000
T
1.711
0.0000
0.0135
0.0010
0.2819
0.0007
0.0006
0.0003
0.0143
0.0000
0.0963
T
1.712
0.1160
0.0006
0.0010
0.0000
0.0001
0.0001
0.0003
0.0000
0.0000
0.0002
T
1.713
0.0090
0.0138
0.0010
0.2226
0.0001
0.0403
0.0003
0.1539
0.0000
0.0477
T
1.714
0.0070
0.0563
0.0010
0.2375
0.0082
0.0399
0.0003
0.1793
0.0326
0.1055
T
1.715
0.0000
0.0001
0.0010
0.0000
0.1170
0.0000
0.0003
0.0783
0.0000
0.0001
T
1.716
0.0000
0.0003
0.0010
0.0633
0.0001
0.0000
0.0003
0.0000
0.0003
0.0000
T
1.717
0.0001
0.0001
0.0010
0.0952
0.0001
0.1035
0.0003
0.3540
0.0000
0.0001
T
1.718
0.0052
0.0006
0.0010
0.0000
0.0001
0.0000
0.0138
0.0004
0.9653
0.0000
T
1.719
0.0496
0.0001
0.0010
0.0612
0.0001
0.0004
0.0003
0.0000
0.0002
0.0000
T
1.720
0.0000
0.0131
0.0031
0.0000
0.8599
0.0000
0.0008
0.0000
0.0001
0.0005
T
1.81
0.0005
0.0001
0.0010
0.0000
0.0001
0.0001
0.2861
0.0554
0.0001
0.0000
T
1.82
0.0005
0.9285
0.0174
0.0000
0.0041
0.0001
0.0129
0.0000
0.0000
0.0001
T
1.83
0.0002
0.0002
0.0010
0.0986
0.0004
0.0000
0.0026
0.0000
0.0000
0.0003
T
1.84
0.0002
0.0001
0.0112
0.0000
0.0001
0.0004
0.0026
0.0639
0.0000
0.0000
T
1.85
0.0011
0.0007
0.0031
0.0000
0.6131
0.0000
0.0026
0.0001
0.0001
0.0001
T
1.86
0.0002
0.0001
0.0010
0.0000
0.0002
0.0000
0.0026
0.1451
0.0002
0.0004
T
1.87
0.0952
0.0001
0.0010
0.0001
0.0001
0.0000
0.0026
0.0562
0.0085
0.0460
T
1.88
0.0002
0.0001
0.0031
0.0339
0.0001
0.0000
0.0026
0.0087
0.0000
0.0001
T
1.89
0.0002
0.0001
0.0010
0.0464
0.0001
0.0000
0.0026
0.0000
0.0002
0.0000
T
1.810
0.6063
0.0001
0.8497
0.0000
0.0001
0.0458
0.0077
0.0000
0.0001
0.0002
T
1.811
0.0278
0.0156
0.0010
0.2805
0.0001
0.0157
0.0026
0.2023
0.0003
0.0817
T
1.812
0.0002
0.0004
0.0971
0.0000
0.1478
0.2277
0.0026
0.0000
0.0003
0.0007
T
1.813
0.0002
0.0002
0.0031
0.0000
0.0001
0.6628
0.0129
0.0001
0.0001
0.0001
T
1.814
0.0002
0.0016
0.0010
0.0796
0.1605
0.0000
0.0026
0.0000
0.0000
0.0000
T
1.815
0.0002
0.0001
0.0031
0.0000
0.0001
0.0000
0.0026
0.0014
0.0000
0.7292
T
1.816
0.0173
0.0064
0.0010
0.1521
0.0001
0.0008
0.0026
0.1006
0.0001
0.0001
T
1.817
0.0005
0.0001
0.0010
0.0425
0.0001
0.0000
0.0026
0.0000
0.0000
0.0000
T
1.818
0.0002
0.0004
0.0010
0.0000
0.0002
0.0000
0.6314
0.0000
0.9476
0.0001
T
1.819
0.0005
0.0001
0.0010
0.0000
0.0001
0.0001
0.0026
0.1590
0.0008
0.0001
T
1.820
0.2489
0.0450
0.0010
0.2661
0.0727
0.0463
0.0129
0.2070
0.0412
0.1405
(b)
Mylyn
COM1
COM2
COM3
COM4
COM5
COM6
COM7
COM8
COM9
COM10
COM11
T
3.51
0.0000
0.1260
0.1842
0.0002
0.0001
0.0184
0.0000
0.0000
0.0000
0.0004
0.0084
T
3.52
0.0000
0.4041
0.0000
0.0001
0.4103
0.0037
0.2260
0.0004
0.0000
0.0007
0.0054
T
3.53
0.0000
0.0000
0.0000
0.0001
0.0001
0.0037
0.0243
0.0000
0.0455
0.0001
0.0001
T
3.54
0.0382
0.0000
0.0006
0.0041
0.0014
0.0037
0.1581
0.0552
0.1297
0.0536
0.0010
T
3.55
0.0000
0.0000
0.0000
0.0001
0.0001
0.0110
0.3554
0.0001
0.2683
0.0174
0.0001
T
3.56
0.0000
0.0000
0.0000
0.0019
0.9565
0.0404
0.0000
0.0001
0.0147
0.0004
0.0001
T
3.57
0.0000
0.0000
0.2018
0.0001
0.0001
0.0037
0.0000
0.0001
0.0920
0.0001
0.0004
T
3.58
0.8988
0.0699
0.0000
0.0000
0.0012
0.0833
0.0001
0.0083
0.0000
0.0006
0.0006
T
3.59
0.0000
0.0000
0.0000
0.7450
0.0001
0.0037
0.0000
0.0000
0.0256
0.0001
0.2220
T
3.510
0.7547
0.0004
0.0000
0.0000
0.0003
0.1066
0.0000
0.0012
0.0000
0.0001
0.0001
T
3.511
0.0000
0.0000
0.0000
0.0001
0.0006
0.0037
0.0000
0.0000
0.1415
0.0007
0.0001
T
3.512
0.0540
0.0001
0.1892
0.2199
0.0315
0.3272
0.0000
0.1504
0.0072
0.0001
0.0001
T
3.513
0.0003
0.0098
0.0046
0.0000
0.0001
0.0699
0.0000
0.0029
0.0001
0.0040
0.6906
T
3.514
0.2011
0.1624
0.0000
0.0002
0.0001
0.0037
0.1614
0.0001
0.1086
0.0004
0.0007
T
3.515
0.0001
0.0000
0.0396
0.0274
0.0054
0.2978
0.0002
0.0006
0.1664
0.0001
0.0004
T
3.516
0.0000
0.0802
0.0000
0.0000
0.0003
0.0037
0.0745
0.0006
0.0001
0.0007
0.0018
T
3.517
0.0000
0.4433
0.0000
0.0002
0.0017
0.0037
0.0000
0.0001
0.0000
0.0001
0.0013
T
3.518
0.0000
0.2010
0.0000
0.0000
0.0001
0.0037
0.0000
0.0000
0.0000
0.0001
0.0013
T
3.519
0.1524
0.0864
0.0000
0.0002
0.0001
0.0037
0.0000
0.0041
0.0000
0.0010
0.0018
T
3.520
0.0001
0.0525
0.0000
0.0000
0.0001
0.0772
0.0000
0.7840
0.0000
0.9190
0.0644
T
3.61
0.8545
0.0759
0.0000
0.0025
0.0002
0.0833
0.0002
0.0082
0.0000
0.0002
0.0001
T
3.62
0.0000
0.0622
0.0000
0.0000
0.0001
0.0019
0.1003
0.0000
0.0646
0.0000
0.0001
T
3.63
0.0000
0.4181
0.0067
0.0001
0.4513
0.0038
0.0014
0.0000
0.0310
0.0003
0.0056
T
3.64
0.0000
0.3926
0.0000
0.0000
0.0001
0.0019
0.0000
0.0000
0.0000
0.0001
0.0001
T
3.65
0.0000
0.0000
0.0000
0.0000
0.0001
0.0019
0.0000
0.8163
0.0000
0.0628
0.0001
T
3.66
0.5414
0.0000
0.0000
0.0000
0.0001
0.0019
0.0000
0.0000
0.0000
0.0133
0.0003
T
3.67
0.0000
0.0000
0.2040
0.0000
0.0001
0.0057
0.0000
0.0000
0.0000
0.0000
0.0002
T
3.68
0.0478
0.0000
0.2299
0.2284
0.0001
0.6317
0.0000
0.1336
0.0000
0.0009
0.0005
T
3.69
0.0000
0.0000
0.0000
0.0000
0.0001
0.0057
0.0000
0.0498
0.0000
0.8700
0.7358
T
3.610
0.1473
0.0000
0.0000
0.0000
0.0001
0.0019
0.0000
0.0000
0.0000
0.0000
0.0001
T
3.611
0.0000
0.0000
0.0000
0.0001
0.0001
0.0057
0.1294
0.0000
0.1096
0.0000
0.0001
T
3.612
0.0000
0.0000
0.0000
0.7711
0.0001
0.0019
0.0000
0.0000
0.0000
0.0002
0.2529
T
3.613
0.0000
0.0000
0.0000
0.0001
0.0002
0.0019
0.4156
0.0000
0.3470
0.0127
0.0001
T
3.614
0.2633
0.1742
0.0000
0.0000
0.0001
0.0134
0.0000
0.0000
0.0000
0.0000
0.0001
T
3.615
0.0000
0.0000
0.0000
0.0000
0.0001
0.1019
0.0000
0.0000
0.2455
0.0391
0.0001
T
3.616
0.0000
0.0000
0.0000
0.0000
0.9983
0.0057
0.0000
0.0000
0.0000
0.0000
0.0003
T
3.617
0.0000
0.0000
0.2263
0.0000
0.0001
0.0019
0.0000
0.0000
0.1006
0.0000
0.0001
T
3.618
0.0000
0.2199
0.3397
0.0000
0.0001
0.0019
0.0000
0.0000
0.0000
0.0000
0.0095
T
3.619
0.0000
0.1404
0.1722
0.0000
0.0001
0.0019
0.0000
0.0000
0.0000
0.0000
0.0051
T
3.620
0.0000
0.0000
0.0000
0.0000
0.0006
0.3034
0.0000
0.0001
0.1327
0.0000
0.0001
T
3.71
0.0000
0.0000
0.0000
0.0022
0.5466
0.1364
0.0007
0.0002
0.0149
0.0002
0.0006
T
3.72
0.0272
0.0000
0.0000
0.0066
0.0003
0.0455
0.0676
0.0276
0.2456
0.0622
0.0001
T
3.73
0.1663
0.0001
0.0000
0.0001
0.0015
0.0455
0.0103
0.0089
0.0165
0.0038
0.0001
T
3.74
0.0000
0.0094
0.0000
0.0000
0.0006
0.0455
0.3143
0.0015
0.0004
0.0265
0.0001
T
3.75
0.0005
0.0000
0.0000
0.0099
0.0003
0.0455
0.4603
0.0000
0.3090
0.1623
0.0007
T
3.76
0.0016
0.0288
0.0000
0.0001
0.0002
0.0455
0.0000
0.0173
0.0008
0.6463
0.7956
T
3.77
0.0002
0.5077
0.0000
0.0001
0.0004
0.0455
0.0000
0.0002
0.0002
0.0009
0.0005
T
3.78
0.0000
0.0861
0.1353
0.0001
0.0001
0.0455
0.0000
0.0001
0.0004
0.0002
0.0005
T
3.79
0.0001
0.0000
0.1121
0.0025
0.0001
0.0455
0.0001
0.0002
0.0646
0.0002
0.0001
T
3.710
0.0456
0.0558
0.0001
0.0775
0.0966
0.0455
0.0434
0.0734
0.0437
0.0254
0.0348
T
3.711
0.0000
0.0000
0.0000
0.0000
0.0003
0.0455
0.0000
0.0000
0.1900
0.0002
0.0012
T
3.712
0.0000
0.1446
0.5328
0.0001
0.0001
0.0455
0.0000
0.0000
0.0001
0.0009
0.0016
T
3.713
0.6343
0.0015
0.0000
0.0006
0.0002
0.0455
0.0001
0.0003
0.0000
0.0005
0.0001
T
3.714
0.0000
0.0038
0.0000
0.0001
0.0004
0.0455
0.0000
0.7641
0.0025
0.0528
0.0215
T
3.715
0.0000
0.1618
0.0000
0.0001
0.0002
0.0455
0.0000
0.0003
0.0000
0.0002
0.0088
T
3.716
0.0003
0.0000
0.0002
0.0280
0.0004
0.0455
0.0718
0.0014
0.0915
0.0142
0.0003
T
3.717
0.0339
0.0001
0.1382
0.1756
0.3507
0.0455
0.0312
0.1032
0.0017
0.0013
0.0048
T
3.718
0.0000
0.0001
0.0000
0.6964
0.0012
0.0455
0.0001
0.0002
0.0178
0.0016
0.1281
T
3.719
0.0000
0.0001
0.0813
0.0000
0.0001
0.0455
0.0000
0.0009
0.0001
0.0002
0.0003
T
3.720
0.0899
0.0000
0.0000
0.0000
0.0002
0.0455
0.0000
0.0003
0.0000
0.0002
0.0003
(c)
Platform
COM1
COM2
COM3
COM4
COM5
COM6
COM7
COM8
COM9
COM10
COM11
T
3.21
0.0066
0.0000
0.0001
0.0009
0.0004
0.0001
0.0000
0.0000
0.0000
0.0505
0.0000
T
3.22
0.8505
0.0001
0.0031
0.0000
0.0029
0.0000
0.0000
0.0000
0.0000
0.0000
0.0001
T
3.23
0.0001
0.0002
0.0068
0.0036
0.0001
0.0000
0.0001
0.0004
0.0002
0.0000
0.8879
T
3.24
0.0001
0.0000
0.0026
0.0000
0.0024
0.0000
0.0702
0.0007
0.0000
0.0000
0.0000
T
3.25
0.0000
0.0000
0.0000
0.0001
0.0001
0.0170
0.0000
0.0000
0.0000
0.0000
0.0000
T
3.26
0.0001
0.0000
0.0105
0.0000
0.0006
0.0000
0.7790
0.0000
0.0000
0.0000
0.0000
T
3.27
0.0071
0.8968
0.0002
0.0000
0.0006
0.0000
0.0001
0.0000
0.0000
0.0001
0.0000
T
3.28
0.0495
0.0275
0.0210
0.0130
0.0110
0.0555
0.0379
0.0314
0.0426
0.0258
0.0185
T
3.29
0.0080
0.0089
0.0039
0.0020
0.8596
0.0004
0.0015
0.0088
0.0009
0.0006
0.0000
T
3.210
0.0000
0.0000
0.0013
0.0000
0.0004
0.7416
0.0000
0.0000
0.0004
0.0000
0.0000
T
3.211
0.0604
0.0578
0.0398
0.2502
0.0923
0.0051
0.0946
0.0652
0.0674
0.1016
0.0896
T
3.212
0.0007
0.0000
0.0012
0.0001
0.0004
0.0000
0.0001
0.0000
0.0005
0.7068
0.0006
T
3.213
0.0000
0.0000
0.0000
0.0000
0.0001
0.0354
0.0000
0.0000
0.0000
0.0000
0.0000
T
3.214
0.0060
0.0075
0.0011
0.0004
0.0006
0.0025
0.0141
0.0460
0.0198
0.1134
0.0031
T
3.215
0.0000
0.0000
0.0006
0.0000
0.0001
0.0548
0.0010
0.0024
0.0001
0.0001
0.0000
T
3.216
0.0100
0.0008
0.0006
0.0000
0.0015
0.0000
0.0001
0.8448
0.0000
0.0000
0.0000
T
3.217
0.0007
0.0000
0.0038
0.7266
0.0004
0.0000
0.0010
0.0001
0.0000
0.0009
0.0000
T
3.218
0.0001
0.0000
0.0000
0.0000
0.0001
0.0875
0.0000
0.0000
0.0000
0.0001
0.0000
T
3.219
0.0000
0.0002
0.0016
0.0000
0.0001
0.0000
0.0000
0.0000
0.8680
0.0001
0.0001
T
3.220
0.0000
0.0000
0.9018
0.0031
0.0265
0.0000
0.0002
0.0000
0.0000
0.0000
0.0000
T
3.31
0.0874
0.0292
0.0081
0.0006
0.0001
0.6105
0.0085
0.0192
0.0039
0.1907
0.0114
T
3.32
0.0000
0.0015
0.0001
0.0006
0.0002
0.0000
0.0000
0.0035
0.0910
0.3392
0.0000
T
3.33
0.0060
0.0030
0.0001
0.0000
0.0011
0.0000
0.0472
0.2239
0.0002
0.0013
0.0018
T
3.34
0.0000
0.0000
0.0000
0.0001
0.0001
0.0376
0.0000
0.0018
0.0000
0.0000
0.0000
T
3.35
0.0053
0.0006
0.0010
0.0001
0.0001
0.0000
0.0000
0.6919
0.0000
0.0000
0.0000
T
3.36
0.0000
0.0000
0.0006
0.0003
0.0001
0.0000
0.0000
0.0000
0.0002
0.3935
0.0002
T
3.37
0.0000
0.0063
0.0016
0.0008
0.0005
0.0566
0.0000
0.0018
0.0028
0.0021
0.0006
T
3.38
0.0000
0.0000
0.0000
0.0000
0.0002
0.0204
0.0000
0.0000
0.0000
0.0000
0.0000
T
3.39
0.0000
0.0000
0.0000
0.0000
0.0002
0.0223
0.0000
0.0000
0.0000
0.0000
0.0000
T
3.310
0.8271
0.0003
0.0063
0.0001
0.0001
0.0000
0.0000
0.0000
0.0001
0.0000
0.0000
T
3.311
0.0000
0.0000
0.0037
0.0029
0.0005
0.0000
0.0001
0.0003
0.0004
0.0002
0.9322
T
3.312
0.0039
0.0043
0.0012
0.0126
0.9493
0.0010
0.0124
0.0008
0.0000
0.0055
0.0020
T
3.313
0.0000
0.0000
0.0005
0.0000
0.0001
0.4372
0.0000
0.0001
0.0001
0.0000
0.0000
T
3.314
0.0001
0.0001
0.0173
0.0000
0.0005
0.0000
0.8048
0.0000
0.0000
0.0000
0.0000
T
3.315
0.0033
0.0002
0.0060
0.9403
0.0018
0.0000
0.0031
0.0007
0.0006
0.0025
0.0004
T
3.316
0.0586
0.0504
0.0461
0.0375
0.0386
0.0221
0.1089
0.0558
0.1049
0.0648
0.0506
T
3.317
0.0082
0.9040
0.0008
0.0000
0.0001
0.0000
0.0002
0.0000
0.0000
0.0000
0.0000
T
3.318
0.0000
0.0000
0.0013
0.0000
0.0001
0.0000
0.0000
0.0000
0.7958
0.0000
0.0000
T
3.319
0.0000
0.0000
0.0000
0.0000
0.0002
0.4020
0.0000
0.0000
0.0000
0.0000
0.0000
T
3.320
0.0000
0.0000
0.9054
0.0041
0.0064
0.0001
0.0147
0.0000
0.0001
0.0000
0.0006
T
3.41
0.0000
0.0000
0.0000
0.0000
0.0000
0.0335
0.0000
0.0000
0.0000
0.0000
0.0000
T
3.42
0.0012
0.0038
0.0016
0.0000
0.0000
0.0478
0.0034
0.0106
0.0075
0.0568
0.0016
T
3.43
0.0001
0.0001
0.0000
0.0000
0.0001
0.0000
0.0004
0.0003
0.0046
0.3092
0.0001
T
3.44
0.0000
0.0000
0.9007
0.0042
0.0133
0.0000
0.0174
0.0000
0.0001
0.0000
0.0001
T
3.45
0.0059
0.8147
0.0008
0.0000
0.0001
0.0000
0.0000
0.0001
0.0000
0.0000
0.0000
T
3.46
0.0000
0.0000
0.0109
0.0000
0.0000
0.0000
0.6702
0.0000
0.0000
0.0000
0.0002
T
3.47
0.0000
0.0000
0.0000
0.0000
0.0000
0.1535
0.0000
0.0000
0.0000
0.0000
0.0000
T
3.48
0.0100
0.0047
0.0185
0.0118
0.0167
0.0193
0.0106
0.0088
0.0722
0.0055
0.0083
T
3.49
0.0040
0.0007
0.0078
0.9352
0.0067
0.0000
0.0051
0.0031
0.0001
0.0021
0.0002
T
3.410
0.1842
0.1722
0.0489
0.0334
0.1251
0.0039
0.2839
0.1940
0.1764
0.2234
0.1249
T
3.411
0.0000
0.0000
0.0000
0.0000
0.0000
0.0283
0.0000
0.0000
0.0000
0.0000
0.0000
T
3.412
0.0000
0.0000
0.0005
0.0000
0.0000
0.6663
0.0000
0.0002
0.0000
0.0000
0.0000
T
3.413
0.0000
0.0000
0.0013
0.0000
0.0000
0.0000
0.0000
0.0000
0.7375
0.0000
0.0001
T
3.414
0.7864
0.0013
0.0010
0.0000
0.0000
0.0000
0.0000
0.0000
0.0001
0.0000
0.0000
T
3.415
0.0000
0.0001
0.0054
0.0024
0.0165
0.0000
0.0000
0.0003
0.0000
0.0001
0.8642
T
3.416
0.0002
0.0000
0.0000
0.0000
0.0002
0.0000
0.0000
0.0000
0.0002
0.4023
0.0000
T
3.417
0.0044
0.0019
0.0010
0.0012
0.0001
0.0007
0.0086
0.0753
0.0008
0.0003
0.0001
T
3.418
0.0034
0.0003
0.0000
0.0000
0.0002
0.0000
0.0001
0.7072
0.0000
0.0000
0.0000
T
3.419
0.0001
0.0000
0.0015
0.0117
0.8208
0.0001
0.0001
0.0001
0.0005
0.0002
0.0001
T
3.420
0.0000
0.0000
0.0001
0.0000
0.0000
0.0466
0.0000
0.0000
0.0000
0.0000
0.0000We use (6) to calculate the TFD for each topic on the three projects (Platform, Ant, and Mylyn). In order to better describe the relation between TFD and versions, we use a box plot. TFD of these three projects is shown in Figure 4.Figure 4
Box plots of TFD of three projects.From Table1 and Figure 4, it is seen that the fewer the number of failures, the smaller the box length. For example, the length of the box plot corresponding TFD in Ant1.8 is almost 0; the number of failures in Ant1.8 is only 5 (Table 1); the number of failures in Ant1.7 is 104; the length of the box plot is much longer. According to (6), TFD is determined by the topic distribution matrix and the FD of the component. If the FD and the topic distribution matrix change, the value of the TFD will also change. However, in our research, we find that the number of files and topic mixture θ is constant in a version of a project. We conclude that the distribution of the TFDs in the same project is related to the number of failures. On the other hand, the distribution of TFD reflects the failure distribution in each version of a project.In the above work, it is shown that using the similarity of high probability words describes the connection between topics in two neighboring versions (see Table3). Furthermore, the TFD has a connection with failures of components (see Figure 4). Next we use TFD and the relation of topics to make a prediction for the failures of components.Figure5 shows the prediction results of the failures in each component and the actual number of failures in each component of three projects.Figure 5
Failures (prediction) versus actual failures.
(a)
Mylyn
(b)
Ant
(c)
PlatformFrom Figure5, it is seen that the number of failures from our predictor (we call it the prediction data) has some relation with the numbers of failures collected from Bugzilla (we call it the actual data). When the actual data of each component is larger, our prediction data is usually larger, for example, the numbers of failures of component SWT and component Debug in Figure 5(c).What is the significance of our prediction? As in [9], we sort components by the number of failures. We find that ranking of many predicted components is consistent with the order of the real components ranking (Figure 6). We compare the first three and last three components with the actual ranking, and the average correct rate is 77.8%. In other words, our proposed prediction method quickly finds which components have the most failures and which have the least in the next version. It gives an idea about the testing priorities and allows software organizations to better focus on testing activities and improve cost estimation.Figure 6
Comparing predicted and actual rankings.


## 4.1. Dataset

The experimental data comes from three open source projects, that is, Platform (a subproject of Eclipse), Ant, and Mylyn. We select three versions of bug reports for each project and the source code of the corresponding versions (Platform3.2, Platform3.3, and Platform3.4; Ant1.6.0, Ant1.7.0, and Ant1.8.0; Mylyn3.5, Mylyn3.6, and Mylyn3.7). The basic information of the three projects is shown in Table1.Table 1
Three open-source projects.
Components
Files
Failures
Platform3.2
11
10946
8773
Platform3.3
11
12185
6814
Platform3.4
11
13735
4922
Ant1.6.0
10
257
20
Ant1.7.0
10
612
104
Ant1.8.0
10
264
5
Mylyn3.5
11
3501
7
Mylyn3.6
11
3621
20
Mylyn3.7
11
5442
11


## 4.2. Results and Analysis on Three Open Source Projects

For any given corpus, how to choose the topic number (K) does not have a unified standard, and different corpora with different topics have great differences [41–43]. Setting K to extremely small values causes the topics to contain multiple concepts (imagine only a single topic, which will contain all of the concepts in the corpus), while setting K to extremely large values makes the topics too fine to be meaningful and only reveals the idiosyncrasies of the data [34]. Synthetically we considered the component number and scale within a project, as well as using our experience; we select K from 10 to 100. The experiment results are shown in Figure 2.Figure 2
The prediction results with different topics.We choose a different number of topics and compare the similarity of predicted data and actual data. From Figure2, the result is better than the others when the number of topics is 20. This visualization allows us to quickly and compactly compare and contrast the trends exhibited by the various topics. We set K to 20 for the three projects.We run LDA on three projects and get the topic distribution of the components. The full listing of the topics distribution discovered 9 is given in Table4. We compare the topic distribution of the components between neighboring versions of the three projects. It is seen that the topics in the current version relate to the topics in the previous version. For example, topic 8 in version 3.5 (T3.58) and topic 1 in version 3.6 (T3.61) have almost the same correlation with 11 components (Figure 3). We also find that T3.58 and T3.63 have a large difference.Figure 3
The relationship between topics and components.Why doT3.58 and T3.61 have only a small variance in COM1 (Bugzilla) with the relation value of T3.58 and T3.61 being 0.8988 and 0.8545 (see Table 4), respectively? Also, what makes T3.58 and T3.63 have a difference within components? We compare the high probability word information of the three topics. Table 2 shows the high probability words (top 10 words) of these three topics.Table 2
High probability words.
T
3.5
8
T
3.6
1
T
3.6
3
Top word
Word frequency
Top word
Word frequency
Top word
Word frequency
nls
0.0275
Nls
0.0281
task
0.1415
non
0.0191
non
0.0182
repository
0.0480
attribute
0.0172
Attribute
0.0182
ui
0.0476
data
0.0158
Data
0.0162
get
0.0350
task
0.0120
Task
0.0157
select
0.0188
repository
0.0095
Repository
0.0105
date
0.0181
bugzilla
0.0087
Bugzilla
0.0088
swt
0.0178
bugzillaattribute
0.0083
bugzillaattribute
0.0087
data
0.0171
message
0.0072
Getvalue
0.0069
page
0.0142
getroot
0.0068
Getroot
0.0069
layout
0.0135In the experiments we found that not all TFD in the previous version had an impact on the later version. When the similarity between topics is below a threshold, the influence between TFD is very small or even has a negative influence on the results.With the high probability words ofT3.58 and T3.61, just the ninth “message” is different. In addition, T3.58 has nothing in common with T3.63 in terms of high probability words. We conclude this is the most direct reason for why the two topics have a high similarly (or great difference) relation value between the components. Hence, this is why we use the similarity of high probability words to describe the similarity between two topics. At the same time, a similarity matrix is built to show the membership of topics in two neighboring versions. Table 3 is a similarity matrix of the three projects. In our study, some topics had one or more similar topics in the next version, but others had no similar topics. This is consistent with the topic evolution [34].Table 3
Similarity matrix of topics.
Ant1.7
T
1
T
2
T
3
T
4
T
5
T
6
T
7
T
8
T
9
T
10
T
11
T
12
T
13
T
14
T
15
T
16
T
17
T
18
T
19
T
20
Ant1.6
T
1
0.06
0.04
0.02
0.00
0.12
0.06
0.00
0.04
0.06
0.02
0.10
0.08
0.02
0.10
0.06
0.14
0.02
0.08
0.06
0.02
T
2
0.16
0.08
0.04
0.06
0.06
0.08
0.12
0.06
0.22
0.02
0.16
0.02
0.10
0.22
0.24
0.04
0.20
0.12
0.06
0.10
T
3
0.26
0.68
0.32
0.34
0.08
0.04
0.32
0.30
0.16
0.02
0.08
0.20
0.16
0.08
0.18
0.04
0.16
0.32
0.14
0.24
T
4
0.10
0.06
0.02
0.08
0.08
0.04
0.08
0.04
0.42
0.08
0.24
0.04
0.18
0.14
0.12
0.02
0.44
0.18
0.06
0.06
T
5
0.30
0.32
0.18
0.26
0.20
0.06
0.14
0.30
0.22
0.02
0.20
0.10
0.14
0.22
0.18
0.06
0.24
0.96
0.12
0.30
T
6
0.96
0.28
0.22
0.18
0.10
0.10
0.14
0.20
0.20
0.00
0.08
0.18
0.06
0.02
0.16
0.02
0.08
0.28
0.10
0.20
T
7
0.26
0.34
0.36
0.34
0.16
0.08
0.16
0.54
0.18
0.04
0.16
0.06
0.18
0.12
0.10
0.10
0.16
0.32
0.08
0.32
T
8
0.08
0.08
0.14
0.14
0.06
0.04
0.10
0.10
0.08
0.06
0.14
0.12
0.12
0.06
0.08
0.22
0.08
0.06
0.14
0.12
T
9
0.10
0.06
0.06
0.12
0.22
0.08
0.06
0.06
0.08
0.00
0.26
0.08
0.26
0.32
0.18
0.04
0.20
0.16
0.10
0.18
T
10
0.20
0.40
0.74
0.28
0.10
0.06
0.12
0.34
0.08
0.02
0.02
0.08
0.16
0.08
0.06
0.08
0.06
0.16
0.08
0.24
T
11
0.14
0.22
0.14
0.14
0.12
0.02
0.08
0.12
0.06
0.06
0.24
0.04
0.16
0.10
0.28
0.10
0.14
0.20
0.10
0.68
T
12
0.04
0.04
0.00
0.02
0.04
0.02
0.08
0.02
0.12
0.10
0.04
0.04
0.12
0.10
0.04
0.04
0.04
0.04
0.02
0.00
T
13
0.10
0.08
0.06
0.08
0.02
0.00
0.12
0.08
0.10
0.18
0.06
0.02
0.14
0.06
0.16
0.02
0.12
0.12
0.10
0.04
T
14
0.10
0.16
0.12
0.18
0.14
0.02
0.12
0.20
0.04
0.06
0.26
0.12
0.12
0.20
0.28
0.10
0.22
0.20
0.04
0.28
T
15
0.04
0.14
0.08
0.12
0.12
0.04
0.08
0.08
0.24
0.06
0.38
0.06
0.38
0.36
0.18
0.06
0.34
0.22
0.10
0.16
T
16
0.08
0.16
0.14
0.16
0.10
0.16
0.08
0.12
0.20
0.06
0.30
0.04
0.18
0.10
0.14
0.10
0.28
0.12
0.16
0.16
T
17
0.14
0.22
0.24
0.64
0.14
0.00
0.20
0.30
0.14
0.02
0.10
0.04
0.10
0.08
0.16
0.10
0.22
0.20
0.12
0.12
T
18
0.16
0.18
0.22
0.12
0.10
0.04
0.18
0.20
0.18
0.04
0.08
0.08
0.12
0.08
0.12
0.10
0.14
0.16
0.12
0.14
T
19
0.02
0.06
0.04
0.06
0.12
0.08
0.06
0.04
0.12
0.04
0.18
0.02
0.18
0.12
0.08
0.06
0.18
0.06
0.12
0.08
T
20
0.06
0.12
0.08
0.08
0.08
0.06
0.08
0.12
0.30
0.02
0.26
0.08
0.16
0.16
0.14
0.06
0.22
0.08
0.06
0.06
Mylyn3.6
T
1
T
2
T
3
T
4
T
5
T
6
T
7
T
8
T
9
T
10
T
11
T
12
T
13
T
14
T
15
T
16
T
17
T
18
T
19
T
20
Mylyn3.5
T
1
0.04
0.02
0.02
0.04
0.04
0.06
0.08
0.08
0.04
0.04
0.02
0.06
0.06
0.06
0.04
0.04
0.10
0.20
0.68
0.06
T
2
0.04
0.08
0.72
0.24
0.24
0.08
0.02
0.08
0.10
0.04
0.08
0.08
0.16
0.32
0.02
0.10
0.02
0.04
0.04
0.08
T
3
0.00
0.02
0.00
0.02
0.04
0.06
0.04
0.04
0.04
0.02
0.02
0.02
0.00
0.06
0.06
0.04
0.00
0.04
0.00
0.04
T
4
0.02
0.00
0.12
0.10
0.08
0.06
0.02
0.06
0.04
0.04
0.14
0.00
0.26
0.02
0.22
0.02
0.06
0.00
0.04
0.12
T
5
0.06
0.02
0.16
0.26
0.32
0.16
0.08
0.18
0.14
0.06
0.22
0.18
0.64
0.20
0.22
0.30
0.08
0.12
0.04
0.08
T
6
0.12
0.06
0.10
0.16
0.12
0.08
0.06
0.12
0.04
0.00
0.16
0.20
0.22
0.10
0.16
0.86
0.02
0.12
0.10
0.00
T
7
0.00
0.04
0.00
0.08
0.14
0.26
0.16
0.26
0.06
0.02
0.10
0.08
0.12
0.08
0.24
0.08
0.52
0.18
0.04
0.06
T
8
0.92
0.10
0.10
0.08
0.14
0.08
0.24
0.26
0.16
0.00
0.06
0.08
0.06
0.12
0.04
0.12
0.26
0.26
0.04
0.02
T
9
0.04
0.06
0.08
0.12
0.16
0.12
0.10
0.14
0.08
0.00
0.14
0.92
0.16
0.04
0.14
0.22
0.04
0.04
0.08
0.08
T
10
0.04
0.06
0.18
0.18
0.38
0.72
0.02
0.14
0.16
0.02
0.08
0.12
0.22
0.36
0.18
0.14
0.16
0.12
0.02
0.10
T
11
0.02
0.02
0.08
0.10
0.10
0.14
0.04
0.08
0.00
0.00
0.08
0.10
0.12
0.04
0.32
0.06
0.12
0.00
0.04
0.68
T
12
0.02
0.02
0.08
0.08
0.10
0.14
0.14
0.70
0.02
0.02
0.08
0.08
0.18
0.08
0.46
0.14
0.18
0.14
0.12
0.12
T
13
0.02
0.06
0.08
0.18
0.22
0.08
0.02
0.02
0.46
0.04
0.08
0.16
0.04
0.04
0.02
0.06
0.04
0.10
0.06
0.06
T
14
0.02
0.06
0.20
0.14
0.14
0.08
0.04
0.02
0.10
0.04
0.12
0.02
0.18
0.48
0.06
0.02
0.08
0.10
0.00
0.08
T
15
0.18
0.00
0.02
0.06
0.06
0.14
0.10
0.28
0.04
0.02
0.10
0.08
0.22
0.04
0.50
0.06
0.18
0.14
0.08
0.14
T
16
0.24
0.52
0.04
0.02
0.02
0.06
0.02
0.02
0.00
0.00
0.04
0.02
0.00
0.08
0.02
0.08
0.02
0.00
0.02
0.04
T
17
0.04
0.08
0.26
0.58
0.40
0.12
0.00
0.08
0.24
0.02
0.08
0.10
0.26
0.38
0.08
0.22
0.12
0.32
0.06
0.08
T
18
0.02
0.08
0.06
0.35
0.08
0.00
0.06
0.04
0.08
0.06
0.14
0.08
0.04
0.18
0.06
0.08
0.06
0.20
0.14
0.00
T
19
0.00
0.12
0.10
0.16
0.10
0.00
0.02
0.10
0.26
0.02
0.06
0.02
0.10
0.14
0.08
0.08
0.08
0.10
0.04
0.04
T
20
0.00
0.12
0.24
0.40
0.84
0.18
0.02
0.10
0.48
0.00
0.10
0.14
0.22
0.36
0.02
0.14
0.08
0.16
0.04
0.10
Platform3.3
T
1
T
2
T
3
T
4
T
5
T
6
T
7
T
8
T
9
T
10
T
11
T
12
T
13
T
14
T
15
T
16
T
17
T
18
T
19
T
20
Platform3.2
T
1
0.04
0.02
0.04
0.02
0.08
0.02
0.10
0.00
0.06
0.04
0.08
0.08
0.06
0.02
0.04
0.00
0.00
0.02
0.04
0.08
T
2
0.24
0.38
0.08
0.08
0.52
0.34
0.08
0.00
0.02
0.88
0.26
0.16
0.20
0.28
0.30
0.30
0.56
0.42
0.28
0.22
T
3
0.20
0.28
0.06
0.10
0.34
0.24
0.08
0.00
0.00
0.28
0.92
0.16
0.16
0.34
0.26
0.18
0.30
0.38
0.16
0.34
T
4
0.12
0.02
0.12
0.02
0.08
0.06
0.04
0.02
0.00
0.04
0.00
0.02
0.16
0.00
0.06
0.04
0.06
0.04
0.14
0.06
T
5
0.02
0.04
0.00
0.00
0.02
0.00
0.00
0.00
0.06
0.02
0.04
0.02
0.00
0.02
0.02
0.00
0.00
0.02
0.00
0.02
T
6
0.28
0.38
0.06
0.06
0.46
0.36
0.12
0.00
0.04
0.46
0.30
0.10
0.22
0.96
0.40
0.24
0.40
0.40
0.24
0.22
T
7
0.36
0.46
0.10
0.12
0.42
0.32
0.08
0.00
0.00
0.52
0.24
0.16
0.22
0.42
0.16
0.30
0.88
0.38
0.30
0.14
T
8
0.26
0.14
0.12
0.04
0.06
0.10
0.02
0.04
0.04
0.06
0.06
0.04
0.10
0.04
0.08
0.20
0.08
0.14
0.16
0.06
T
9
0.14
0.18
0.08
0.02
0.18
0.12
0.10
0.00
0.02
0.18
0.20
0.12
0.12
0.14
0.18
0.22
0.18
0.16
0.10
0.20
T
10
0.52
0.26
0.32
0.00
0.22
0.28
0.00
0.00
0.00
0.24
0.10
0.14
0.70
0.24
0.16
0.22
0.26
0.24
0.72
0.10
T
11
0.18
0.30
0.02
0.06
0.26
0.24
0.12
0.02
0.02
0.26
0.26
0.24
0.16
0.26
0.40
0.28
0.24
0.24
0.10
0.12
T
12
0.38
0.64
0.20
0.06
0.44
0.64
0.12
0.00
0.02
0.52
0.26
0.10
0.32
0.50
0.32
0.32
0.52
0.44
0.36
0.18
T
13
0.04
0.02
0.00
0.04
0.06
0.02
0.04
0.00
0.06
0.04
0.06
0.00
0.00
0.06
0.02
0.04
0.02
0.04
0.00
0.04
T
14
0.18
0.10
0.24
0.04
0.12
0.18
0.10
0.00
0.02
0.08
0.10
0.12
0.16
0.14
0.14
0.16
0.08
0.12
0.18
0.06
T
15
0.06
0.14
0.10
0.08
0.10
0.06
0.20
0.04
0.04
0.06
0.04
0.04
0.02
0.14
0.12
0.14
0.06
0.16
0.02
0.04
T
16
0.22
0.34
0.20
0.14
0.82
0.40
0.12
0.00
0.00
0.52
0.26
0.12
0.26
0.44
0.24
0.28
0.40
0.38
0.34
0.16
T
17
0.18
0.18
0.06
0.04
0.24
0.22
0.14
0.00
0.04
0.26
0.22
0.16
0.18
0.32
0.82
0.20
0.14
0.28
0.20
0.18
T
18
0.10
0.14
0.08
0.06
0.12
0.08
0.12
0.00
0.00
0.10
0.08
0.14
0.08
0.10
0.06
0.04
0.06
0.08
0.10
0.08
T
19
0.30
0.50
0.10
0.08
0.40
0.40
0.06
0.00
0.04
0.42
0.32
0.20
0.32
0.46
0.32
0.36
0.48
0.86
0.30
0.18
T
20
0.04
0.12
0.04
0.04
0.16
0.14
0.06
0.00
0.02
0.20
0.32
0.06
0.10
0.20
0.14
0.20
0.16
0.16
0.12
0.88Table 4
(a)
Ant
COM1
COM2
COM3
COM4
COM5
COM6
COM7
COM8
COM9
COM10
T
1.61
0.0001
0.0001
0.0030
0.0468
0.0005
0.0000
0.0003
0.0000
0.0029
0.0002
T
1.62
0.0000
0.0001
0.0030
0.0002
0.0001
0.0000
0.0003
0.0640
0.0746
0.0012
T
1.63
0.0001
0.0001
0.0030
0.0000
0.0001
0.7864
0.0003
0.0001
0.0001
0.0002
T
1.64
0.0000
0.0001
0.0030
0.0001
0.0001
0.0000
0.0003
0.2429
0.0000
0.0017
T
1.65
0.0001
0.0001
0.0030
0.0000
0.0001
0.0002
0.0067
0.0000
0.9170
0.0001
T
1.66
0.0000
0.0001
0.0030
0.0000
0.0001
0.0000
0.9695
0.0000
0.0000
0.0001
T
1.67
0.8310
0.0014
0.0030
0.0000
0.0019
0.0001
0.0003
0.0000
0.0003
0.0002
T
1.68
0.0001
0.0037
0.0030
0.0700
0.0001
0.0000
0.0003
0.0000
0.0000
0.0131
T
1.69
0.0232
0.0212
0.0090
0.1569
0.0003
0.0027
0.0003
0.0820
0.0035
0.0917
T
1.610
0.0022
0.9462
0.0329
0.0002
0.0005
0.0000
0.0003
0.0000
0.0000
0.0004
T
1.611
0.0006
0.0005
0.0090
0.0000
0.7731
0.0001
0.0051
0.0000
0.0000
0.0001
T
1.612
0.0000
0.0001
0.0030
0.0000
0.0001
0.0000
0.0003
0.0473
0.0000
0.0001
T
1.613
0.0000
0.0001
0.0090
0.0001
0.0005
0.0000
0.0003
0.0731
0.0000
0.0004
T
1.614
0.0002
0.0003
0.0030
0.0070
0.2213
0.0167
0.0111
0.0589
0.0007
0.0922
T
1.615
0.1246
0.0246
0.0030
0.4039
0.0001
0.0186
0.0013
0.2627
0.0000
0.0714
T
1.616
0.0000
0.0003
0.0030
0.1425
0.0005
0.0001
0.0003
0.0000
0.0000
0.0001
T
1.617
0.0001
0.0003
0.8952
0.0000
0.0003
0.0002
0.0024
0.0000
0.0000
0.7243
T
1.618
0.0007
0.0001
0.0030
0.0001
0.0001
0.1729
0.0003
0.0361
0.0002
0.0004
T
1.619
0.0002
0.0001
0.0030
0.0887
0.0001
0.0005
0.0003
0.0124
0.0002
0.0004
T
1.620
0.0165
0.0008
0.0030
0.0835
0.0001
0.0015
0.0003
0.1203
0.0000
0.0016
T
1.71
0.0000
0.0001
0.0031
0.0000
0.0001
0.0000
0.9744
0.0000
0.0003
0.0000
T
1.72
0.0001
0.0001
0.0010
0.0000
0.0001
0.5534
0.0024
0.0000
0.0000
0.0000
T
1.73
0.0952
0.8980
0.9622
0.0000
0.0113
0.0001
0.0030
0.0000
0.0004
0.0000
T
1.74
0.0001
0.0021
0.0010
0.0235
0.0017
0.0004
0.0003
0.0004
0.0000
0.7491
T
1.75
0.1820
0.0003
0.0153
0.0000
0.0001
0.0001
0.0003
0.0000
0.0000
0.0000
T
1.76
0.0000
0.0001
0.0010
0.0381
0.0001
0.0000
0.0003
0.0000
0.0000
0.0000
T
1.77
0.0000
0.0005
0.0010
0.0000
0.0001
0.2607
0.0003
0.0275
0.0000
0.0000
T
1.78
0.5357
0.0003
0.0010
0.0000
0.0001
0.0003
0.0013
0.0000
0.0000
0.0000
T
1.79
0.0000
0.0001
0.0010
0.0000
0.0001
0.0000
0.0008
0.1440
0.0003
0.0000
T
1.710
0.0000
0.0001
0.0010
0.0000
0.0001
0.0000
0.0003
0.0478
0.0001
0.0000
T
1.711
0.0000
0.0135
0.0010
0.2819
0.0007
0.0006
0.0003
0.0143
0.0000
0.0963
T
1.712
0.1160
0.0006
0.0010
0.0000
0.0001
0.0001
0.0003
0.0000
0.0000
0.0002
T
1.713
0.0090
0.0138
0.0010
0.2226
0.0001
0.0403
0.0003
0.1539
0.0000
0.0477
T
1.714
0.0070
0.0563
0.0010
0.2375
0.0082
0.0399
0.0003
0.1793
0.0326
0.1055
T
1.715
0.0000
0.0001
0.0010
0.0000
0.1170
0.0000
0.0003
0.0783
0.0000
0.0001
T
1.716
0.0000
0.0003
0.0010
0.0633
0.0001
0.0000
0.0003
0.0000
0.0003
0.0000
T
1.717
0.0001
0.0001
0.0010
0.0952
0.0001
0.1035
0.0003
0.3540
0.0000
0.0001
T
1.718
0.0052
0.0006
0.0010
0.0000
0.0001
0.0000
0.0138
0.0004
0.9653
0.0000
T
1.719
0.0496
0.0001
0.0010
0.0612
0.0001
0.0004
0.0003
0.0000
0.0002
0.0000
T
1.720
0.0000
0.0131
0.0031
0.0000
0.8599
0.0000
0.0008
0.0000
0.0001
0.0005
T
1.81
0.0005
0.0001
0.0010
0.0000
0.0001
0.0001
0.2861
0.0554
0.0001
0.0000
T
1.82
0.0005
0.9285
0.0174
0.0000
0.0041
0.0001
0.0129
0.0000
0.0000
0.0001
T
1.83
0.0002
0.0002
0.0010
0.0986
0.0004
0.0000
0.0026
0.0000
0.0000
0.0003
T
1.84
0.0002
0.0001
0.0112
0.0000
0.0001
0.0004
0.0026
0.0639
0.0000
0.0000
T
1.85
0.0011
0.0007
0.0031
0.0000
0.6131
0.0000
0.0026
0.0001
0.0001
0.0001
T
1.86
0.0002
0.0001
0.0010
0.0000
0.0002
0.0000
0.0026
0.1451
0.0002
0.0004
T
1.87
0.0952
0.0001
0.0010
0.0001
0.0001
0.0000
0.0026
0.0562
0.0085
0.0460
T
1.88
0.0002
0.0001
0.0031
0.0339
0.0001
0.0000
0.0026
0.0087
0.0000
0.0001
T
1.89
0.0002
0.0001
0.0010
0.0464
0.0001
0.0000
0.0026
0.0000
0.0002
0.0000
T
1.810
0.6063
0.0001
0.8497
0.0000
0.0001
0.0458
0.0077
0.0000
0.0001
0.0002
T
1.811
0.0278
0.0156
0.0010
0.2805
0.0001
0.0157
0.0026
0.2023
0.0003
0.0817
T
1.812
0.0002
0.0004
0.0971
0.0000
0.1478
0.2277
0.0026
0.0000
0.0003
0.0007
T
1.813
0.0002
0.0002
0.0031
0.0000
0.0001
0.6628
0.0129
0.0001
0.0001
0.0001
T
1.814
0.0002
0.0016
0.0010
0.0796
0.1605
0.0000
0.0026
0.0000
0.0000
0.0000
T
1.815
0.0002
0.0001
0.0031
0.0000
0.0001
0.0000
0.0026
0.0014
0.0000
0.7292
T
1.816
0.0173
0.0064
0.0010
0.1521
0.0001
0.0008
0.0026
0.1006
0.0001
0.0001
T
1.817
0.0005
0.0001
0.0010
0.0425
0.0001
0.0000
0.0026
0.0000
0.0000
0.0000
T
1.818
0.0002
0.0004
0.0010
0.0000
0.0002
0.0000
0.6314
0.0000
0.9476
0.0001
T
1.819
0.0005
0.0001
0.0010
0.0000
0.0001
0.0001
0.0026
0.1590
0.0008
0.0001
T
1.820
0.2489
0.0450
0.0010
0.2661
0.0727
0.0463
0.0129
0.2070
0.0412
0.1405
(b)
Mylyn
COM1
COM2
COM3
COM4
COM5
COM6
COM7
COM8
COM9
COM10
COM11
T
3.51
0.0000
0.1260
0.1842
0.0002
0.0001
0.0184
0.0000
0.0000
0.0000
0.0004
0.0084
T
3.52
0.0000
0.4041
0.0000
0.0001
0.4103
0.0037
0.2260
0.0004
0.0000
0.0007
0.0054
T
3.53
0.0000
0.0000
0.0000
0.0001
0.0001
0.0037
0.0243
0.0000
0.0455
0.0001
0.0001
T
3.54
0.0382
0.0000
0.0006
0.0041
0.0014
0.0037
0.1581
0.0552
0.1297
0.0536
0.0010
T
3.55
0.0000
0.0000
0.0000
0.0001
0.0001
0.0110
0.3554
0.0001
0.2683
0.0174
0.0001
T
3.56
0.0000
0.0000
0.0000
0.0019
0.9565
0.0404
0.0000
0.0001
0.0147
0.0004
0.0001
T
3.57
0.0000
0.0000
0.2018
0.0001
0.0001
0.0037
0.0000
0.0001
0.0920
0.0001
0.0004
T
3.58
0.8988
0.0699
0.0000
0.0000
0.0012
0.0833
0.0001
0.0083
0.0000
0.0006
0.0006
T
3.59
0.0000
0.0000
0.0000
0.7450
0.0001
0.0037
0.0000
0.0000
0.0256
0.0001
0.2220
T
3.510
0.7547
0.0004
0.0000
0.0000
0.0003
0.1066
0.0000
0.0012
0.0000
0.0001
0.0001
T
3.511
0.0000
0.0000
0.0000
0.0001
0.0006
0.0037
0.0000
0.0000
0.1415
0.0007
0.0001
T
3.512
0.0540
0.0001
0.1892
0.2199
0.0315
0.3272
0.0000
0.1504
0.0072
0.0001
0.0001
T
3.513
0.0003
0.0098
0.0046
0.0000
0.0001
0.0699
0.0000
0.0029
0.0001
0.0040
0.6906
T
3.514
0.2011
0.1624
0.0000
0.0002
0.0001
0.0037
0.1614
0.0001
0.1086
0.0004
0.0007
T
3.515
0.0001
0.0000
0.0396
0.0274
0.0054
0.2978
0.0002
0.0006
0.1664
0.0001
0.0004
T
3.516
0.0000
0.0802
0.0000
0.0000
0.0003
0.0037
0.0745
0.0006
0.0001
0.0007
0.0018
T
3.517
0.0000
0.4433
0.0000
0.0002
0.0017
0.0037
0.0000
0.0001
0.0000
0.0001
0.0013
T
3.518
0.0000
0.2010
0.0000
0.0000
0.0001
0.0037
0.0000
0.0000
0.0000
0.0001
0.0013
T
3.519
0.1524
0.0864
0.0000
0.0002
0.0001
0.0037
0.0000
0.0041
0.0000
0.0010
0.0018
T
3.520
0.0001
0.0525
0.0000
0.0000
0.0001
0.0772
0.0000
0.7840
0.0000
0.9190
0.0644
T
3.61
0.8545
0.0759
0.0000
0.0025
0.0002
0.0833
0.0002
0.0082
0.0000
0.0002
0.0001
T
3.62
0.0000
0.0622
0.0000
0.0000
0.0001
0.0019
0.1003
0.0000
0.0646
0.0000
0.0001
T
3.63
0.0000
0.4181
0.0067
0.0001
0.4513
0.0038
0.0014
0.0000
0.0310
0.0003
0.0056
T
3.64
0.0000
0.3926
0.0000
0.0000
0.0001
0.0019
0.0000
0.0000
0.0000
0.0001
0.0001
T
3.65
0.0000
0.0000
0.0000
0.0000
0.0001
0.0019
0.0000
0.8163
0.0000
0.0628
0.0001
T
3.66
0.5414
0.0000
0.0000
0.0000
0.0001
0.0019
0.0000
0.0000
0.0000
0.0133
0.0003
T
3.67
0.0000
0.0000
0.2040
0.0000
0.0001
0.0057
0.0000
0.0000
0.0000
0.0000
0.0002
T
3.68
0.0478
0.0000
0.2299
0.2284
0.0001
0.6317
0.0000
0.1336
0.0000
0.0009
0.0005
T
3.69
0.0000
0.0000
0.0000
0.0000
0.0001
0.0057
0.0000
0.0498
0.0000
0.8700
0.7358
T
3.610
0.1473
0.0000
0.0000
0.0000
0.0001
0.0019
0.0000
0.0000
0.0000
0.0000
0.0001
T
3.611
0.0000
0.0000
0.0000
0.0001
0.0001
0.0057
0.1294
0.0000
0.1096
0.0000
0.0001
T
3.612
0.0000
0.0000
0.0000
0.7711
0.0001
0.0019
0.0000
0.0000
0.0000
0.0002
0.2529
T
3.613
0.0000
0.0000
0.0000
0.0001
0.0002
0.0019
0.4156
0.0000
0.3470
0.0127
0.0001
T
3.614
0.2633
0.1742
0.0000
0.0000
0.0001
0.0134
0.0000
0.0000
0.0000
0.0000
0.0001
T
3.615
0.0000
0.0000
0.0000
0.0000
0.0001
0.1019
0.0000
0.0000
0.2455
0.0391
0.0001
T
3.616
0.0000
0.0000
0.0000
0.0000
0.9983
0.0057
0.0000
0.0000
0.0000
0.0000
0.0003
T
3.617
0.0000
0.0000
0.2263
0.0000
0.0001
0.0019
0.0000
0.0000
0.1006
0.0000
0.0001
T
3.618
0.0000
0.2199
0.3397
0.0000
0.0001
0.0019
0.0000
0.0000
0.0000
0.0000
0.0095
T
3.619
0.0000
0.1404
0.1722
0.0000
0.0001
0.0019
0.0000
0.0000
0.0000
0.0000
0.0051
T
3.620
0.0000
0.0000
0.0000
0.0000
0.0006
0.3034
0.0000
0.0001
0.1327
0.0000
0.0001
T
3.71
0.0000
0.0000
0.0000
0.0022
0.5466
0.1364
0.0007
0.0002
0.0149
0.0002
0.0006
T
3.72
0.0272
0.0000
0.0000
0.0066
0.0003
0.0455
0.0676
0.0276
0.2456
0.0622
0.0001
T
3.73
0.1663
0.0001
0.0000
0.0001
0.0015
0.0455
0.0103
0.0089
0.0165
0.0038
0.0001
T
3.74
0.0000
0.0094
0.0000
0.0000
0.0006
0.0455
0.3143
0.0015
0.0004
0.0265
0.0001
T
3.75
0.0005
0.0000
0.0000
0.0099
0.0003
0.0455
0.4603
0.0000
0.3090
0.1623
0.0007
T
3.76
0.0016
0.0288
0.0000
0.0001
0.0002
0.0455
0.0000
0.0173
0.0008
0.6463
0.7956
T
3.77
0.0002
0.5077
0.0000
0.0001
0.0004
0.0455
0.0000
0.0002
0.0002
0.0009
0.0005
T
3.78
0.0000
0.0861
0.1353
0.0001
0.0001
0.0455
0.0000
0.0001
0.0004
0.0002
0.0005
T
3.79
0.0001
0.0000
0.1121
0.0025
0.0001
0.0455
0.0001
0.0002
0.0646
0.0002
0.0001
T
3.710
0.0456
0.0558
0.0001
0.0775
0.0966
0.0455
0.0434
0.0734
0.0437
0.0254
0.0348
T
3.711
0.0000
0.0000
0.0000
0.0000
0.0003
0.0455
0.0000
0.0000
0.1900
0.0002
0.0012
T
3.712
0.0000
0.1446
0.5328
0.0001
0.0001
0.0455
0.0000
0.0000
0.0001
0.0009
0.0016
T
3.713
0.6343
0.0015
0.0000
0.0006
0.0002
0.0455
0.0001
0.0003
0.0000
0.0005
0.0001
T
3.714
0.0000
0.0038
0.0000
0.0001
0.0004
0.0455
0.0000
0.7641
0.0025
0.0528
0.0215
T
3.715
0.0000
0.1618
0.0000
0.0001
0.0002
0.0455
0.0000
0.0003
0.0000
0.0002
0.0088
T
3.716
0.0003
0.0000
0.0002
0.0280
0.0004
0.0455
0.0718
0.0014
0.0915
0.0142
0.0003
T
3.717
0.0339
0.0001
0.1382
0.1756
0.3507
0.0455
0.0312
0.1032
0.0017
0.0013
0.0048
T
3.718
0.0000
0.0001
0.0000
0.6964
0.0012
0.0455
0.0001
0.0002
0.0178
0.0016
0.1281
T
3.719
0.0000
0.0001
0.0813
0.0000
0.0001
0.0455
0.0000
0.0009
0.0001
0.0002
0.0003
T
3.720
0.0899
0.0000
0.0000
0.0000
0.0002
0.0455
0.0000
0.0003
0.0000
0.0002
0.0003
(c)
Platform
COM1
COM2
COM3
COM4
COM5
COM6
COM7
COM8
COM9
COM10
COM11
T
3.21
0.0066
0.0000
0.0001
0.0009
0.0004
0.0001
0.0000
0.0000
0.0000
0.0505
0.0000
T
3.22
0.8505
0.0001
0.0031
0.0000
0.0029
0.0000
0.0000
0.0000
0.0000
0.0000
0.0001
T
3.23
0.0001
0.0002
0.0068
0.0036
0.0001
0.0000
0.0001
0.0004
0.0002
0.0000
0.8879
T
3.24
0.0001
0.0000
0.0026
0.0000
0.0024
0.0000
0.0702
0.0007
0.0000
0.0000
0.0000
T
3.25
0.0000
0.0000
0.0000
0.0001
0.0001
0.0170
0.0000
0.0000
0.0000
0.0000
0.0000
T
3.26
0.0001
0.0000
0.0105
0.0000
0.0006
0.0000
0.7790
0.0000
0.0000
0.0000
0.0000
T
3.27
0.0071
0.8968
0.0002
0.0000
0.0006
0.0000
0.0001
0.0000
0.0000
0.0001
0.0000
T
3.28
0.0495
0.0275
0.0210
0.0130
0.0110
0.0555
0.0379
0.0314
0.0426
0.0258
0.0185
T
3.29
0.0080
0.0089
0.0039
0.0020
0.8596
0.0004
0.0015
0.0088
0.0009
0.0006
0.0000
T
3.210
0.0000
0.0000
0.0013
0.0000
0.0004
0.7416
0.0000
0.0000
0.0004
0.0000
0.0000
T
3.211
0.0604
0.0578
0.0398
0.2502
0.0923
0.0051
0.0946
0.0652
0.0674
0.1016
0.0896
T
3.212
0.0007
0.0000
0.0012
0.0001
0.0004
0.0000
0.0001
0.0000
0.0005
0.7068
0.0006
T
3.213
0.0000
0.0000
0.0000
0.0000
0.0001
0.0354
0.0000
0.0000
0.0000
0.0000
0.0000
T
3.214
0.0060
0.0075
0.0011
0.0004
0.0006
0.0025
0.0141
0.0460
0.0198
0.1134
0.0031
T
3.215
0.0000
0.0000
0.0006
0.0000
0.0001
0.0548
0.0010
0.0024
0.0001
0.0001
0.0000
T
3.216
0.0100
0.0008
0.0006
0.0000
0.0015
0.0000
0.0001
0.8448
0.0000
0.0000
0.0000
T
3.217
0.0007
0.0000
0.0038
0.7266
0.0004
0.0000
0.0010
0.0001
0.0000
0.0009
0.0000
T
3.218
0.0001
0.0000
0.0000
0.0000
0.0001
0.0875
0.0000
0.0000
0.0000
0.0001
0.0000
T
3.219
0.0000
0.0002
0.0016
0.0000
0.0001
0.0000
0.0000
0.0000
0.8680
0.0001
0.0001
T
3.220
0.0000
0.0000
0.9018
0.0031
0.0265
0.0000
0.0002
0.0000
0.0000
0.0000
0.0000
T
3.31
0.0874
0.0292
0.0081
0.0006
0.0001
0.6105
0.0085
0.0192
0.0039
0.1907
0.0114
T
3.32
0.0000
0.0015
0.0001
0.0006
0.0002
0.0000
0.0000
0.0035
0.0910
0.3392
0.0000
T
3.33
0.0060
0.0030
0.0001
0.0000
0.0011
0.0000
0.0472
0.2239
0.0002
0.0013
0.0018
T
3.34
0.0000
0.0000
0.0000
0.0001
0.0001
0.0376
0.0000
0.0018
0.0000
0.0000
0.0000
T
3.35
0.0053
0.0006
0.0010
0.0001
0.0001
0.0000
0.0000
0.6919
0.0000
0.0000
0.0000
T
3.36
0.0000
0.0000
0.0006
0.0003
0.0001
0.0000
0.0000
0.0000
0.0002
0.3935
0.0002
T
3.37
0.0000
0.0063
0.0016
0.0008
0.0005
0.0566
0.0000
0.0018
0.0028
0.0021
0.0006
T
3.38
0.0000
0.0000
0.0000
0.0000
0.0002
0.0204
0.0000
0.0000
0.0000
0.0000
0.0000
T
3.39
0.0000
0.0000
0.0000
0.0000
0.0002
0.0223
0.0000
0.0000
0.0000
0.0000
0.0000
T
3.310
0.8271
0.0003
0.0063
0.0001
0.0001
0.0000
0.0000
0.0000
0.0001
0.0000
0.0000
T
3.311
0.0000
0.0000
0.0037
0.0029
0.0005
0.0000
0.0001
0.0003
0.0004
0.0002
0.9322
T
3.312
0.0039
0.0043
0.0012
0.0126
0.9493
0.0010
0.0124
0.0008
0.0000
0.0055
0.0020
T
3.313
0.0000
0.0000
0.0005
0.0000
0.0001
0.4372
0.0000
0.0001
0.0001
0.0000
0.0000
T
3.314
0.0001
0.0001
0.0173
0.0000
0.0005
0.0000
0.8048
0.0000
0.0000
0.0000
0.0000
T
3.315
0.0033
0.0002
0.0060
0.9403
0.0018
0.0000
0.0031
0.0007
0.0006
0.0025
0.0004
T
3.316
0.0586
0.0504
0.0461
0.0375
0.0386
0.0221
0.1089
0.0558
0.1049
0.0648
0.0506
T
3.317
0.0082
0.9040
0.0008
0.0000
0.0001
0.0000
0.0002
0.0000
0.0000
0.0000
0.0000
T
3.318
0.0000
0.0000
0.0013
0.0000
0.0001
0.0000
0.0000
0.0000
0.7958
0.0000
0.0000
T
3.319
0.0000
0.0000
0.0000
0.0000
0.0002
0.4020
0.0000
0.0000
0.0000
0.0000
0.0000
T
3.320
0.0000
0.0000
0.9054
0.0041
0.0064
0.0001
0.0147
0.0000
0.0001
0.0000
0.0006
T
3.41
0.0000
0.0000
0.0000
0.0000
0.0000
0.0335
0.0000
0.0000
0.0000
0.0000
0.0000
T
3.42
0.0012
0.0038
0.0016
0.0000
0.0000
0.0478
0.0034
0.0106
0.0075
0.0568
0.0016
T
3.43
0.0001
0.0001
0.0000
0.0000
0.0001
0.0000
0.0004
0.0003
0.0046
0.3092
0.0001
T
3.44
0.0000
0.0000
0.9007
0.0042
0.0133
0.0000
0.0174
0.0000
0.0001
0.0000
0.0001
T
3.45
0.0059
0.8147
0.0008
0.0000
0.0001
0.0000
0.0000
0.0001
0.0000
0.0000
0.0000
T
3.46
0.0000
0.0000
0.0109
0.0000
0.0000
0.0000
0.6702
0.0000
0.0000
0.0000
0.0002
T
3.47
0.0000
0.0000
0.0000
0.0000
0.0000
0.1535
0.0000
0.0000
0.0000
0.0000
0.0000
T
3.48
0.0100
0.0047
0.0185
0.0118
0.0167
0.0193
0.0106
0.0088
0.0722
0.0055
0.0083
T
3.49
0.0040
0.0007
0.0078
0.9352
0.0067
0.0000
0.0051
0.0031
0.0001
0.0021
0.0002
T
3.410
0.1842
0.1722
0.0489
0.0334
0.1251
0.0039
0.2839
0.1940
0.1764
0.2234
0.1249
T
3.411
0.0000
0.0000
0.0000
0.0000
0.0000
0.0283
0.0000
0.0000
0.0000
0.0000
0.0000
T
3.412
0.0000
0.0000
0.0005
0.0000
0.0000
0.6663
0.0000
0.0002
0.0000
0.0000
0.0000
T
3.413
0.0000
0.0000
0.0013
0.0000
0.0000
0.0000
0.0000
0.0000
0.7375
0.0000
0.0001
T
3.414
0.7864
0.0013
0.0010
0.0000
0.0000
0.0000
0.0000
0.0000
0.0001
0.0000
0.0000
T
3.415
0.0000
0.0001
0.0054
0.0024
0.0165
0.0000
0.0000
0.0003
0.0000
0.0001
0.8642
T
3.416
0.0002
0.0000
0.0000
0.0000
0.0002
0.0000
0.0000
0.0000
0.0002
0.4023
0.0000
T
3.417
0.0044
0.0019
0.0010
0.0012
0.0001
0.0007
0.0086
0.0753
0.0008
0.0003
0.0001
T
3.418
0.0034
0.0003
0.0000
0.0000
0.0002
0.0000
0.0001
0.7072
0.0000
0.0000
0.0000
T
3.419
0.0001
0.0000
0.0015
0.0117
0.8208
0.0001
0.0001
0.0001
0.0005
0.0002
0.0001
T
3.420
0.0000
0.0000
0.0001
0.0000
0.0000
0.0466
0.0000
0.0000
0.0000
0.0000
0.0000We use (6) to calculate the TFD for each topic on the three projects (Platform, Ant, and Mylyn). In order to better describe the relation between TFD and versions, we use a box plot. TFD of these three projects is shown in Figure 4.Figure 4
Box plots of TFD of three projects.From Table1 and Figure 4, it is seen that the fewer the number of failures, the smaller the box length. For example, the length of the box plot corresponding TFD in Ant1.8 is almost 0; the number of failures in Ant1.8 is only 5 (Table 1); the number of failures in Ant1.7 is 104; the length of the box plot is much longer. According to (6), TFD is determined by the topic distribution matrix and the FD of the component. If the FD and the topic distribution matrix change, the value of the TFD will also change. However, in our research, we find that the number of files and topic mixture θ is constant in a version of a project. We conclude that the distribution of the TFDs in the same project is related to the number of failures. On the other hand, the distribution of TFD reflects the failure distribution in each version of a project.In the above work, it is shown that using the similarity of high probability words describes the connection between topics in two neighboring versions (see Table3). Furthermore, the TFD has a connection with failures of components (see Figure 4). Next we use TFD and the relation of topics to make a prediction for the failures of components.Figure5 shows the prediction results of the failures in each component and the actual number of failures in each component of three projects.Figure 5
Failures (prediction) versus actual failures.
(a)
Mylyn
(b)
Ant
(c)
PlatformFrom Figure5, it is seen that the number of failures from our predictor (we call it the prediction data) has some relation with the numbers of failures collected from Bugzilla (we call it the actual data). When the actual data of each component is larger, our prediction data is usually larger, for example, the numbers of failures of component SWT and component Debug in Figure 5(c).What is the significance of our prediction? As in [9], we sort components by the number of failures. We find that ranking of many predicted components is consistent with the order of the real components ranking (Figure 6). We compare the first three and last three components with the actual ranking, and the average correct rate is 77.8%. In other words, our proposed prediction method quickly finds which components have the most failures and which have the least in the next version. It gives an idea about the testing priorities and allows software organizations to better focus on testing activities and improve cost estimation.Figure 6
Comparing predicted and actual rankings.


## 5. Validity

### 5.1. Validation and Comparison

To evaluate the correlation between our prediction data and the actual data, we use the Spearman correlation coefficient [44], which is a measure of the two-variable dependence on each other [45]. If there are no duplicate values in the data and when the two variables have a completely monotonic correlation, the Spearman coefficient is +1 or -1. +1 represents a complete positive correlation, -1 represents a perfect negative correlation, and 0 means no relationship between two variables. Correlation ρ is as follows:(9)ρ=∑ixi-x-yi-y-∑ixi-x-2∑iyi-y-2.In this paper,xi is the actual data, and yi is the prediction data. The better our predictor would be, the stronger the correlations would be; a correlation of 1.0 means that the sensitivity of the predictor is high. The results of Spearman correlation coefficients are shown in Figure 7.Figure 7
Performance comparison between our approach and Graves et al.’s approach.From Figure7, we find out the predicted failures are positively correlated with actual value with our approach. For instance, in project Mylyn3.7, the higher the number of failures in a component, the larger the number of postrelease failures (correlation 0.6838). To conduct the comparison, we implemented the lightweight method provided by Graves et al. [8]. The number of changes to the code in the past and a weighted average of the dates of the changes to the component are used to predict failures in Graves et al. work. As they described, we collected change management data deltas and average age of components for three projects from Github. The general linear model was used to build the prediction model. Equation (10) shows their most successful prediction model for the log of the expected number of faults:(10)exp⁡1.02log⁡deltas1000-0.44age,where deltas describe the number of changes to the code in the past and age is calculated by taking a weighted average of the dates of the changes to the module and it means the average age of the code.In the evaluation, we use Graves’s model to obtain component failures and get the Spearman correlation with the actual failure data (Figure7). It is seen that our approach gets a higher correlation with actual failures.


### 5.2. Threats to Validity

Threats to validity of the study are as follows.Data Extracting. In Bugzilla, each failure is assigned by a tester to a component. Failures in a component are easy to collect. However, it is difficult to extract source code for each component. When we get source code from the version management systems, we should classify the source code by ourselves. It may bring some unnecessary mistakes. For example, a file that belonged to component 1 in version j may be moved into component 2 in version j+1.Parameter Values. Our evaluation of the components similarity is based on the topics. Since LDA is a probability model, mining different versions of the source code may also lead to different topics. Besides, our work involves choosing several parameters for LDA computation; perhaps, the most important is the number of topics. Also required for LDA is the number of sampling iterations, as well as prior distributions for the topic and document smoothing parameters, α and β. There is currently no theoretically guaranteed method for choosing optimal values for these parameters, even though the resulting topics are obviously affected by these choices.


## 5.1. Validation and Comparison

To evaluate the correlation between our prediction data and the actual data, we use the Spearman correlation coefficient [44], which is a measure of the two-variable dependence on each other [45]. If there are no duplicate values in the data and when the two variables have a completely monotonic correlation, the Spearman coefficient is +1 or -1. +1 represents a complete positive correlation, -1 represents a perfect negative correlation, and 0 means no relationship between two variables. Correlation ρ is as follows:(9)ρ=∑ixi-x-yi-y-∑ixi-x-2∑iyi-y-2.In this paper,xi is the actual data, and yi is the prediction data. The better our predictor would be, the stronger the correlations would be; a correlation of 1.0 means that the sensitivity of the predictor is high. The results of Spearman correlation coefficients are shown in Figure 7.Figure 7
Performance comparison between our approach and Graves et al.’s approach.From Figure7, we find out the predicted failures are positively correlated with actual value with our approach. For instance, in project Mylyn3.7, the higher the number of failures in a component, the larger the number of postrelease failures (correlation 0.6838). To conduct the comparison, we implemented the lightweight method provided by Graves et al. [8]. The number of changes to the code in the past and a weighted average of the dates of the changes to the component are used to predict failures in Graves et al. work. As they described, we collected change management data deltas and average age of components for three projects from Github. The general linear model was used to build the prediction model. Equation (10) shows their most successful prediction model for the log of the expected number of faults:(10)exp⁡1.02log⁡deltas1000-0.44age,where deltas describe the number of changes to the code in the past and age is calculated by taking a weighted average of the dates of the changes to the module and it means the average age of the code.In the evaluation, we use Graves’s model to obtain component failures and get the Spearman correlation with the actual failure data (Figure7). It is seen that our approach gets a higher correlation with actual failures.


## 5.2. Threats to Validity

Threats to validity of the study are as follows.Data Extracting. In Bugzilla, each failure is assigned by a tester to a component. Failures in a component are easy to collect. However, it is difficult to extract source code for each component. When we get source code from the version management systems, we should classify the source code by ourselves. It may bring some unnecessary mistakes. For example, a file that belonged to component 1 in version j may be moved into component 2 in version j+1.Parameter Values. Our evaluation of the components similarity is based on the topics. Since LDA is a probability model, mining different versions of the source code may also lead to different topics. Besides, our work involves choosing several parameters for LDA computation; perhaps, the most important is the number of topics. Also required for LDA is the number of sampling iterations, as well as prior distributions for the topic and document smoothing parameters, α and β. There is currently no theoretically guaranteed method for choosing optimal values for these parameters, even though the resulting topics are obviously affected by these choices.


## 6. Conclusion

This paper studies whether and how to use historical semantic and failure information to facilitate component failure prediction. In our work, the LDA topic model is used for software source code topic mining. We map information of source code failures to topics and get TFD. Our result is that the TFD is quite useful in describing the distribution of failures in components. After exploring the base information of word-topic and high frequent words, we find the similar regularity from topics. The experiment shows that the similarity of topics is determined by the similarity of their high frequent words. These two results motivated us to make a prediction model. The TFD is used as the basic information, and the similarity matrix is used as a bridge to connect topics from neighboring versions. Our prediction results show that our predictor has a high precision on predicting component failures. To go a step further and validate the results of our prediction, a rank correlation called Spearman is used. The Spearman correlation ranges from 0.5342 to 0.8337 which beats the similar method. It suggests that our prediction model is well applicable to predict component failures.



---

*Source: 562716-2015-07-29.xml*