MODULO IV RELACIÓN ENTRE DOS VARIABLES, COMO POR EJEMPLO LA RELACIÓN ENTRE LA EDAD DE UN PACIENTE Y SU PRESIÓN ARTERIAL SISTÓLICA

                                                                 DIPLOMA DO

                                       EN INTELIGENCIA ARTIFICIAL

                                                               MODULO IV  

              APRENDIZAJE AUTOMATICO CON PYTHON Y ASISTENTES INTELIGENTES

Ortega Irusta Mireya Elena

Interaccion con chat GPT

 https://chat.openai.com/share/d5991483-c0c9-4405-86bf-dac9fac84bc6

RELACIÓN ENTRE DOS VARIABLES, COMO POR EJEMPLO LA RELACIÓN ENTRE LA EDAD DE UN PACIENTE Y SU PRESIÓN ARTERIAL SISTÓLICA



La regresión lineal simple se utiliza en medicina para analizar la relación entre dos variables, como por ejemplo la relación entre la edad de un paciente y su presión arterial sistólica. Aquí tienes un ejemplo básico de cómo se podría aplicar la regresión lineal simple a datos médicos:

Supongamos que tenemos un conjunto de datos con la edad de varios pacientes y sus niveles de presión arterial sistólica. Queremos determinar si hay una relación entre estas dos variables y predecir la presión arterial sistólica en función de la edad.

 

Primero, recolectamos datos de 20 pacientes:

PacienteEdad (años)Presión arterial sistólica (mmHg)
135130
242138
350145
428120
565155
.........

Usando una herramienta estadística como Python con la librería scikit-learn, podríamos calcular la regresión lineal simple:

Ejecutado este código tenemos los siguientes resultados.

Python

import numpy as np
from sklearn.linear_model import LinearRegression

# Datos de edad
edad = np.array([35, 42, 50, 28, 65])[:, np.newaxis]

# Datos de presión arterial sistólica
presion_arterial = np.array([130, 138, 145, 120, 155])

# Crear el modelo de regresión lineal
modelo = LinearRegression()

# Entrenar el modelo con los datos
modelo.fit(edad, presion_arterial)

# Obtener la pendiente (coeficiente)
pendiente = modelo.coef_[0]
print(f"Pendiente: {pendiente}")

# Obtener el intercepto
intercepto = modelo.intercept_
print(f"Intercepto: {intercepto}")

# Predicción para un paciente de 40 años
nueva_edad = np.array([40])[:, np.newaxis]
prediccion = modelo.predict(nueva_edad)
print(f"Predicción de presión arterial a los 40 años: {prediccion[0]} mmHg")

Interacción con Google colab:

Pendiente: 0.9278728606356969 Intercepto: 96.77359413202933 Predicción de presión arterial a los 40 años: 133.88850855745721 mmHg

Python

import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# Datos simulados
np.random.seed(42)
edad = np.random.randint(20, 70, 100)  # Edades de los pacientes
presion_arterial = np.random.randint(100, 160, 100)  # Niveles de presión arterial

# Generar una variable de enfermedad cardíaca simulada (0 o 1)
enfermedad_cardiaca = np.random.randint(0, 2, 100)

# Crear un DataFrame de pandas con los datos
datos = {
    'Edad': edad,
    'Presion_arterial': presion_arterial,
    'Enfermedad_cardiaca': enfermedad_cardiaca
}
df = pd.DataFrame(datos)

# Separar las características (X) y la variable objetivo (y)
X = df[['Edad', 'Presion_arterial']]
y = df['Enfermedad_cardiaca']

# Dividir el conjunto de datos en entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Crear el modelo de regresión logística
modelo_logistico = LogisticRegression()

# Entrenar el modelo con los datos de entrenamiento
modelo_logistico.fit(X_train, y_train)

# Realizar predicciones en el conjunto de prueba
predicciones = modelo_logistico.predict(X_test)

# Calcular la precisión del modelo
precision = accuracy_score(y_test, predicciones)
print(f"Precisión del modelo: {precision}")

Interacción con Google colab:

Precisión del modelo: 0.5

import numpy as np
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt

# Datos simulados
np.random.seed(42)
edad = np.random.randint(20, 70, 100)[:, np.newaxis]  # Edades de los pacientes
presion_arterial = 120 + 0.4 * edad + np.random.normal(0, 5, (100, 1))  # Generando presión arterial con una relación lineal

# Crear el modelo de regresión lineal
modelo = LinearRegression()

# Entrenar el modelo con los datos
modelo.fit(edad, presion_arterial)

# Hacer predicciones con el modelo entrenado
predicciones = modelo.predict(edad)

# Graficar los datos y la línea de regresión
plt.scatter(edad, presion_arterial, label='Datos reales')
plt.plot(edad, predicciones, color='red', label='Regresión lineal')
plt.xlabel('Edad')
plt.ylabel('Presión arterial sistólica')
plt.legend()
plt.title('Regresión lineal: Edad vs. Presión arterial sistólica')
plt.show()

Interacción con Google colab:


import numpy as np
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt

# Datos simulados
np.random.seed(42)
X = np.random.rand(100, 1) * 10  # Variable independiente
y = 2 * X + 1 + np.random.randn(100, 1) * 2  # Variable dependiente con relación lineal y ruido

# Crear el modelo de regresión lineal
modelo = LinearRegression()

