private void GetAttributeInformation() { TextBoxName.Text = ListBoxAttributes.SelectedValue.ToString(); if (dataSetDataFile != null) { DataFileAttribute attribute = dataSetDataFile.Attributes.Find(DataFileAttribute => DataFileAttribute.Name == TextBoxName.Text); ComboBoxDataType.SelectedIndex = (int)attribute.GetDataTypeIndex(); TextBoxDomain.Text = attribute.Domain.ToString(); } }
private void GetAttributeCorrelation() { // Limpiar las "Series" existentes en la gráfica. ChartAttributes.Series.Clear(); // Limpiar los titulos existentes en la gráfica. ChartAttributes.Titles.Clear(); // Limpiar las "Labels" LabelAttributeNumberOneTypeValue.Text = "N/A"; LabelAttributeNumberTwoTypeValue.Text = "N/A"; LabelPearsonCorrelationCoefficientValue.Text = "N/A"; LabelTschuprowsCoefficientValue.Text = "N/A"; LabelChiSquaredValue.Text = "N/A"; // Verificar si el conjunto de datos tiene datos. if (dataSet.Rows.Count == 0) { // El conjunto de datos no tiene datos. // Desplegar un mensaje de error. MessageBox.Show("El conjunto de datos se encuentra vacío.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } // Verificar el tipo de archivo con el que se esta trabajando. if (dataSetDataFile == null) { // Archivo CSV. // Los dos atributos con los que se realizará el analisis. DataFileAttribute attributeNumberOne = new DataFileAttribute(ComboBoxAttributeNumberOne.SelectedItem.ToString(), (int)DataFileAttribute.AttributeDataType.Nominal, ""); DataFileAttribute attributeNumberTwo = new DataFileAttribute(ComboBoxAttributeNumberTwo.SelectedItem.ToString(), (int)DataFileAttribute.AttributeDataType.Nominal, ""); // Actualizar "Labels" del tipo de los atributos. LabelAttributeNumberOneTypeValue.Text = "Categórico"; LabelAttributeNumberTwoTypeValue.Text = "Categórico"; // Realizar la prueba Chi-Cuadrada con los dos atributos. double chiSquared = GetChiSquared(attributeNumberOne, attributeNumberTwo); // Verificar si Chi-Cuadrada no es inválida. if (chiSquared != invalidChiSquaredTest) { // Chi-Cuadrada es válida. // Asignar a la "Label" el valor de Chi-Cuadrada. LabelChiSquaredValue.Text = chiSquared.ToString(); // Calcular y asignar a la "Label" el coeficiente de contingencia de Tschuprow. LabelTschuprowsCoefficientValue.Text = GetTschuprowsCoefficient(chiSquared, attributeNumberOne, attributeNumberTwo).ToString(); // Generar gráfica de columnas apiladas de los atributos. GenerateStackedColumnChart(attributeNumberOne, attributeNumberTwo); } else { // Chi-Cuadrada es inválida. // Abortar cálculo. return; } } else { // Archivo DATA. // Los dos atributos con los que se realizará el analisis. DataFileAttribute attributeNumberOne = dataSetDataFile.Attributes[ComboBoxAttributeNumberOne.SelectedIndex]; DataFileAttribute attributeNumberTwo = dataSetDataFile.Attributes[ComboBoxAttributeNumberTwo.SelectedIndex]; // Verificar el tipo del atributo número 1. if (attributeNumberOne.GetDataTypeIndex() == DataFileAttribute.AttributeDataType.Numeric) { // Atributo numérico. // Actualizar "Label" del tipo del atributo número 1. LabelAttributeNumberOneTypeValue.Text = "Numérico"; // Verificar si el tipo del atributo número 2 es el mismo. if (attributeNumberOne.DataType == attributeNumberTwo.DataType) { // Ambos atributos son numéricos (Numérico vs Numérico). // Actualizar "Label" del tipo del atributo número 2. LabelAttributeNumberTwoTypeValue.Text = "Numérico"; // Calcular el coeficiente de correlación de Pearson con los dos atributos. double pearsonCorrelationCoefficient = GetPearsonCorrelationCoefficient(attributeNumberOne, attributeNumberTwo); // Verificar si el coeficiente no es inválido. if (pearsonCorrelationCoefficient != invalidPearsonCorrelationCoefficient) { // El coeficiente es válido. // Asignar a la "Label" el valor del coeficiente. LabelPearsonCorrelationCoefficientValue.Text = pearsonCorrelationCoefficient.ToString(); // Generar gráfica de dispersión de los atributos. GenerateScatterPlot(attributeNumberOne, attributeNumberTwo); } else { // El coeficiente es inválido. // Abortar cálculo. return; } } else { // Los atributos son de diferente tipo (Numérico vs Categórico). // Actualizar "Label" del tipo del atributo número 2. LabelAttributeNumberTwoTypeValue.Text = "Categórico"; // Desplegar un mensaje de error. MessageBox.Show("Los atributos son de diferentes tipos (Numérico vs Categórico).", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { // Atributo categórico. // Actualizar "Label" del tipo del atributo número 1. LabelAttributeNumberOneTypeValue.Text = "Categórico"; // Verificar si el tipo del atributo número 2 no es numérico. if (attributeNumberTwo.GetDataTypeIndex() != DataFileAttribute.AttributeDataType.Numeric) { // Ambos atributos son categóricos (Categórico vs Categórico). // Actualizar "Label" del tipo del atributo número 2. LabelAttributeNumberTwoTypeValue.Text = "Categórico"; // Realizar la prueba Chi-Cuadrada con los dos atributos. double chiSquared = GetChiSquared(attributeNumberOne, attributeNumberTwo); // Verificar si Chi-Cuadrada no es inválida. if (chiSquared != invalidChiSquaredTest) { // Chi-Cuadrada es válida. // Asignar a la "Label" el valor de Chi-Cuadrada. LabelChiSquaredValue.Text = chiSquared.ToString(); // Variable en la que se almacenará el coeficiente de contingencia Tschuprow. double tschuprowsCoefficient = GetTschuprowsCoefficient(chiSquared, attributeNumberOne, attributeNumberTwo); // Verficiar si el coeficiente de Tschuprow es válido. if (!double.IsNaN(tschuprowsCoefficient)) { // El coeficiente de Tschuprows es válido. // Calcular y asignar a la "Label" el coeficiente de contingencia de Tschuprow. LabelTschuprowsCoefficientValue.Text = GetTschuprowsCoefficient(chiSquared, attributeNumberOne, attributeNumberTwo).ToString(); // Generar gráfica de columnas apiladas de los atributos. GenerateStackedColumnChart(attributeNumberOne, attributeNumberTwo); } } else { // Chi-Cuadrada es inválida. // Abortar cálculo. return; } } else { // Los atributos son de diferente tipo (Categórico vs Numérico). // Actualizar "Label" del tipo del atributo número 2. LabelAttributeNumberTwoTypeValue.Text = "Numérico"; // Desplegar un mensaje de error. MessageBox.Show("Los atributos son de diferentes tipos (Categórico vs Numérico).", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }