Ejemplo n.º 1
0
        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();
            }
        }
Ejemplo n.º 2
0
        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);
                    }
                }
            }
        }