# Entrenar el modelo con los datos
modelo.fit(X, y)

# Hacer predicciones con el modelo entrenado
predicciones = modelo.predict(X)

# Graficar los datos y la línea de regresión
plt.scatter(X, y, label='Datos reales')
plt.plot(X, predicciones, color='red', label='Regresión lineal')
plt.xlabel('Variable independiente')
plt.ylabel('Variable dependiente')
plt.legend()
plt.title('Regresión lineal simple')
plt.show()

Interacción con Google colab:



En este ejemplo, se crea un modelo de regresión lineal usando la edad como variable independiente y la presión arterial sistólica como variable dependiente. Después de entrenar el modelo, se puede predecir la presión arterial sistólica para un paciente de 40 años. La predicción se realiza utilizando el modelo entrenado y devuelve un valor estimado de presión arterial sistólica para esa edad.

 

Recuerda que este es un ejemplo básico y en un entorno real se necesitarían más datos y consideraciones para realizar un análisis más exhaustivo en medicina.

Python

import numpy as np
import matplotlib.pyplot as plt
from sklearn.tree import DecisionTreeRegressor

# Datos simulados
np.random.seed(42)
X = np.sort(5 * np.random.rand(80, 1), axis=0)
y = np.sin(X).ravel() + np.random.randn(80) * 0.1  # Relación no lineal con ruido

# Crear el modelo de árbol de decisiones para regresión
modelo_arbol = DecisionTreeRegressor(max_depth=5)

# Entrenar el modelo con los datos
modelo_arbol.fit(X, y)

# Hacer predicciones con el modelo entrenado
X_test = np.arange(0.0, 5.0, 0.01)[:, np.newaxis]
predicciones = modelo_arbol.predict(X_test)

# Graficar los datos y las predicciones del modelo
plt.scatter(X, y, label='Datos reales')
plt.plot(X_test, predicciones, color='red', label='Árbol de decisiones')
plt.xlabel('Variable independiente')
plt.ylabel('Variable dependiente')
plt.legend()
plt.title('Árbol de decisiones para regresión')
plt.show()

Interacción con Google colab:


 


Python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_classification
from sklearn.tree import DecisionTreeClassifier, export_text

# Crear un conjunto de datos ficticio para clasificación binaria
X, y = make_classification(n_samples=100, n_features=2, n_classes=2, n_redundant=0, random_state=42)

# Crear y entrenar el modelo de árbol de decisiones
modelo_arbol = DecisionTreeClassifier(random_state=42)
modelo_arbol.fit(X, y)

# Visualizar el árbol de decisiones
tree_rules = export_text(modelo_arbol, feature_names=[f'Feature {i}' for i in range(X.shape[1])])
print("Reglas del árbol de decisiones:\n", tree_rules)

# Graficar la superficie de decisión del árbol de decisiones
plt.figure(figsize=(8, 6))
plt.scatter(X[:, 0], X[:, 1], c=y, cmap='viridis', s=50, edgecolor='k')
xx, yy = np.meshgrid(np.linspace(X[:, 0].min(), X[:, 0].max(), 100),
                     np.linspace(X[:, 1].min(), X[:, 1].max(), 100))
Z = modelo_arbol.predict(np.c_[xx.ravel(), yy.ravel()]).reshape(xx.shape)
plt.contourf(xx, yy, Z, alpha=0.3, cmap='viridis')
plt.title('Árbol de Decisiones: Superficie de Decisión')
plt.xlabel('Feature 0')
plt.ylabel('Feature 1')
Interacción con Google colab:

Reglas del árbol de decisiones: |--- Feature 0 <= 0.20 | |--- Feature 0 <= -0.30 | | |--- class: 0 | |--- Feature 0 > -0.30 | | |--- Feature 1 <= -0.01 | | | |--- class: 1 | | |--- Feature 1 > -0.01 | | | |--- class: 0 |--- Feature 0 > 0.20 | |--- Feature 1 <= 2.35 | | |--- class: 1 | |--- Feature 1 > 2.35 | | |--- class: 0

Conclusiones y reflexiones Es de gran importancia poder conocer estas herramientas de regresion lineal en relación entre dos variables, como por ejemplo la relación entre la edad de un paciente y su presión arterial sistólica  desarrollo de un modelo  para mejorar nuestra práctica docente empleado es las nuevas herramietas.
La relación entre dos variables, como la edad de un paciente y su presión arterial sistólica, es fundamental en la comprensión de la salud y el diagnóstico médico.

La relación entre la edad y la presión arterial sistólica es una parte integral de la evaluación médica. Comprender esta relación puede ayudar en la identificación temprana de problemas de salud, adaptar tratamientos y estrategias preventivas, y proporcionar una mejor atención médica general. 

Comentarios

Entradas populares de este blog

MODULO IV DATASET SOBRE EL RENDIMIENTO DE ESTUDIANTES EN UN EXAMEN

MODULO IV APLICACIÓN PRÁCTICA: REGRESIÓN LOGÍSTICA (APRENDIZAJE SUPERVISADO) EJEMPLO DE REGRESIÓN LOGÍSTICA PARA PREDECIR EL ESTADO DE SALUD BASADO EN EL ÍNDICE DE MASA CORPORAL (IMC).

MODULO IV CLASIFICACIÓN DE CARIES DENTAL SEGÚN LA METODOLOGÍA DE BLACK.