{"id":777,"date":"2026-07-30T12:21:43","date_gmt":"2026-07-30T12:21:43","guid":{"rendered":"https:\/\/matforge.org\/?p=777","raw":"https:\/\/matforge.org\/?p=777"},"modified":"2026-07-30T12:21:43","modified_gmt":"2026-07-30T12:21:43","slug":"polynomial-chaos-expansions-surrogate-methods","status":"publish","type":"post","link":"https:\/\/matforge.org\/es\/polynomial-chaos-expansions-surrogate-methods\/","title":{"rendered":"Expansiones de caos polin\u00f3micos: sustitutos r\u00e1pidos para la propagaci\u00f3n de la incertidumbre","raw":"Expansiones de caos polin\u00f3micos: sustitutos r\u00e1pidos para la propagaci\u00f3n de la incertidumbre"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\"> 13<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span><p>La expansi\u00f3n del caos polinomial es una t\u00e9cnica de modelado sustituto que reemplaza una costosa simulaci\u00f3n con una serie de polinomios ortogonales cuyos coeficientes se pueden usar para estimar la incertidumbre directamente. Una vez instalado, un sustituto de PCE le brinda acceso anal\u00edtico a los medios de salida, las varianzas, los intervalos de confianza y los \u00edndices de sensibilidad de SOBOL sin ejecutar una sola simulaci\u00f3n adicional.<\/p>\n<p>Este art\u00edculo cubre el PCE desde la base te\u00f3rica hasta la implementaci\u00f3n pr\u00e1ctica. Ver\u00e1 exactamente c\u00f3mo se seleccionan las bases polinomiales, c\u00f3mo se estiman los coeficientes por regresi\u00f3n, cuadratura o proyecci\u00f3n, c\u00f3mo las t\u00e9cnicas dispersas extienden PCE a dimensiones moderadas y qu\u00e9 modos de falla rompen el PCE est\u00e1ndar. Los ejemplos de Python incluidos utilizan Chaospy, UQPY y Scikit-Learn para mostrar flujos de trabajo completos y validados.<\/p>\n<h2>Comida clave<\/h2>\n<ul>\n<li><strong>PCE reemplaza el muestreo aleatorio con una aproximaci\u00f3n determinista<\/strong>: en lugar de dibujar miles de muestras de Monte Carlo, PCE ajusta un polinomio a la respuesta del modelo. Los coeficientes polin\u00f3micos proporcionan entonces momentos anal\u00edticos e \u00edndices de sensibilidad.<\/li>\n<li><strong>La base polinomial debe coincidir con la distribuci\u00f3n de entrada<\/strong>: Legendre for Uniform, Hermite for Gaussian, Laguerre para exponencial. Una base no coincidente destruye la ortogonalidad e invalida todas las estimaciones de coeficientes.<\/li>\n<li><strong>PCE no intrusivo es la opci\u00f3n predeterminada para la mayor\u00eda de los flujos de trabajo<\/strong>: mantiene su simulador como una caja negra, lo eval\u00faa en los puntos de entrenamiento y estima los coeficientes a trav\u00e9s de la regresi\u00f3n. Esto evita modificar las ecuaciones del solucionador.<\/li>\n<li><strong>Escasos m\u00e9todos de PCE manejan ~50 par\u00e1metros<\/strong>: el truncamiento hiperb\u00f3lico, las rejillas de lazo y smolyak reducen dr\u00e1sticamente el tama\u00f1o de la base polinomial. Funcionan cuando la respuesta del modelo tiene interacciones dominantes de orden bajo, pero se debe verificar la suposici\u00f3n de escasez.<\/li>\n<li><strong>PCE no es universal<\/strong>: las respuestas discontinuas, los eventos de umbral, los cambios de contacto y las fallas del solucionador producen oscilaciones no f\u00edsicas (el fen\u00f3meno de Gibbs). Cuando la respuesta sea discontinua, use PCE multielemento, caos polinomial racional o un sustituto h\u00edbrido.<\/li>\n<\/ul>\n<h2>C\u00f3mo funciona la expansi\u00f3n del caos polin\u00f3mico<\/h2>\n<p>La expansi\u00f3n del caos polinomial representa una salida del modelo como una suma ponderada de polinomios ortogonales. Considere una salida escalar y que depende de un vector de entrada x:<\/p>\n<pre><code>Y = M(X)\n<\/code><\/pre>\n<p>La aproximaci\u00f3n PCE reemplaza m(x) con un polinomio:<\/p>\n<pre><code>Y(X) \u2248 \u03a3 c\u2096 \u03a8\u2096(X)\n<\/code><\/pre>\n<p>Aqu\u00ed, \u03c8\u2096 son polinomios ortogonales multivariados y C\u2096 son coeficientes deterministas. El conjunto de polinomios debe ser ortogonal con respecto a la distribuci\u00f3n de probabilidad de entrada, y los coeficientes se determinan por el m\u00e9todo de estimaci\u00f3n elegido.<\/p>\n<h3>Polinomios ortogonales y coincidencia de distribuci\u00f3n<\/h3>\n<p>La familia polinomial est\u00e1 vinculada directamente a la distribuci\u00f3n de entrada. Esta no es una elecci\u00f3n de dise\u00f1o, es un requisito matem\u00e1tico para la ortogonalidad.<\/p>\n<table>\n<thead>\n<tr>\n<th>Distribuci\u00f3n<\/th>\n<th>Polinomio ortogonal<\/th>\n<th>Normalizaci\u00f3n<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>uniforme [-1, 1]<\/td>\n<td>leyenda<\/td>\n<td>P\u2099(\u03be) = (1\/N!)\u00b7D\u207f\/D\u03be\u207f[(\u03be\u00b2-1)\u207f]<\/td>\n<\/tr>\n<tr>\n<td>Normal Normal N(0,1)<\/td>\n<td>hermita<\/td>\n<td>H\u2099(\u03be) = (-1)\u207f\u00b7E<sup>(\u03be\u00b2\/2)\u00b7d\u207f\/d\u03be\u207f[e<\/sup>(-\u03be\u00b2\/2)]<\/td>\n<\/tr>\n<tr>\n<td>Exponencial \u03bb=1<\/td>\n<td>laguerre<\/td>\n<td>L\u2099(\u03be) = (1\/n!)\u00b7E^\u03be\u00b7d\u207f\/d\u03be\u207f[\u03be\u207f]<\/td>\n<\/tr>\n<tr>\n<td>beta [a, b]<\/td>\n<td>jacobi<\/td>\n<td>Polinomios Jacobi generalizados<\/td>\n<\/tr>\n<tr>\n<td>empoll\u00f3n<\/td>\n<td>charlat\u00e1n<\/td>\n<td>Polinomios ortogonales discretos<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>La condici\u00f3n de ortonormalidad indica:<\/p>\n<pre><code>\u222b \u03a8\u1d62(\u03be) \u03a8\u2c7c(\u03be) w(\u03be) d\u03be = \u03b4\u1d62\u2c7c\n<\/code><\/pre>\n<p>donde w(\u03be) es la densidad de probabilidad de la distribuci\u00f3n de entrada y \u0394\u1d62\u2c7c es el delta de kronecker. Cuando esta condici\u00f3n se mantiene, los coeficientes PCE se relacionan directamente con las estad\u00edsticas de salida a trav\u00e9s de la identidad de Parseval.<\/p>\n<h3>Construcci\u00f3n polin\u00f3mica multivariada<\/h3>\n<p>Cuando las entradas son independientes, la base polinomial multivariada es un producto tensor de polinomios univariados:<\/p>\n<pre><code>\u03a8\u2096(X) = \u03a0 \u03c8\u2096\u1d62(X\u1d62)\n<\/code><\/pre>\n<p>Para una base de grado total del orden P en D par\u00e1metros inciertos, el n\u00famero de t\u00e9rminos es:<\/p>\n<pre><code>N = (d + p)! \/ (d! \u00b7 p!)\n<\/code><\/pre>\n<p>Para 20 par\u00e1metros y orden tres, esto produce 1.771 t\u00e9rminos. Una regresi\u00f3n estable generalmente requiere m\u00e1s puntos de entrenamiento que los coeficientes, por lo que la demanda computacional crece r\u00e1pidamente.<\/p>\n<h2>PCE no intrusivo versus intrusivo<\/h2>\n<p>Hay dos enfoques fundamentalmente diferentes para construir un PCE. El enfoque no intrusivo trata al simulador como una caja negra. El enfoque intrusivo reformula las ecuaciones gobernantes.<\/p>\n<h3>PCE no intrusivo<\/h3>\n<p>PCE no intrusivo eval\u00faa el simulador determinista en puntos seleccionados en el espacio de incertidumbre y se ajusta a una regresi\u00f3n polinomial. El flujo de trabajo:<\/p>\n<ol>\n<li>Seleccione una base polinomial alineada con las distribuciones de entrada.<\/li>\n<li>Generar puntos de entrenamiento (cuadratura o muestreo).<\/li>\n<li>Ejecute el simulador en esos puntos.<\/li>\n<li>estimar los coeficientes de expansi\u00f3n.<\/li>\n<li>Validar en puntos de prueba independientes.<\/li>\n<\/ol>\n<p>Este enfoque no agrega ninguna modificaci\u00f3n del solucionador. Puede envolver un CFD, FEM, un campo de fase o un modelo molecular existente y obtener un PCE sustituto sin cambiar ning\u00fan c\u00f3digo interno.<\/p>\n<h3>PCE intrusivo (Galerkin estoc\u00e1stico)<\/h3>\n<p>PCE intrusivo sustituye la expansi\u00f3n polinomial directamente en las ecuaciones de gobierno y deriva un sistema determinista acoplado para los coeficientes. Para un modelo simple:<\/p>\n<pre><code>\u2202u\/\u2202t = L(u) + f \u2192 \u03a3 \u2202c\u2096\u03a8\u2096\/\u2202t = L(\u03a3 c\u2096\u03a8\u2096) + f\n<\/code><\/pre>\n<p>Despu\u00e9s de proyectar en cada funci\u00f3n de base, el sistema acoplado resuelve todos los coeficientes simult\u00e1neamente. Esto puede ser m\u00e1s eficiente porque utiliza la estructura completa de las ecuaciones, pero requiere modificar el solucionador para manejar el sistema acoplado. Para la mayor\u00eda de los flujos de trabajo de producci\u00f3n, el enfoque intrusivo no es pr\u00e1ctico: se prefiere el enfoque de regresi\u00f3n no intrusiva.<\/p>\n<h2>C\u00f3mo estimar los coeficientes PCE<\/h2>\n<p>El m\u00e9todo de estimaci\u00f3n del coeficiente determina tanto la precisi\u00f3n como el costo computacional. Hay tres enfoques principales.<\/p>\n<h3>Estimaci\u00f3n basada en regresi\u00f3n<\/h3>\n<p>El enfoque de regresi\u00f3n no intrusiva es el m\u00e1s utilizado. Muestra los puntos de entrada, eval\u00faa el modelo y se ajusta al polinomio por regresi\u00f3n lineal:<\/p>\n<pre><code>y \u2248 \u03a6 c\n<\/code><\/pre>\n<p>donde \u03c6 es la matriz de evaluaci\u00f3n polin\u00f3mica e y es el vector de evaluaciones de modelos. Si n_samples \u2265 n_terms, la soluci\u00f3n de m\u00ednimos cuadrados es:<\/p>\n<pre><code>c = (\u03a6\u1d40\u03a6)\u207b\u00b9 \u03a6\u1d40 y\n<\/code><\/pre>\n<p>Esto es sencillo de implementar con las caracter\u00edsticas polinomiales de scikit-learn:<\/p>\n<pre><code class=\"language-python\">import numpy as np\nfrom sklearn.preprocessing import PolynomialFeatures\nfrom sklearn.linear_model import Ridge\n\n# Training data: N_samples \u00d7 N_inputs\nX_train = np.random.uniform(-1, 1, (100, 3))\n\n# Polynomial features up to degree 2\npoly = PolynomialFeatures(degree=2, include_bias=False)\nPhi = poly.fit_transform(X_train)  # 100 \u00d7 10 matrix\n\n# Ridge regression (regularization stabilizes coefficient estimation)\nmodel = Ridge(alpha=1e-4)\nc = model.fit(Phi, y_train).coef_\n<\/code><\/pre>\n<p>La regresi\u00f3n con regularizaci\u00f3n (Ridge, Lazo) es num\u00e9ricamente estable y funciona bien para dimensiones moderadas. La desventaja es que la matriz de regresi\u00f3n se vuelve mal condicionada cuando el conjunto de entrenamiento es peque\u00f1o en relaci\u00f3n con el tama\u00f1o de la base.<\/p>\n<h3>Estimaci\u00f3n basada en cuadratura (f\u00f3rmula Gauss)<\/h3>\n<p>Cuando el \u00edndice de coeficiente k es unidimensional (un solo t\u00e9rmino polinomio), el coeficiente c\u2096 se puede calcular por cuadratura num\u00e9rica:<\/p>\n<pre><code>c\u2096 = \u222b M(X) \u03a8\u2096(X) w(X) dX \u2248 \u03a3\u1d62 M(X\u1d62) \u03a8\u2096(X\u1d62) w(X\u1d62) \/ ||\u03a8\u2096||\u00b2\n<\/code><\/pre>\n<p>Para PCE multivariado, se necesitan cuadr\u00edculas de cuadratura escasas. Este enfoque es exacto cuando el modelo es un polinomio de grado \u2264 2p, pero se vuelve poco pr\u00e1ctico en dimensiones altas porque el tama\u00f1o de la cuadr\u00edcula en cuadratura crece exponencialmente.<\/p>\n<h3>Basado en proyecci\u00f3n (colocaci\u00f3n estoc\u00e1stica)<\/h3>\n<p>La colocaci\u00f3n estoc\u00e1stica construye el PCE interpolando el modelo en puntos de colocaci\u00f3n seleccionados. El coeficiente del t\u00e9rmino k es:<\/p>\n<pre><code>c\u2096 = \u03a3\u1d62 M(X\u1d62) \u03a8\u2096(X\u1d62) \/ \u03a8\u2096(X\u1d62)\u00b2  (diagonal weight)\n<\/code><\/pre>\n<p>La colocaci\u00f3n evita el paso de integraci\u00f3n de la cuadratura y es computacionalmente eficiente cuando se utilizan cuadr\u00edculas escasas o estrategias de refinamiento adaptativo. Es el enfoque preferido cuando el simulador es lo suficientemente barato como para evaluar en todos los puntos de cuadratura.<\/p>\n<h2>M\u00e9todos de PCE escasos<\/h2>\n<p>La base polinomial completa crece combinatoriamente con la dimensi\u00f3n. Los m\u00e9todos de PCE escasos reducen el tama\u00f1o de base mientras conservan la precisi\u00f3n cuando la respuesta del modelo est\u00e1 dominada por interacciones de orden bajo.<\/p>\n<h3>Truncamiento hiperb\u00f3lico<\/h3>\n<p>La restricci\u00f3n de base hiperb\u00f3lica (HBR) con el par\u00e1metro q &lt; 1 L\u00edmites que se incluyen en varios \u00edndices:<\/p>\n<pre><code>\u2211 \u03b1\u1d62^(1\/q) \u2264 p\n<\/code><\/pre>\n<p>Cuando Q \u2192 1, el HBR se acerca a la base de grado total. Cuando Q \u2192 0, se acerca a la base generalizada de Pareto. El par\u00e1metro Q controla la compensaci\u00f3n entre el tama\u00f1o de base y la precisi\u00f3n. Para la mayor\u00eda de los modelos de ingenier\u00eda, Q = 0,5 a 0,7 proporciona una buena compresi\u00f3n al tiempo que conserva importantes t\u00e9rminos de interacci\u00f3n.<\/p>\n<p>El truncamiento hiperb\u00f3lico reduce una base de pedidos de 20 par\u00e1metros, de 1.771 t\u00e9rminos a aproximadamente 200-400 t\u00e9rminos dependiendo de q.<\/p>\n<h3>Lazo y regresi\u00f3n regularizada<\/h3>\n<p>Lasso (operador de selecci\u00f3n y contracci\u00f3n m\u00ednima absoluta) realiza regresi\u00f3n con una penalizaci\u00f3n L1:<\/p>\n<pre><code>min (||\u03a6c||\u00b2 + \u03bb ||c||\u2081)\n<\/code><\/pre>\n<p>La penalizaci\u00f3n L1 impulsa muchos coeficientes exactamente a cero, produciendo una soluci\u00f3n escasa. Elastic Net combina las penalidades de L1 y L2 para manejar los predictores correlacionados:<\/p>\n<pre><code>min (||\u03a6c||\u00b2 + \u03bb\u2081 ||c||\u2081 + \u03bb\u2082 ||c||\u2082\u00b2)\n<\/code><\/pre>\n<p>El PCE escaso basado en lazo se implementa en UQPY como <code>HyperbolicTruncLARS<\/code> (truncamiento hiperb\u00f3lico con regresi\u00f3n de m\u00ednimo \u00e1ngulo). El flujo de trabajo:<\/p>\n<pre><code class=\"language-python\">from uqpy.surrogates import HyperbolicTruncLARS\nfrom uqpy.distributions import MultivariateGaussian, Uniform\n\n# Define distributions\ndist = MultivariateGaussian(np.zeros(5), np.eye(5))\n\n# Generate samples and run model\nsamples = dist.sample(n=500)\ny_train = model_function(samples)\n\n# Build sparse PCE with q=0.5\npce = HyperbolicTruncLARS(distribution=dist, q=0.5, p=3)\npce.fit(samples, y_train)\n\n# Validate\nvalidation_samples = dist.sample(n=100)\ny_pred = pce.predict(validation_samples)\nrmse = np.sqrt(np.mean((y_pred - y_test)**2))\n<\/code><\/pre>\n<h3>Rejillas escasas de Smolyak<\/h3>\n<p>La construcci\u00f3n de Smolyak combina reglas de cuadratura univariadas utilizando la f\u00f3rmula de cuadr\u00edcula escasa:<\/p>\n<pre><code>Q\u2098 = \u03a3_{|k|=m} (-1)^(m-|k|) \u00b7 \u03a0\u1d62 Q_{k\u1d62}\n<\/code><\/pre>\n<p>donde q_d es el operador de cuadratura dimensional y |k| = \u03c3 k\u1d62. Las cuadr\u00edculas de Smolyak reducen el n\u00famero de puntos multidimensionales del crecimiento exponencial al polinomio en la dimensi\u00f3n. Son m\u00e1s efectivos cuando la respuesta es suave y dominan las interacciones de bajo orden.<\/p>\n<h2>Cuando el PCE es efectivo<\/h2>\n<p>PCE converge exponencialmente r\u00e1pido para obtener respuestas suaves del modelo. La tasa de convergencia depende de:<\/p>\n<ul>\n<li><strong>Suavidad<\/strong>: las respuestas anal\u00edticas convergen geom\u00e9tricamente. Las respuestas suaves por partes convergen algebraicamente.<\/li>\n<li><strong>Dimensi\u00f3n efectiva<\/strong>: incluso con 50 par\u00e1metros nominales, si solo 5 controlan la respuesta, PCE converge en 5 dimensiones.<\/li>\n<li><strong>Interacciones de par\u00e1metros<\/strong>: las interacciones fuertes de orden superior aumentan el tama\u00f1o de base requerido.<\/li>\n<li><strong>Calidad del dise\u00f1o experimental<\/strong>: las secuencias SOBOL o las cuadr\u00edculas escasas en cuadratura funcionan mejor que el muestreo aleatorio uniforme.<\/li>\n<\/ul>\n<h3>Contexto de referencia<\/h3>\n<ul>\n<li>PCE proporciona momentos anal\u00edticos e \u00edndices SOBOL una vez instalados, sin evaluaciones de modelos adicionales.<\/li>\n<li>El enfoque de regresi\u00f3n trata al simulador como una caja negra.<\/li>\n<li>Los m\u00e9todos escasos pueden extender PCE a ~50 par\u00e1metros inciertos cuando el modelo exhibe interacciones escasas.<\/li>\n<li>El ecosistema UQ de Python incluye CHAOSPY, UQPY, SALIB, SMT y la incertidumbre.<\/li>\n<\/ul>\n<h2>PCE vs Kriging vs redes neuronales<\/h2>\n<p>PCE es un sustituto entre muchos. Comprender las compensaciones le ayuda a elegir el m\u00e9todo correcto para su problema.<\/p>\n<table>\n<thead>\n<tr>\n<th>Dimensi\u00f3n<\/th>\n<th>M\u00e9todo<\/th>\n<th>Datos necesarios<\/th>\n<th>interpretabilidad<\/th>\n<th>dimensionalidad<\/th>\n<th>Extracci\u00f3n UQ<\/th>\n<th>\u00cdndices de Sobol<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>pe\u00f1atallo<\/td>\n<td>Regresi\u00f3n polin\u00f3mica \/ cuadrada<\/td>\n<td>N_T\u00e9rminos \u00d7 1.5<\/td>\n<td>Alto (coeficientes se asignan a la varianza)<\/td>\n<td>Moderado (escaso se extiende a ~50)<\/td>\n<td>Momentos anal\u00edticos exactos<\/td>\n<td>Exacto (agrupaci\u00f3n de coeficientes)<\/td>\n<\/tr>\n<tr>\n<td>Kriging (proceso gaussiano)<\/td>\n<td>Interpolaci\u00f3n basada en correlaci\u00f3n<\/td>\n<td>~10-50 \u00d7 d<\/td>\n<td>Medio (estructura de correlaci\u00f3n)<\/td>\n<td>Moderado bajo (~10-30)<\/td>\n<td>Intervalos de predicci\u00f3n<\/td>\n<td>No (se necesita derivada num\u00e9rica)<\/td>\n<\/tr>\n<tr>\n<td>Redes neuronales<\/td>\n<td>Arquitectura profunda \/ superficial<\/td>\n<td>Cientos a miles<\/td>\n<td>Bajo (caja negra)<\/td>\n<td>Alto (100+ posible)<\/td>\n<td>No (sin modelo UQ inherente)<\/td>\n<td>No (sensibilidad a trav\u00e9s de perturbaciones)<\/td>\n<\/tr>\n<tr>\n<td>Modelos de pedido reducido<\/td>\n<td>Proyecci\u00f3n \/ Adecuado ortogonal<\/td>\n<td>espec\u00edfico del problema<\/td>\n<td>Medio (vectores de proyecci\u00f3n)<\/td>\n<td>Alto (incrusta la f\u00edsica)<\/td>\n<td>No (proyecci\u00f3n determinista)<\/td>\n<td>No<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>PCE es el \u00fanico sustituto que da \u00edndices anal\u00edticos exactos de Sobol de los coeficientes. Kriging da intervalos de predicci\u00f3n pero requiere diferenciaci\u00f3n num\u00e9rica para la sensibilidad. Las redes neuronales requieren una sensibilidad basada en perturbaciones. Los modelos de orden reducido son proyecciones deterministas.<\/p>\n<h3>Cu\u00e1ndo elegir PCE<\/h3>\n<p>PCE es la mejor opci\u00f3n cuando:<\/p>\n<ol>\n<li><strong>Necesita momentos anal\u00edticos e \u00edndices de sensibilidad<\/strong>: los coeficientes le dan \u00edndices e[Y], var(y) y sobol sin c\u00e1lculo adicional.<\/li>\n<li><strong>La respuesta es suave y de baja dimensi\u00f3n<\/strong>: las respuestas anal\u00edticas convergen geom\u00e9tricamente en PCE.<\/li>\n<li><strong>Necesitas Monte Carlo r\u00e1pido en el sustituto<\/strong>: Una vez instalado, evaluar el polinomio es O(1). Esto es invaluable para el an\u00e1lisis de confiabilidad o la estimaci\u00f3n de probabilidad de umbral.<\/li>\n<li><strong>El simulador es moderadamente caro<\/strong>: si cada evaluaci\u00f3n toma minutos a horas, es factible un PCE de 100-500 puntos.<\/li>\n<\/ol>\n<h3>Cu\u00e1ndo evitar el PCE<\/h3>\n<p>Evite el PCE cuando:<\/p>\n<ol>\n<li><strong>La respuesta es discontinua<\/strong>: el fen\u00f3meno de Gibbs produce oscilaciones cerca de discontinuidades. Use PCE multielemento o un sustituto h\u00edbrido.<\/li>\n<li><strong>Necesita un modelo de alta dimensi\u00f3n<\/strong>: incluso el PCE escaso se vuelve inestable m\u00e1s all\u00e1 de ~50 par\u00e1metros sin escasez verificada.<\/li>\n<li><strong>La respuesta es altamente no lineal con un fuerte comportamiento de umbral<\/strong>: PCE suaviza los umbrales. Use Monte Carlo o QMC aleatorizado en su lugar.<\/li>\n<li><strong>Los datos son extremadamente escasos<\/strong>: con menos de 20 puntos de entrenamiento, el PCE no es confiable. Las superficies de respuesta polinomial o kriging pueden ser m\u00e1s robustas.<\/li>\n<\/ol>\n<h2>El fen\u00f3meno de Gibbs<\/h2>\n<p>El fen\u00f3meno de Gibbs es el modo de falla m\u00e1s fundamental del PCE est\u00e1ndar. Para respuestas discontinuas, eventos de umbral, cambios de contacto o fallas del solucionador, la aproximaci\u00f3n polinomial produce oscilaciones no f\u00edsicas cerca de la discontinuidad. Esto es matem\u00e1ticamente id\u00e9ntico a las oscilaciones observadas al aproximar una funci\u00f3n de paso con una serie de Fourier.<\/p>\n<p>Para una respuesta suave, PCE converge r\u00e1pidamente. Para una respuesta con una discontinuidad de un solo salto, el polinomio oscila con amplitud proporcional a la altura del salto y decayendo solo como 1\/\u221aN. Aumentar el orden polinomial empeora la oscilaci\u00f3n, no mejor.<\/p>\n<h3>Estrategias de mitigaci\u00f3n<\/h3>\n<p><strong>PCE de varios elementos (ME-PCE)<\/strong>: el dominio de entrada se divide en subregiones. Se instala un polinomio separado dentro de cada subregi\u00f3n, con la continuidad impuesta en los l\u00edmites. Este es el enfoque m\u00e1s fiable para las respuestas discontinuas.<\/p>\n<p><strong>H\u00edbrido polinomial de caos-kring<\/strong>: un PCE captura el componente suave de la respuesta, mientras que un modelo Kriging captura la discontinuidad residual. Esto aprovecha las fortalezas de ambos m\u00e9todos.<\/p>\n<p><strong>Caos polinomial racional<\/strong>: Las aproximaciones de Pad\u00e9-Legendre utilizan una proporci\u00f3n de polinomios en lugar de un solo polinomio. La forma racional puede representar saltos discontinuos con mayor precisi\u00f3n que un polinomio puro.<\/p>\n<p><strong>Descomposici\u00f3n del dominio de aprendizaje activo<\/strong>: Nov\u00e1k et al. (2023) introdujeron un enfoque secuencial donde el dominio de entrada se descompone iterativamente en funci\u00f3n del comportamiento del modelo en cada regi\u00f3n. Este es el enfoque m\u00e1s flexible para respuestas discontinuas complejas.<\/p>\n<h2>Gu\u00eda de implementaci\u00f3n de Python<\/h2>\n<h3>caramelo<\/h3>\n<p>Chaospy es una biblioteca enfocada para distribuciones de PCE y probabilidad. No tiene como objetivo ser un marco UQ todo en uno.<\/p>\n<pre><code class=\"language-python\">import chaospy as cp\nimport numpy as np\n\n# Independent uncertain parameters\ndistribution = cp.J(\n    cp.Uniform(0.8, 1.2),\n    cp.Normal(2.0, 0.1)\n)\n\n# Total-degree polynomial basis\norder = 3\nexpansion = cp.generate_expansion(order, distribution)\n\n# Experimental design (Sobol)\nsamples = distribution.sample(100, rule='sobol')\n\n# Model evaluations\ndef model(sample):\n    conductivity = sample[0]\n    source = sample[1]\n    return source \/ conductivity + 0.2 * conductivity**2\n\nevaluations = np.array([model(samples[:, i]) for i in range(samples.shape[1])])\n\n# Fit PCE by regression\napproximation = cp.fit_regression(expansion, samples.T, evaluations)\n\n# Extract statistics (analytical, no additional model evaluations)\nmean = cp.E(approximation, distribution)\nvariance = cp.Var(approximation, distribution)\nfirst_order = cp.Sens_m(approximation, distribution)\ntotal_order = cp.Sens_t(approximation, distribution)\n\nprint(f\"Mean: {mean}\")\nprint(f\"Standard deviation: {np.sqrt(variance)}\")\nprint(f\"First-order Sobol: {first_order}\")\nprint(f\"Total-order Sobol: {total_order}\")\n<\/code><\/pre>\n<h3>uqpy<\/h3>\n<p>UQPY proporciona PCE escasas, LARS y amplias utilidades de validaci\u00f3n.<\/p>\n<pre><code class=\"language-python\">from uqpy.distributions import MultivariateGaussian\nfrom uqpy.surrogates import HyperbolicTruncLARS, MonteCarlo\nimport numpy as np\n\n# Define distribution\ndist = MultivariateGaussian(np.zeros(5), np.eye(5))\n\n# Generate samples and run model\nsamples = dist.sample(n=500)\ny_train = np.array([model_function(x) for x in samples])\n\n# Build sparse PCE\npce = HyperbolicTruncLARS(distribution=dist, q=0.5, p=3)\npce.fit(samples, y_train)\n\n# Validate on independent test points\ntest_samples = dist.sample(n=100)\ny_pred = pce.predict(test_samples)\ny_test = np.array([model_function(x) for x in test_samples])\n\n# Root mean squared error\nrmse = np.sqrt(np.mean((y_pred - y_test)**2))\nprint(f\"RMSE: {rmse}\")\n\n# Monte Carlo uncertainty propagation on the surrogate\nn_mc = 10000\nmc_samples = dist.sample(n_mc)\nmc_predictions = pce.predict(mc_samples)\n\nmc_mean = np.mean(mc_predictions)\nmc_std = np.std(mc_predictions)\nprint(f\"MC propagation mean: {mc_mean}\")\nprint(f\"MC propagation std: {mc_std}\")\n<\/code><\/pre>\n<h3>PCE regularizado de Scikit<\/h3>\n<p>Para proyectos que ya usan Scikit-learn, Ridge o Lazo es sencillo.<\/p>\n<pre><code class=\"language-python\">import numpy as np\nfrom sklearn.preprocessing import PolynomialFeatures\nfrom sklearn.linear_model import Lasso\n\n# Generate Sobol samples\nN = 300\nd = 4\nfrom scipy.stats import qmc\nsampler = qmc.Sobol(d)\nsample = sampler.random(base2=np.ceil(np.log2(N)).astype(int))\n\n# Model evaluations\ny = np.array([model_function(row) for row in sample])\n\n# Polynomial features with hyperbolic truncation (manual basis selection)\npoly = PolynomialFeatures(degree=2, include_bias=False)\nPhi = poly.fit_transform(sample)\n\n# LASSO regression\nlasso = Lasso(alpha=1e-3)\nc = lasso.fit(Phi, y).coef_\n\nprint(f\"Non-zero coefficients: {np.sum(c != 0)} out of {len(c)}\")\nprint(f\"Coefficients: {c}\")\n<\/code><\/pre>\n<h2>Validaci\u00f3n de un sustituto de PCE<\/h2>\n<p>Nunca se debe confiar en un sustituto PCE sin validaci\u00f3n. Los coeficientes polin\u00f3micos proporcionan momentos exactos, pero esos momentos no tienen sentido si el sustituto no se aproxima al modelo con precisi\u00f3n.<\/p>\n<h3>Protocolo de validaci\u00f3n<\/h3>\n<ol>\n<li><strong>Generar puntos de validaci\u00f3n<\/strong>: independiente del entrenamiento. Use secuencias SOBOL o muestreo de hipercubo latino.<\/li>\n<li><strong>Compute RMSE y error m\u00e1ximo<\/strong>: compare las predicciones de PCE con las evaluaciones reales del modelo en los puntos de validaci\u00f3n.<\/li>\n<li><strong>Revise la precisi\u00f3n del momento<\/strong>: compare la media y la varianza extra\u00eddas de PCE con las estimaciones de Monte Carlo en el conjunto de validaci\u00f3n.<\/li>\n<li><strong>Monitor de estabilidad de la sensibilidad<\/strong>: si los \u00edndices SOBOL cambian significativamente entre el entrenamiento y la validaci\u00f3n, el PCE no est\u00e1 convergente.<\/li>\n<li><strong>Compruebe las oscilaciones de Gibbs<\/strong>: trace las predicciones de PCE contra una cuadr\u00edcula. Las oscilaciones no suaves indican un fallo de respuesta discontinuo.<\/li>\n<\/ol>\n<h3>Monitoreo de convergencia<\/h3>\n<p>Seguimiento del orden polinomial y n\u00famero de puntos de entrenamiento. A medida que ambos aumentan, el RMSE deber\u00eda disminuir mon\u00f3tonamente. Si RMSE se estanca o aumenta con un orden superior, la base es sobreajustar los datos de entrenamiento.<\/p>\n<pre><code class=\"language-python\"># Monitoring convergence as polynomial order increases\nfor order in [2, 3, 4, 5]:\n    expansion = cp.generate_expansion(order, distribution)\n    samples = distribution.sample(N)\n    evaluations = np.array([model(s) for s in samples])\n    pce = cp.fit_regression(expansion, samples.T, evaluations)\n    \n    # Validate\n    test = distribution.sample(N_test)\n    y_pred = np.array([pce(s) for s in test])\n    y_true = np.array([model(s) for s in test])\n    \n    rmse = np.sqrt(np.mean((y_pred - y_true)**2))\n    print(f\"Order {order}: RMSE = {rmse:.6f}\")\n<\/code><\/pre>\n<h2>Errores comunes y c\u00f3mo evitarlos<\/h2>\n<h3>1. Base polin\u00f3mica no coincidente<\/h3>\n<p>El uso de polinomios de Legendre para entradas gaussianas destruye la ortogonalidad. Los coeficientes se polarizan y el momento de extracci\u00f3n no es v\u00e1lido. Haga coincidir siempre la familia polinomial con la distribuci\u00f3n de entrada.<\/p>\n<h3>2. Sobreajuste de la base polin\u00f3mica<\/h3>\n<p>Una base de grado 5 en 10 par\u00e1metros tiene 2.002 t\u00e9rminos. Con 2.000 puntos de entrenamiento, la regresi\u00f3n es apenas estable. Utilice criterios de informaci\u00f3n (AIC, BIC) o de validaci\u00f3n cruzada para seleccionar el orden polin\u00f3mico.<\/p>\n<h3>3. Confiar en los momentos PCE sin validaci\u00f3n<\/h3>\n<p>La media y la varianza extra\u00edda de los coeficientes PCE son expresiones matem\u00e1ticas exactas. Pero solo son v\u00e1lidos si la aproximaci\u00f3n polinomial es precisa. Siempre valide contra puntos de prueba independientes antes de informar momentos.<\/p>\n<h3>4. Ignorar el fen\u00f3meno de Gibbs<\/h3>\n<p>Para respuestas discontinuas, el polinomio oscila cerca de discontinuidades. Informe el RMSE en una cuadr\u00edcula que incluye regiones de discontinuidad. Si RMSE est\u00e1 dominado por unos pocos puntos oscilatorios, el PCE no es v\u00e1lido.<\/p>\n<h3>5. Asumir la escasez sin verificar<\/h3>\n<p>El lazo o el truncamiento hiperb\u00f3lico asume que la respuesta del modelo est\u00e1 dominada por interacciones de orden bajo. Si el modelo real tiene fuertes interacciones de alto orden, el PCE escaso las extra\u00f1ar\u00e1. Verifique la escasez comparando las normas de coeficiente de bases completas frente a escasas.<\/p>\n<h2>Resumen y pr\u00f3ximos pasos<\/h2>\n<p>La expansi\u00f3n de caos polin\u00f3mico convierte un simulador determinista en un sustituto estoc\u00e1stico que proporciona acceso anal\u00edtico a estad\u00edsticas de salida, intervalos de incertidumbre e \u00edndices de sensibilidad. El m\u00e9todo sobresale cuando la respuesta es suave, la dimensionalidad es moderada y el costo computacional es lo suficientemente alto como para justificar la construcci\u00f3n de sustitutos.<\/p>\n<h3>Flujo de trabajo recomendado<\/h3>\n<ol>\n<li><strong>Verifique la convergencia num\u00e9rica<\/strong> del simulador determinista antes de UQ. El error de discretizaci\u00f3n y la incertidumbre num\u00e9rica deben establecerse antes de la propagaci\u00f3n.<\/li>\n<li><strong>Asignar distribuciones a partir de datos experimentales<\/strong> o juicio de experto documentado. No prefiera distribuciones uniformes.<\/li>\n<li><strong>Seleccione la base polinomial<\/strong> haciendo coincidir distribuciones con polinomios ortogonales. Verificar las condiciones de ortonormalidad.<\/li>\n<li><strong>Elija un m\u00e9todo de estimaci\u00f3n de coeficiente<\/strong>: regresi\u00f3n para PCE no intrusivo, cuadratura para casos eficientes de baja dimensi\u00f3n, colocaci\u00f3n para modelos baratos.<\/li>\n<li><strong>Validar el sustituto<\/strong> contra puntos de prueba independientes y monitorear la convergencia con el aumento del orden polinomial.<\/li>\n<li><strong>Informar momentos e \u00edndices de sensibilidad<\/strong> solo despu\u00e9s de la validaci\u00f3n. Incluya intervalos de confianza para las estad\u00edsticas estimadas.<\/li>\n<\/ol>\n<h3>Qu\u00e9 evitar<\/h3>\n<ul>\n<li>Uso de PCE para respuestas discontinuas sin mitigaci\u00f3n<\/li>\n<li>Suponiendo que el PCE escaso funciona para cada problema de alta dimensi\u00f3n<\/li>\n<li>Reportar momentos PCE sin validaci\u00f3n<\/li>\n<li>Confuso PCE no intrusivo con galerkin estoc\u00e1stico intrusivo<\/li>\n<li>Uso de bases polinomiales completas en problemas donde el tama\u00f1o de base excede el conjunto de entrenamiento<\/li>\n<\/ul>\n<h2>Gu\u00edas relacionadas<\/h2>\n<ul>\n<li><a href=\"https:\/\/matforge.org\/uncertainty-quantification-sensitivity-analysis-scientific-simulation\/\">Cuantificaci\u00f3n de incertidumbre y an\u00e1lisis de sensibilidad en simulaci\u00f3n cient\u00edfica<\/a> \u2014 Flujo de trabajo de UQ m\u00e1s amplio, an\u00e1lisis de sensibilidad de SOBOL, m\u00e9todos Monte Carlo y herramientas Python UQ.<\/li>\n<li><a href=\"https:\/\/matforge.org\/monte-carlo-methods-for-scientific-simulations\/\">M\u00e9todos Monte Carlo para simulaciones cient\u00edficas<\/a> \u2014 Compare el muestreo aleatorio, QMC, LHS y el comportamiento de convergencia contra PCE.<\/li>\n<li><a href=\"https:\/\/matforge.org\/machine-learning-surrogates-scientific-simulations\/\">Surrogate de aprendizaje autom\u00e1tico para simulaciones cient\u00edficas<\/a>: compilar y validar redes neuronales y procesos gaussianos sustitutos junto con PCE.<\/li>\n<li><a href=\"https:\/\/matforge.org\/verification-vs-validation-in-scientific-simulations-a-practical-guide\/\">Verificaci\u00f3n vs validaci\u00f3n en simulaciones cient\u00edficas<\/a> \u2014 Establecer convergencia num\u00e9rica antes de comenzar Una campa\u00f1a de UQ.<\/li>\n<\/ul>\n<h2>referencias<\/h2>\n<ul>\n<li>Caflisch, R. E., &amp; Mosolova, N. (1998). M\u00e9todos Monte Carlo y cuasi-Monte Carlo. Informe de CAM de UCLA.<\/li>\n<li>Nov\u00e1k et al. (2023). Dominio de aprendizaje activo Adaptativo Localizados sustitutos. <em>M\u00e9todos inform\u00e1ticos en mec\u00e1nica e ingenier\u00eda aplicadas<\/em>. <a href=\"https:\/\/www.sciencedirect.com\/science\/article\/abs\/pii\/S0888327023006362\" target=\"_blank\" rel=\"nofollow noopener\">doi<\/a><\/li>\n<li>Schneider (2023). Expansi\u00f3n racional del caos polin\u00f3mico. disertaci\u00f3n TUM. <a href=\"https:\/\/mediatum.ub.tum.de\/doc\/1779181\/o49dteqnqdu3dcf3r6r50dqfd.manuscript_final.pdf\" target=\"_blank\" rel=\"nofollow noopener\">PDF<\/a><\/li>\n<li>Diccionario Helmholtz UQ. Entrada de expansi\u00f3n de caos polin\u00f3mico. <a href=\"https:\/\/dictionary.helmholtz-uq.de\/content\/PCE.html\" target=\"_blank\" rel=\"nofollow noopener\">url<\/a><\/li>\n<li>Centro de Aprendizaje COMSOL. Teor\u00eda de modelado sustituto y PCE. <a href=\"https:\/\/www.comsol.com\/support\/learning-center\/course\/surrogate-modeling-theory-271\/more-on-pce-surrogate-models-97121\" target=\"_blank\" rel=\"nofollow noopener\">url<\/a><\/li>\n<\/ul>\n<h2>\u00bfNecesita ayuda para crear sustitutos de PCE para sus simulaciones?<\/h2>\n<p>Si est\u00e1 luchando con la implementaci\u00f3n del caos polinomial, la selecci\u00f3n de bases, la escasa regularizaci\u00f3n de PCE o la validaci\u00f3n de sustitutos, podemos ayudarlo. Nos especializamos en flujos de trabajo de cuantificaci\u00f3n de incertidumbre basados en Python y podemos guiarlo desde scripts PCE b\u00e1sicos hasta canalizaciones sustitutas de producci\u00f3n.<\/p>\n","protected":false,"raw":"<p>La expansi\u00f3n del caos polinomial es una t\u00e9cnica de modelado sustituto que reemplaza una costosa simulaci\u00f3n con una serie de polinomios ortogonales cuyos coeficientes se pueden usar para estimar la incertidumbre directamente. Una vez instalado, un sustituto de PCE le brinda acceso anal\u00edtico a los medios de salida, las varianzas, los intervalos de confianza y los \u00edndices de sensibilidad de SOBOL sin ejecutar una sola simulaci\u00f3n adicional.<\/p>\n<p>Este art\u00edculo cubre el PCE desde la base te\u00f3rica hasta la implementaci\u00f3n pr\u00e1ctica. Ver\u00e1 exactamente c\u00f3mo se seleccionan las bases polinomiales, c\u00f3mo se estiman los coeficientes por regresi\u00f3n, cuadratura o proyecci\u00f3n, c\u00f3mo las t\u00e9cnicas dispersas extienden PCE a dimensiones moderadas y qu\u00e9 modos de falla rompen el PCE est\u00e1ndar. Los ejemplos de Python incluidos utilizan Chaospy, UQPY y Scikit-Learn para mostrar flujos de trabajo completos y validados.<\/p>\n<h2>Comida clave<\/h2>\n<ul>\n<li><strong>PCE reemplaza el muestreo aleatorio con una aproximaci\u00f3n determinista<\/strong>: en lugar de dibujar miles de muestras de Monte Carlo, PCE ajusta un polinomio a la respuesta del modelo. Los coeficientes polin\u00f3micos proporcionan entonces momentos anal\u00edticos e \u00edndices de sensibilidad.<\/li>\n<li><strong>La base polinomial debe coincidir con la distribuci\u00f3n de entrada<\/strong>: Legendre for Uniform, Hermite for Gaussian, Laguerre para exponencial. Una base no coincidente destruye la ortogonalidad e invalida todas las estimaciones de coeficientes.<\/li>\n<li><strong>PCE no intrusivo es la opci\u00f3n predeterminada para la mayor\u00eda de los flujos de trabajo<\/strong>: mantiene su simulador como una caja negra, lo eval\u00faa en los puntos de entrenamiento y estima los coeficientes a trav\u00e9s de la regresi\u00f3n. Esto evita modificar las ecuaciones del solucionador.<\/li>\n<li><strong>Escasos m\u00e9todos de PCE manejan ~50 par\u00e1metros<\/strong>: el truncamiento hiperb\u00f3lico, las rejillas de lazo y smolyak reducen dr\u00e1sticamente el tama\u00f1o de la base polinomial. Funcionan cuando la respuesta del modelo tiene interacciones dominantes de orden bajo, pero se debe verificar la suposici\u00f3n de escasez.<\/li>\n<li><strong>PCE no es universal<\/strong>: las respuestas discontinuas, los eventos de umbral, los cambios de contacto y las fallas del solucionador producen oscilaciones no f\u00edsicas (el fen\u00f3meno de Gibbs). Cuando la respuesta sea discontinua, use PCE multielemento, caos polinomial racional o un sustituto h\u00edbrido.<\/li>\n<\/ul>\n<h2>C\u00f3mo funciona la expansi\u00f3n del caos polin\u00f3mico<\/h2>\n<p>La expansi\u00f3n del caos polinomial representa una salida del modelo como una suma ponderada de polinomios ortogonales. Considere una salida escalar y que depende de un vector de entrada x:<\/p>\n<pre><code>Y = M(X)\n<\/code><\/pre>\n<p>La aproximaci\u00f3n PCE reemplaza m(x) con un polinomio:<\/p>\n<pre><code>Y(X) \u2248 \u03a3 c\u2096 \u03a8\u2096(X)\n<\/code><\/pre>\n<p>Aqu\u00ed, \u03c8\u2096 son polinomios ortogonales multivariados y C\u2096 son coeficientes deterministas. El conjunto de polinomios debe ser ortogonal con respecto a la distribuci\u00f3n de probabilidad de entrada, y los coeficientes se determinan por el m\u00e9todo de estimaci\u00f3n elegido.<\/p>\n<h3>Polinomios ortogonales y coincidencia de distribuci\u00f3n<\/h3>\n<p>La familia polinomial est\u00e1 vinculada directamente a la distribuci\u00f3n de entrada. Esta no es una elecci\u00f3n de dise\u00f1o, es un requisito matem\u00e1tico para la ortogonalidad.<\/p>\n<table>\n<thead>\n<tr>\n<th>Distribuci\u00f3n<\/th>\n<th>Polinomio ortogonal<\/th>\n<th>Normalizaci\u00f3n<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>uniforme [-1, 1]<\/td>\n<td>leyenda<\/td>\n<td>P\u2099(\u03be) = (1\/N!)\u00b7D\u207f\/D\u03be\u207f[(\u03be\u00b2-1)\u207f]<\/td>\n<\/tr>\n<tr>\n<td>Normal Normal N(0,1)<\/td>\n<td>hermita<\/td>\n<td>H\u2099(\u03be) = (-1)\u207f\u00b7E<sup>(\u03be\u00b2\/2)\u00b7d\u207f\/d\u03be\u207f[e<\/sup>(-\u03be\u00b2\/2)]<\/td>\n<\/tr>\n<tr>\n<td>Exponencial \u03bb=1<\/td>\n<td>laguerre<\/td>\n<td>L\u2099(\u03be) = (1\/n!)\u00b7E^\u03be\u00b7d\u207f\/d\u03be\u207f[\u03be\u207f]<\/td>\n<\/tr>\n<tr>\n<td>beta [a, b]<\/td>\n<td>jacobi<\/td>\n<td>Polinomios Jacobi generalizados<\/td>\n<\/tr>\n<tr>\n<td>empoll\u00f3n<\/td>\n<td>charlat\u00e1n<\/td>\n<td>Polinomios ortogonales discretos<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>La condici\u00f3n de ortonormalidad indica:<\/p>\n<pre><code>\u222b \u03a8\u1d62(\u03be) \u03a8\u2c7c(\u03be) w(\u03be) d\u03be = \u03b4\u1d62\u2c7c\n<\/code><\/pre>\n<p>donde w(\u03be) es la densidad de probabilidad de la distribuci\u00f3n de entrada y \u0394\u1d62\u2c7c es el delta de kronecker. Cuando esta condici\u00f3n se mantiene, los coeficientes PCE se relacionan directamente con las estad\u00edsticas de salida a trav\u00e9s de la identidad de Parseval.<\/p>\n<h3>Construcci\u00f3n polin\u00f3mica multivariada<\/h3>\n<p>Cuando las entradas son independientes, la base polinomial multivariada es un producto tensor de polinomios univariados:<\/p>\n<pre><code>\u03a8\u2096(X) = \u03a0 \u03c8\u2096\u1d62(X\u1d62)\n<\/code><\/pre>\n<p>Para una base de grado total del orden P en D par\u00e1metros inciertos, el n\u00famero de t\u00e9rminos es:<\/p>\n<pre><code>N = (d + p)! \/ (d! \u00b7 p!)\n<\/code><\/pre>\n<p>Para 20 par\u00e1metros y orden tres, esto produce 1.771 t\u00e9rminos. Una regresi\u00f3n estable generalmente requiere m\u00e1s puntos de entrenamiento que los coeficientes, por lo que la demanda computacional crece r\u00e1pidamente.<\/p>\n<h2>PCE no intrusivo versus intrusivo<\/h2>\n<p>Hay dos enfoques fundamentalmente diferentes para construir un PCE. El enfoque no intrusivo trata al simulador como una caja negra. El enfoque intrusivo reformula las ecuaciones gobernantes.<\/p>\n<h3>PCE no intrusivo<\/h3>\n<p>PCE no intrusivo eval\u00faa el simulador determinista en puntos seleccionados en el espacio de incertidumbre y se ajusta a una regresi\u00f3n polinomial. El flujo de trabajo:<\/p>\n<ol>\n<li>Seleccione una base polinomial alineada con las distribuciones de entrada.<\/li>\n<li>Generar puntos de entrenamiento (cuadratura o muestreo).<\/li>\n<li>Ejecute el simulador en esos puntos.<\/li>\n<li>estimar los coeficientes de expansi\u00f3n.<\/li>\n<li>Validar en puntos de prueba independientes.<\/li>\n<\/ol>\n<p>Este enfoque no agrega ninguna modificaci\u00f3n del solucionador. Puede envolver un CFD, FEM, un campo de fase o un modelo molecular existente y obtener un PCE sustituto sin cambiar ning\u00fan c\u00f3digo interno.<\/p>\n<h3>PCE intrusivo (Galerkin estoc\u00e1stico)<\/h3>\n<p>PCE intrusivo sustituye la expansi\u00f3n polinomial directamente en las ecuaciones de gobierno y deriva un sistema determinista acoplado para los coeficientes. Para un modelo simple:<\/p>\n<pre><code>\u2202u\/\u2202t = L(u) + f \u2192 \u03a3 \u2202c\u2096\u03a8\u2096\/\u2202t = L(\u03a3 c\u2096\u03a8\u2096) + f\n<\/code><\/pre>\n<p>Despu\u00e9s de proyectar en cada funci\u00f3n de base, el sistema acoplado resuelve todos los coeficientes simult\u00e1neamente. Esto puede ser m\u00e1s eficiente porque utiliza la estructura completa de las ecuaciones, pero requiere modificar el solucionador para manejar el sistema acoplado. Para la mayor\u00eda de los flujos de trabajo de producci\u00f3n, el enfoque intrusivo no es pr\u00e1ctico: se prefiere el enfoque de regresi\u00f3n no intrusiva.<\/p>\n<h2>C\u00f3mo estimar los coeficientes PCE<\/h2>\n<p>El m\u00e9todo de estimaci\u00f3n del coeficiente determina tanto la precisi\u00f3n como el costo computacional. Hay tres enfoques principales.<\/p>\n<h3>Estimaci\u00f3n basada en regresi\u00f3n<\/h3>\n<p>El enfoque de regresi\u00f3n no intrusiva es el m\u00e1s utilizado. Muestra los puntos de entrada, eval\u00faa el modelo y se ajusta al polinomio por regresi\u00f3n lineal:<\/p>\n<pre><code>y \u2248 \u03a6 c\n<\/code><\/pre>\n<p>donde \u03c6 es la matriz de evaluaci\u00f3n polin\u00f3mica e y es el vector de evaluaciones de modelos. Si n_samples \u2265 n_terms, la soluci\u00f3n de m\u00ednimos cuadrados es:<\/p>\n<pre><code>c = (\u03a6\u1d40\u03a6)\u207b\u00b9 \u03a6\u1d40 y\n<\/code><\/pre>\n<p>Esto es sencillo de implementar con las caracter\u00edsticas polinomiales de scikit-learn:<\/p>\n<pre><code class=\"language-python\">import numpy as np\nfrom sklearn.preprocessing import PolynomialFeatures\nfrom sklearn.linear_model import Ridge\n\n# Training data: N_samples \u00d7 N_inputs\nX_train = np.random.uniform(-1, 1, (100, 3))\n\n# Polynomial features up to degree 2\npoly = PolynomialFeatures(degree=2, include_bias=False)\nPhi = poly.fit_transform(X_train)  # 100 \u00d7 10 matrix\n\n# Ridge regression (regularization stabilizes coefficient estimation)\nmodel = Ridge(alpha=1e-4)\nc = model.fit(Phi, y_train).coef_\n<\/code><\/pre>\n<p>La regresi\u00f3n con regularizaci\u00f3n (Ridge, Lazo) es num\u00e9ricamente estable y funciona bien para dimensiones moderadas. La desventaja es que la matriz de regresi\u00f3n se vuelve mal condicionada cuando el conjunto de entrenamiento es peque\u00f1o en relaci\u00f3n con el tama\u00f1o de la base.<\/p>\n<h3>Estimaci\u00f3n basada en cuadratura (f\u00f3rmula Gauss)<\/h3>\n<p>Cuando el \u00edndice de coeficiente k es unidimensional (un solo t\u00e9rmino polinomio), el coeficiente c\u2096 se puede calcular por cuadratura num\u00e9rica:<\/p>\n<pre><code>c\u2096 = \u222b M(X) \u03a8\u2096(X) w(X) dX \u2248 \u03a3\u1d62 M(X\u1d62) \u03a8\u2096(X\u1d62) w(X\u1d62) \/ ||\u03a8\u2096||\u00b2\n<\/code><\/pre>\n<p>Para PCE multivariado, se necesitan cuadr\u00edculas de cuadratura escasas. Este enfoque es exacto cuando el modelo es un polinomio de grado \u2264 2p, pero se vuelve poco pr\u00e1ctico en dimensiones altas porque el tama\u00f1o de la cuadr\u00edcula en cuadratura crece exponencialmente.<\/p>\n<h3>Basado en proyecci\u00f3n (colocaci\u00f3n estoc\u00e1stica)<\/h3>\n<p>La colocaci\u00f3n estoc\u00e1stica construye el PCE interpolando el modelo en puntos de colocaci\u00f3n seleccionados. El coeficiente del t\u00e9rmino k es:<\/p>\n<pre><code>c\u2096 = \u03a3\u1d62 M(X\u1d62) \u03a8\u2096(X\u1d62) \/ \u03a8\u2096(X\u1d62)\u00b2  (diagonal weight)\n<\/code><\/pre>\n<p>La colocaci\u00f3n evita el paso de integraci\u00f3n de la cuadratura y es computacionalmente eficiente cuando se utilizan cuadr\u00edculas escasas o estrategias de refinamiento adaptativo. Es el enfoque preferido cuando el simulador es lo suficientemente barato como para evaluar en todos los puntos de cuadratura.<\/p>\n<h2>M\u00e9todos de PCE escasos<\/h2>\n<p>La base polinomial completa crece combinatoriamente con la dimensi\u00f3n. Los m\u00e9todos de PCE escasos reducen el tama\u00f1o de base mientras conservan la precisi\u00f3n cuando la respuesta del modelo est\u00e1 dominada por interacciones de orden bajo.<\/p>\n<h3>Truncamiento hiperb\u00f3lico<\/h3>\n<p>La restricci\u00f3n de base hiperb\u00f3lica (HBR) con el par\u00e1metro q &lt; 1 L\u00edmites que se incluyen en varios \u00edndices:<\/p>\n<pre><code>\u2211 \u03b1\u1d62^(1\/q) \u2264 p\n<\/code><\/pre>\n<p>Cuando Q \u2192 1, el HBR se acerca a la base de grado total. Cuando Q \u2192 0, se acerca a la base generalizada de Pareto. El par\u00e1metro Q controla la compensaci\u00f3n entre el tama\u00f1o de base y la precisi\u00f3n. Para la mayor\u00eda de los modelos de ingenier\u00eda, Q = 0,5 a 0,7 proporciona una buena compresi\u00f3n al tiempo que conserva importantes t\u00e9rminos de interacci\u00f3n.<\/p>\n<p>El truncamiento hiperb\u00f3lico reduce una base de pedidos de 20 par\u00e1metros, de 1.771 t\u00e9rminos a aproximadamente 200-400 t\u00e9rminos dependiendo de q.<\/p>\n<h3>Lazo y regresi\u00f3n regularizada<\/h3>\n<p>Lasso (operador de selecci\u00f3n y contracci\u00f3n m\u00ednima absoluta) realiza regresi\u00f3n con una penalizaci\u00f3n L1:<\/p>\n<pre><code>min (||\u03a6c||\u00b2 + \u03bb ||c||\u2081)\n<\/code><\/pre>\n<p>La penalizaci\u00f3n L1 impulsa muchos coeficientes exactamente a cero, produciendo una soluci\u00f3n escasa. Elastic Net combina las penalidades de L1 y L2 para manejar los predictores correlacionados:<\/p>\n<pre><code>min (||\u03a6c||\u00b2 + \u03bb\u2081 ||c||\u2081 + \u03bb\u2082 ||c||\u2082\u00b2)\n<\/code><\/pre>\n<p>El PCE escaso basado en lazo se implementa en UQPY como <code>HyperbolicTruncLARS<\/code> (truncamiento hiperb\u00f3lico con regresi\u00f3n de m\u00ednimo \u00e1ngulo). El flujo de trabajo:<\/p>\n<pre><code class=\"language-python\">from uqpy.surrogates import HyperbolicTruncLARS\nfrom uqpy.distributions import MultivariateGaussian, Uniform\n\n# Define distributions\ndist = MultivariateGaussian(np.zeros(5), np.eye(5))\n\n# Generate samples and run model\nsamples = dist.sample(n=500)\ny_train = model_function(samples)\n\n# Build sparse PCE with q=0.5\npce = HyperbolicTruncLARS(distribution=dist, q=0.5, p=3)\npce.fit(samples, y_train)\n\n# Validate\nvalidation_samples = dist.sample(n=100)\ny_pred = pce.predict(validation_samples)\nrmse = np.sqrt(np.mean((y_pred - y_test)**2))\n<\/code><\/pre>\n<h3>Rejillas escasas de Smolyak<\/h3>\n<p>La construcci\u00f3n de Smolyak combina reglas de cuadratura univariadas utilizando la f\u00f3rmula de cuadr\u00edcula escasa:<\/p>\n<pre><code>Q\u2098 = \u03a3_{|k|=m} (-1)^(m-|k|) \u00b7 \u03a0\u1d62 Q_{k\u1d62}\n<\/code><\/pre>\n<p>donde q_d es el operador de cuadratura dimensional y |k| = \u03c3 k\u1d62. Las cuadr\u00edculas de Smolyak reducen el n\u00famero de puntos multidimensionales del crecimiento exponencial al polinomio en la dimensi\u00f3n. Son m\u00e1s efectivos cuando la respuesta es suave y dominan las interacciones de bajo orden.<\/p>\n<h2>Cuando el PCE es efectivo<\/h2>\n<p>PCE converge exponencialmente r\u00e1pido para obtener respuestas suaves del modelo. La tasa de convergencia depende de:<\/p>\n<ul>\n<li><strong>Suavidad<\/strong>: las respuestas anal\u00edticas convergen geom\u00e9tricamente. Las respuestas suaves por partes convergen algebraicamente.<\/li>\n<li><strong>Dimensi\u00f3n efectiva<\/strong>: incluso con 50 par\u00e1metros nominales, si solo 5 controlan la respuesta, PCE converge en 5 dimensiones.<\/li>\n<li><strong>Interacciones de par\u00e1metros<\/strong>: las interacciones fuertes de orden superior aumentan el tama\u00f1o de base requerido.<\/li>\n<li><strong>Calidad del dise\u00f1o experimental<\/strong>: las secuencias SOBOL o las cuadr\u00edculas escasas en cuadratura funcionan mejor que el muestreo aleatorio uniforme.<\/li>\n<\/ul>\n<h3>Contexto de referencia<\/h3>\n<ul>\n<li>PCE proporciona momentos anal\u00edticos e \u00edndices SOBOL una vez instalados, sin evaluaciones de modelos adicionales.<\/li>\n<li>El enfoque de regresi\u00f3n trata al simulador como una caja negra.<\/li>\n<li>Los m\u00e9todos escasos pueden extender PCE a ~50 par\u00e1metros inciertos cuando el modelo exhibe interacciones escasas.<\/li>\n<li>El ecosistema UQ de Python incluye CHAOSPY, UQPY, SALIB, SMT y la incertidumbre.<\/li>\n<\/ul>\n<h2>PCE vs Kriging vs redes neuronales<\/h2>\n<p>PCE es un sustituto entre muchos. Comprender las compensaciones le ayuda a elegir el m\u00e9todo correcto para su problema.<\/p>\n<table>\n<thead>\n<tr>\n<th>Dimensi\u00f3n<\/th>\n<th>M\u00e9todo<\/th>\n<th>Datos necesarios<\/th>\n<th>interpretabilidad<\/th>\n<th>dimensionalidad<\/th>\n<th>Extracci\u00f3n UQ<\/th>\n<th>\u00cdndices de Sobol<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>pe\u00f1atallo<\/td>\n<td>Regresi\u00f3n polin\u00f3mica \/ cuadrada<\/td>\n<td>N_T\u00e9rminos \u00d7 1.5<\/td>\n<td>Alto (coeficientes se asignan a la varianza)<\/td>\n<td>Moderado (escaso se extiende a ~50)<\/td>\n<td>Momentos anal\u00edticos exactos<\/td>\n<td>Exacto (agrupaci\u00f3n de coeficientes)<\/td>\n<\/tr>\n<tr>\n<td>Kriging (proceso gaussiano)<\/td>\n<td>Interpolaci\u00f3n basada en correlaci\u00f3n<\/td>\n<td>~10-50 \u00d7 d<\/td>\n<td>Medio (estructura de correlaci\u00f3n)<\/td>\n<td>Moderado bajo (~10-30)<\/td>\n<td>Intervalos de predicci\u00f3n<\/td>\n<td>No (se necesita derivada num\u00e9rica)<\/td>\n<\/tr>\n<tr>\n<td>Redes neuronales<\/td>\n<td>Arquitectura profunda \/ superficial<\/td>\n<td>Cientos a miles<\/td>\n<td>Bajo (caja negra)<\/td>\n<td>Alto (100+ posible)<\/td>\n<td>No (sin modelo UQ inherente)<\/td>\n<td>No (sensibilidad a trav\u00e9s de perturbaciones)<\/td>\n<\/tr>\n<tr>\n<td>Modelos de pedido reducido<\/td>\n<td>Proyecci\u00f3n \/ Adecuado ortogonal<\/td>\n<td>espec\u00edfico del problema<\/td>\n<td>Medio (vectores de proyecci\u00f3n)<\/td>\n<td>Alto (incrusta la f\u00edsica)<\/td>\n<td>No (proyecci\u00f3n determinista)<\/td>\n<td>No<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>PCE es el \u00fanico sustituto que da \u00edndices anal\u00edticos exactos de Sobol de los coeficientes. Kriging da intervalos de predicci\u00f3n pero requiere diferenciaci\u00f3n num\u00e9rica para la sensibilidad. Las redes neuronales requieren una sensibilidad basada en perturbaciones. Los modelos de orden reducido son proyecciones deterministas.<\/p>\n<h3>Cu\u00e1ndo elegir PCE<\/h3>\n<p>PCE es la mejor opci\u00f3n cuando:<\/p>\n<ol>\n<li><strong>Necesita momentos anal\u00edticos e \u00edndices de sensibilidad<\/strong>: los coeficientes le dan \u00edndices e[Y], var(y) y sobol sin c\u00e1lculo adicional.<\/li>\n<li><strong>La respuesta es suave y de baja dimensi\u00f3n<\/strong>: las respuestas anal\u00edticas convergen geom\u00e9tricamente en PCE.<\/li>\n<li><strong>Necesitas Monte Carlo r\u00e1pido en el sustituto<\/strong>: Una vez instalado, evaluar el polinomio es O(1). Esto es invaluable para el an\u00e1lisis de confiabilidad o la estimaci\u00f3n de probabilidad de umbral.<\/li>\n<li><strong>El simulador es moderadamente caro<\/strong>: si cada evaluaci\u00f3n toma minutos a horas, es factible un PCE de 100-500 puntos.<\/li>\n<\/ol>\n<h3>Cu\u00e1ndo evitar el PCE<\/h3>\n<p>Evite el PCE cuando:<\/p>\n<ol>\n<li><strong>La respuesta es discontinua<\/strong>: el fen\u00f3meno de Gibbs produce oscilaciones cerca de discontinuidades. Use PCE multielemento o un sustituto h\u00edbrido.<\/li>\n<li><strong>Necesita un modelo de alta dimensi\u00f3n<\/strong>: incluso el PCE escaso se vuelve inestable m\u00e1s all\u00e1 de ~50 par\u00e1metros sin escasez verificada.<\/li>\n<li><strong>La respuesta es altamente no lineal con un fuerte comportamiento de umbral<\/strong>: PCE suaviza los umbrales. Use Monte Carlo o QMC aleatorizado en su lugar.<\/li>\n<li><strong>Los datos son extremadamente escasos<\/strong>: con menos de 20 puntos de entrenamiento, el PCE no es confiable. Las superficies de respuesta polinomial o kriging pueden ser m\u00e1s robustas.<\/li>\n<\/ol>\n<h2>El fen\u00f3meno de Gibbs<\/h2>\n<p>El fen\u00f3meno de Gibbs es el modo de falla m\u00e1s fundamental del PCE est\u00e1ndar. Para respuestas discontinuas, eventos de umbral, cambios de contacto o fallas del solucionador, la aproximaci\u00f3n polinomial produce oscilaciones no f\u00edsicas cerca de la discontinuidad. Esto es matem\u00e1ticamente id\u00e9ntico a las oscilaciones observadas al aproximar una funci\u00f3n de paso con una serie de Fourier.<\/p>\n<p>Para una respuesta suave, PCE converge r\u00e1pidamente. Para una respuesta con una discontinuidad de un solo salto, el polinomio oscila con amplitud proporcional a la altura del salto y decayendo solo como 1\/\u221aN. Aumentar el orden polinomial empeora la oscilaci\u00f3n, no mejor.<\/p>\n<h3>Estrategias de mitigaci\u00f3n<\/h3>\n<p><strong>PCE de varios elementos (ME-PCE)<\/strong>: el dominio de entrada se divide en subregiones. Se instala un polinomio separado dentro de cada subregi\u00f3n, con la continuidad impuesta en los l\u00edmites. Este es el enfoque m\u00e1s fiable para las respuestas discontinuas.<\/p>\n<p><strong>H\u00edbrido polinomial de caos-kring<\/strong>: un PCE captura el componente suave de la respuesta, mientras que un modelo Kriging captura la discontinuidad residual. Esto aprovecha las fortalezas de ambos m\u00e9todos.<\/p>\n<p><strong>Caos polinomial racional<\/strong>: Las aproximaciones de Pad\u00e9-Legendre utilizan una proporci\u00f3n de polinomios en lugar de un solo polinomio. La forma racional puede representar saltos discontinuos con mayor precisi\u00f3n que un polinomio puro.<\/p>\n<p><strong>Descomposici\u00f3n del dominio de aprendizaje activo<\/strong>: Nov\u00e1k et al. (2023) introdujeron un enfoque secuencial donde el dominio de entrada se descompone iterativamente en funci\u00f3n del comportamiento del modelo en cada regi\u00f3n. Este es el enfoque m\u00e1s flexible para respuestas discontinuas complejas.<\/p>\n<h2>Gu\u00eda de implementaci\u00f3n de Python<\/h2>\n<h3>caramelo<\/h3>\n<p>Chaospy es una biblioteca enfocada para distribuciones de PCE y probabilidad. No tiene como objetivo ser un marco UQ todo en uno.<\/p>\n<pre><code class=\"language-python\">import chaospy as cp\nimport numpy as np\n\n# Independent uncertain parameters\ndistribution = cp.J(\n    cp.Uniform(0.8, 1.2),\n    cp.Normal(2.0, 0.1)\n)\n\n# Total-degree polynomial basis\norder = 3\nexpansion = cp.generate_expansion(order, distribution)\n\n# Experimental design (Sobol)\nsamples = distribution.sample(100, rule='sobol')\n\n# Model evaluations\ndef model(sample):\n    conductivity = sample[0]\n    source = sample[1]\n    return source \/ conductivity + 0.2 * conductivity**2\n\nevaluations = np.array([model(samples[:, i]) for i in range(samples.shape[1])])\n\n# Fit PCE by regression\napproximation = cp.fit_regression(expansion, samples.T, evaluations)\n\n# Extract statistics (analytical, no additional model evaluations)\nmean = cp.E(approximation, distribution)\nvariance = cp.Var(approximation, distribution)\nfirst_order = cp.Sens_m(approximation, distribution)\ntotal_order = cp.Sens_t(approximation, distribution)\n\nprint(f\"Mean: {mean}\")\nprint(f\"Standard deviation: {np.sqrt(variance)}\")\nprint(f\"First-order Sobol: {first_order}\")\nprint(f\"Total-order Sobol: {total_order}\")\n<\/code><\/pre>\n<h3>uqpy<\/h3>\n<p>UQPY proporciona PCE escasas, LARS y amplias utilidades de validaci\u00f3n.<\/p>\n<pre><code class=\"language-python\">from uqpy.distributions import MultivariateGaussian\nfrom uqpy.surrogates import HyperbolicTruncLARS, MonteCarlo\nimport numpy as np\n\n# Define distribution\ndist = MultivariateGaussian(np.zeros(5), np.eye(5))\n\n# Generate samples and run model\nsamples = dist.sample(n=500)\ny_train = np.array([model_function(x) for x in samples])\n\n# Build sparse PCE\npce = HyperbolicTruncLARS(distribution=dist, q=0.5, p=3)\npce.fit(samples, y_train)\n\n# Validate on independent test points\ntest_samples = dist.sample(n=100)\ny_pred = pce.predict(test_samples)\ny_test = np.array([model_function(x) for x in test_samples])\n\n# Root mean squared error\nrmse = np.sqrt(np.mean((y_pred - y_test)**2))\nprint(f\"RMSE: {rmse}\")\n\n# Monte Carlo uncertainty propagation on the surrogate\nn_mc = 10000\nmc_samples = dist.sample(n_mc)\nmc_predictions = pce.predict(mc_samples)\n\nmc_mean = np.mean(mc_predictions)\nmc_std = np.std(mc_predictions)\nprint(f\"MC propagation mean: {mc_mean}\")\nprint(f\"MC propagation std: {mc_std}\")\n<\/code><\/pre>\n<h3>PCE regularizado de Scikit<\/h3>\n<p>Para proyectos que ya usan Scikit-learn, Ridge o Lazo es sencillo.<\/p>\n<pre><code class=\"language-python\">import numpy as np\nfrom sklearn.preprocessing import PolynomialFeatures\nfrom sklearn.linear_model import Lasso\n\n# Generate Sobol samples\nN = 300\nd = 4\nfrom scipy.stats import qmc\nsampler = qmc.Sobol(d)\nsample = sampler.random(base2=np.ceil(np.log2(N)).astype(int))\n\n# Model evaluations\ny = np.array([model_function(row) for row in sample])\n\n# Polynomial features with hyperbolic truncation (manual basis selection)\npoly = PolynomialFeatures(degree=2, include_bias=False)\nPhi = poly.fit_transform(sample)\n\n# LASSO regression\nlasso = Lasso(alpha=1e-3)\nc = lasso.fit(Phi, y).coef_\n\nprint(f\"Non-zero coefficients: {np.sum(c != 0)} out of {len(c)}\")\nprint(f\"Coefficients: {c}\")\n<\/code><\/pre>\n<h2>Validaci\u00f3n de un sustituto de PCE<\/h2>\n<p>Nunca se debe confiar en un sustituto PCE sin validaci\u00f3n. Los coeficientes polin\u00f3micos proporcionan momentos exactos, pero esos momentos no tienen sentido si el sustituto no se aproxima al modelo con precisi\u00f3n.<\/p>\n<h3>Protocolo de validaci\u00f3n<\/h3>\n<ol>\n<li><strong>Generar puntos de validaci\u00f3n<\/strong>: independiente del entrenamiento. Use secuencias SOBOL o muestreo de hipercubo latino.<\/li>\n<li><strong>Compute RMSE y error m\u00e1ximo<\/strong>: compare las predicciones de PCE con las evaluaciones reales del modelo en los puntos de validaci\u00f3n.<\/li>\n<li><strong>Revise la precisi\u00f3n del momento<\/strong>: compare la media y la varianza extra\u00eddas de PCE con las estimaciones de Monte Carlo en el conjunto de validaci\u00f3n.<\/li>\n<li><strong>Monitor de estabilidad de la sensibilidad<\/strong>: si los \u00edndices SOBOL cambian significativamente entre el entrenamiento y la validaci\u00f3n, el PCE no est\u00e1 convergente.<\/li>\n<li><strong>Compruebe las oscilaciones de Gibbs<\/strong>: trace las predicciones de PCE contra una cuadr\u00edcula. Las oscilaciones no suaves indican un fallo de respuesta discontinuo.<\/li>\n<\/ol>\n<h3>Monitoreo de convergencia<\/h3>\n<p>Seguimiento del orden polinomial y n\u00famero de puntos de entrenamiento. A medida que ambos aumentan, el RMSE deber\u00eda disminuir mon\u00f3tonamente. Si RMSE se estanca o aumenta con un orden superior, la base es sobreajustar los datos de entrenamiento.<\/p>\n<pre><code class=\"language-python\"># Monitoring convergence as polynomial order increases\nfor order in [2, 3, 4, 5]:\n    expansion = cp.generate_expansion(order, distribution)\n    samples = distribution.sample(N)\n    evaluations = np.array([model(s) for s in samples])\n    pce = cp.fit_regression(expansion, samples.T, evaluations)\n    \n    # Validate\n    test = distribution.sample(N_test)\n    y_pred = np.array([pce(s) for s in test])\n    y_true = np.array([model(s) for s in test])\n    \n    rmse = np.sqrt(np.mean((y_pred - y_true)**2))\n    print(f\"Order {order}: RMSE = {rmse:.6f}\")\n<\/code><\/pre>\n<h2>Errores comunes y c\u00f3mo evitarlos<\/h2>\n<h3>1. Base polin\u00f3mica no coincidente<\/h3>\n<p>El uso de polinomios de Legendre para entradas gaussianas destruye la ortogonalidad. Los coeficientes se polarizan y el momento de extracci\u00f3n no es v\u00e1lido. Haga coincidir siempre la familia polinomial con la distribuci\u00f3n de entrada.<\/p>\n<h3>2. Sobreajuste de la base polin\u00f3mica<\/h3>\n<p>Una base de grado 5 en 10 par\u00e1metros tiene 2.002 t\u00e9rminos. Con 2.000 puntos de entrenamiento, la regresi\u00f3n es apenas estable. Utilice criterios de informaci\u00f3n (AIC, BIC) o de validaci\u00f3n cruzada para seleccionar el orden polin\u00f3mico.<\/p>\n<h3>3. Confiar en los momentos PCE sin validaci\u00f3n<\/h3>\n<p>La media y la varianza extra\u00edda de los coeficientes PCE son expresiones matem\u00e1ticas exactas. Pero solo son v\u00e1lidos si la aproximaci\u00f3n polinomial es precisa. Siempre valide contra puntos de prueba independientes antes de informar momentos.<\/p>\n<h3>4. Ignorar el fen\u00f3meno de Gibbs<\/h3>\n<p>Para respuestas discontinuas, el polinomio oscila cerca de discontinuidades. Informe el RMSE en una cuadr\u00edcula que incluye regiones de discontinuidad. Si RMSE est\u00e1 dominado por unos pocos puntos oscilatorios, el PCE no es v\u00e1lido.<\/p>\n<h3>5. Asumir la escasez sin verificar<\/h3>\n<p>El lazo o el truncamiento hiperb\u00f3lico asume que la respuesta del modelo est\u00e1 dominada por interacciones de orden bajo. Si el modelo real tiene fuertes interacciones de alto orden, el PCE escaso las extra\u00f1ar\u00e1. Verifique la escasez comparando las normas de coeficiente de bases completas frente a escasas.<\/p>\n<h2>Resumen y pr\u00f3ximos pasos<\/h2>\n<p>La expansi\u00f3n de caos polin\u00f3mico convierte un simulador determinista en un sustituto estoc\u00e1stico que proporciona acceso anal\u00edtico a estad\u00edsticas de salida, intervalos de incertidumbre e \u00edndices de sensibilidad. El m\u00e9todo sobresale cuando la respuesta es suave, la dimensionalidad es moderada y el costo computacional es lo suficientemente alto como para justificar la construcci\u00f3n de sustitutos.<\/p>\n<h3>Flujo de trabajo recomendado<\/h3>\n<ol>\n<li><strong>Verifique la convergencia num\u00e9rica<\/strong> del simulador determinista antes de UQ. El error de discretizaci\u00f3n y la incertidumbre num\u00e9rica deben establecerse antes de la propagaci\u00f3n.<\/li>\n<li><strong>Asignar distribuciones a partir de datos experimentales<\/strong> o juicio de experto documentado. No prefiera distribuciones uniformes.<\/li>\n<li><strong>Seleccione la base polinomial<\/strong> haciendo coincidir distribuciones con polinomios ortogonales. Verificar las condiciones de ortonormalidad.<\/li>\n<li><strong>Elija un m\u00e9todo de estimaci\u00f3n de coeficiente<\/strong>: regresi\u00f3n para PCE no intrusivo, cuadratura para casos eficientes de baja dimensi\u00f3n, colocaci\u00f3n para modelos baratos.<\/li>\n<li><strong>Validar el sustituto<\/strong> contra puntos de prueba independientes y monitorear la convergencia con el aumento del orden polinomial.<\/li>\n<li><strong>Informar momentos e \u00edndices de sensibilidad<\/strong> solo despu\u00e9s de la validaci\u00f3n. Incluya intervalos de confianza para las estad\u00edsticas estimadas.<\/li>\n<\/ol>\n<h3>Qu\u00e9 evitar<\/h3>\n<ul>\n<li>Uso de PCE para respuestas discontinuas sin mitigaci\u00f3n<\/li>\n<li>Suponiendo que el PCE escaso funciona para cada problema de alta dimensi\u00f3n<\/li>\n<li>Reportar momentos PCE sin validaci\u00f3n<\/li>\n<li>Confuso PCE no intrusivo con galerkin estoc\u00e1stico intrusivo<\/li>\n<li>Uso de bases polinomiales completas en problemas donde el tama\u00f1o de base excede el conjunto de entrenamiento<\/li>\n<\/ul>\n<h2>Gu\u00edas relacionadas<\/h2>\n<ul>\n<li><a href=\"https:\/\/matforge.org\/uncertainty-quantification-sensitivity-analysis-scientific-simulation\/\">Cuantificaci\u00f3n de incertidumbre y an\u00e1lisis de sensibilidad en simulaci\u00f3n cient\u00edfica<\/a> \u2014 Flujo de trabajo de UQ m\u00e1s amplio, an\u00e1lisis de sensibilidad de SOBOL, m\u00e9todos Monte Carlo y herramientas Python UQ.<\/li>\n<li><a href=\"https:\/\/matforge.org\/monte-carlo-methods-for-scientific-simulations\/\">M\u00e9todos Monte Carlo para simulaciones cient\u00edficas<\/a> \u2014 Compare el muestreo aleatorio, QMC, LHS y el comportamiento de convergencia contra PCE.<\/li>\n<li><a href=\"https:\/\/matforge.org\/machine-learning-surrogates-scientific-simulations\/\">Surrogate de aprendizaje autom\u00e1tico para simulaciones cient\u00edficas<\/a>: compilar y validar redes neuronales y procesos gaussianos sustitutos junto con PCE.<\/li>\n<li><a href=\"https:\/\/matforge.org\/verification-vs-validation-in-scientific-simulations-a-practical-guide\/\">Verificaci\u00f3n vs validaci\u00f3n en simulaciones cient\u00edficas<\/a> \u2014 Establecer convergencia num\u00e9rica antes de comenzar Una campa\u00f1a de UQ.<\/li>\n<\/ul>\n<h2>referencias<\/h2>\n<ul>\n<li>Caflisch, R. E., &amp; Mosolova, N. (1998). M\u00e9todos Monte Carlo y cuasi-Monte Carlo. Informe de CAM de UCLA.<\/li>\n<li>Nov\u00e1k et al. (2023). Dominio de aprendizaje activo Adaptativo Localizados sustitutos. <em>M\u00e9todos inform\u00e1ticos en mec\u00e1nica e ingenier\u00eda aplicadas<\/em>. <a href=\"https:\/\/www.sciencedirect.com\/science\/article\/abs\/pii\/S0888327023006362\" target=\"_blank\" rel=\"nofollow noopener\">doi<\/a><\/li>\n<li>Schneider (2023). Expansi\u00f3n racional del caos polin\u00f3mico. disertaci\u00f3n TUM. <a href=\"https:\/\/mediatum.ub.tum.de\/doc\/1779181\/o49dteqnqdu3dcf3r6r50dqfd.manuscript_final.pdf\" target=\"_blank\" rel=\"nofollow noopener\">PDF<\/a><\/li>\n<li>Diccionario Helmholtz UQ. Entrada de expansi\u00f3n de caos polin\u00f3mico. <a href=\"https:\/\/dictionary.helmholtz-uq.de\/content\/PCE.html\" target=\"_blank\" rel=\"nofollow noopener\">url<\/a><\/li>\n<li>Centro de Aprendizaje COMSOL. Teor\u00eda de modelado sustituto y PCE. <a href=\"https:\/\/www.comsol.com\/support\/learning-center\/course\/surrogate-modeling-theory-271\/more-on-pce-surrogate-models-97121\" target=\"_blank\" rel=\"nofollow noopener\">url<\/a><\/li>\n<\/ul>\n<h2>\u00bfNecesita ayuda para crear sustitutos de PCE para sus simulaciones?<\/h2>\n<p>Si est\u00e1 luchando con la implementaci\u00f3n del caos polinomial, la selecci\u00f3n de bases, la escasa regularizaci\u00f3n de PCE o la validaci\u00f3n de sustitutos, podemos ayudarlo. Nos especializamos en flujos de trabajo de cuantificaci\u00f3n de incertidumbre basados en Python y podemos guiarlo desde scripts PCE b\u00e1sicos hasta canalizaciones sustitutas de producci\u00f3n.<\/p>\n"},"excerpt":{"rendered":"<p><span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\"> 13<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span>La expansi\u00f3n del caos polinomial es una t\u00e9cnica de modelado sustituto que reemplaza una costosa simulaci\u00f3n con una serie de polinomios ortogonales cuyos coeficientes se pueden usar para estimar la incertidumbre directamente. Una vez instalado, un sustituto de PCE le brinda acceso anal\u00edtico a los medios de salida, las varianzas, los intervalos de confianza y [&hellip;]<\/p>\n","protected":false,"raw":""},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_locale":"es_ES","_original_post":"https:\/\/matforge.org\/?p=536","iawp_total_views":0,"footnotes":""},"categories":[2],"tags":[],"class_list":["post-777","post","type-post","status-publish","format-standard","hentry","category-fipy-documentation-examples-development","es-ES"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Expansiones de caos polin\u00f3micos: sustitutos r\u00e1pidos para la propagaci\u00f3n de la incertidumbre - matforge.org<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/matforge.org\/es\/polynomial-chaos-expansions-surrogate-methods\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Expansiones de caos polin\u00f3micos: sustitutos r\u00e1pidos para la propagaci\u00f3n de la incertidumbre - matforge.org\" \/>\n<meta property=\"og:description\" content=\"Reading Time:  13 minutesLa expansi\u00f3n del caos polinomial es una t\u00e9cnica de modelado sustituto que reemplaza una costosa simulaci\u00f3n con una serie de polinomios ortogonales cuyos coeficientes se pueden usar para estimar la incertidumbre directamente. Una vez instalado, un sustituto de PCE le brinda acceso anal\u00edtico a los medios de salida, las varianzas, los intervalos de confianza y [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/matforge.org\/es\/polynomial-chaos-expansions-surrogate-methods\/\" \/>\n<meta property=\"og:site_name\" content=\"matforge.org\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-30T12:21:43+00:00\" \/>\n<meta name=\"author\" content=\"Elena Markovska\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Elena Markovska\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/matforge.org\\\/es\\\/polynomial-chaos-expansions-surrogate-methods\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/es\\\/polynomial-chaos-expansions-surrogate-methods\\\/\"},\"author\":{\"name\":\"Elena Markovska\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/980162bb5de46742daece973661d93da\"},\"headline\":\"Expansiones de caos polin\u00f3micos: sustitutos r\u00e1pidos para la propagaci\u00f3n de la incertidumbre\",\"datePublished\":\"2026-07-30T12:21:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/es\\\/polynomial-chaos-expansions-surrogate-methods\\\/\"},\"wordCount\":3377,\"commentCount\":0,\"articleSection\":[\"Fipy: Documentaci\u00f3n, ejemplos &amp; Desarrollo\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/matforge.org\\\/es\\\/polynomial-chaos-expansions-surrogate-methods\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/matforge.org\\\/es\\\/polynomial-chaos-expansions-surrogate-methods\\\/\",\"url\":\"https:\\\/\\\/matforge.org\\\/es\\\/polynomial-chaos-expansions-surrogate-methods\\\/\",\"name\":\"Expansiones de caos polin\u00f3micos: sustitutos r\u00e1pidos para la propagaci\u00f3n de la incertidumbre - matforge.org\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#website\"},\"datePublished\":\"2026-07-30T12:21:43+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/980162bb5de46742daece973661d93da\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/es\\\/polynomial-chaos-expansions-surrogate-methods\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/matforge.org\\\/es\\\/polynomial-chaos-expansions-surrogate-methods\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/matforge.org\\\/es\\\/polynomial-chaos-expansions-surrogate-methods\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/matforge.org\\\/es\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Expansiones de caos polin\u00f3micos: sustitutos r\u00e1pidos para la propagaci\u00f3n de la incertidumbre\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#website\",\"url\":\"https:\\\/\\\/matforge.org\\\/\",\"name\":\"matforge.org\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/matforge.org\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/980162bb5de46742daece973661d93da\",\"name\":\"Elena Markovska\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2de4e35b6581d7d8a839335156c6b5834cfaa0aef537a1c837e882dc57eea1e7?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2de4e35b6581d7d8a839335156c6b5834cfaa0aef537a1c837e882dc57eea1e7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2de4e35b6581d7d8a839335156c6b5834cfaa0aef537a1c837e882dc57eea1e7?s=96&d=mm&r=g\",\"caption\":\"Elena Markovska\"},\"sameAs\":[\"http:\\\/\\\/matforge.org\"],\"url\":\"https:\\\/\\\/matforge.org\\\/author\\\/elena-markovska\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Expansiones de caos polin\u00f3micos: sustitutos r\u00e1pidos para la propagaci\u00f3n de la incertidumbre - matforge.org","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/matforge.org\/es\/polynomial-chaos-expansions-surrogate-methods\/","og_locale":"es_ES","og_type":"article","og_title":"Expansiones de caos polin\u00f3micos: sustitutos r\u00e1pidos para la propagaci\u00f3n de la incertidumbre - matforge.org","og_description":"Reading Time:  13 minutesLa expansi\u00f3n del caos polinomial es una t\u00e9cnica de modelado sustituto que reemplaza una costosa simulaci\u00f3n con una serie de polinomios ortogonales cuyos coeficientes se pueden usar para estimar la incertidumbre directamente. Una vez instalado, un sustituto de PCE le brinda acceso anal\u00edtico a los medios de salida, las varianzas, los intervalos de confianza y [&hellip;]","og_url":"https:\/\/matforge.org\/es\/polynomial-chaos-expansions-surrogate-methods\/","og_site_name":"matforge.org","article_published_time":"2026-07-30T12:21:43+00:00","author":"Elena Markovska","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Elena Markovska","Tiempo de lectura":"20 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/matforge.org\/es\/polynomial-chaos-expansions-surrogate-methods\/#article","isPartOf":{"@id":"https:\/\/matforge.org\/es\/polynomial-chaos-expansions-surrogate-methods\/"},"author":{"name":"Elena Markovska","@id":"https:\/\/matforge.org\/#\/schema\/person\/980162bb5de46742daece973661d93da"},"headline":"Expansiones de caos polin\u00f3micos: sustitutos r\u00e1pidos para la propagaci\u00f3n de la incertidumbre","datePublished":"2026-07-30T12:21:43+00:00","mainEntityOfPage":{"@id":"https:\/\/matforge.org\/es\/polynomial-chaos-expansions-surrogate-methods\/"},"wordCount":3377,"commentCount":0,"articleSection":["Fipy: Documentaci\u00f3n, ejemplos &amp; Desarrollo"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/matforge.org\/es\/polynomial-chaos-expansions-surrogate-methods\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/matforge.org\/es\/polynomial-chaos-expansions-surrogate-methods\/","url":"https:\/\/matforge.org\/es\/polynomial-chaos-expansions-surrogate-methods\/","name":"Expansiones de caos polin\u00f3micos: sustitutos r\u00e1pidos para la propagaci\u00f3n de la incertidumbre - matforge.org","isPartOf":{"@id":"https:\/\/matforge.org\/#website"},"datePublished":"2026-07-30T12:21:43+00:00","author":{"@id":"https:\/\/matforge.org\/#\/schema\/person\/980162bb5de46742daece973661d93da"},"breadcrumb":{"@id":"https:\/\/matforge.org\/es\/polynomial-chaos-expansions-surrogate-methods\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/matforge.org\/es\/polynomial-chaos-expansions-surrogate-methods\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/matforge.org\/es\/polynomial-chaos-expansions-surrogate-methods\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/matforge.org\/es\/"},{"@type":"ListItem","position":2,"name":"Expansiones de caos polin\u00f3micos: sustitutos r\u00e1pidos para la propagaci\u00f3n de la incertidumbre"}]},{"@type":"WebSite","@id":"https:\/\/matforge.org\/#website","url":"https:\/\/matforge.org\/","name":"matforge.org","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/matforge.org\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/matforge.org\/#\/schema\/person\/980162bb5de46742daece973661d93da","name":"Elena Markovska","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/2de4e35b6581d7d8a839335156c6b5834cfaa0aef537a1c837e882dc57eea1e7?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/2de4e35b6581d7d8a839335156c6b5834cfaa0aef537a1c837e882dc57eea1e7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2de4e35b6581d7d8a839335156c6b5834cfaa0aef537a1c837e882dc57eea1e7?s=96&d=mm&r=g","caption":"Elena Markovska"},"sameAs":["http:\/\/matforge.org"],"url":"https:\/\/matforge.org\/author\/elena-markovska\/"}]}},"_links":{"self":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/777","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/comments?post=777"}],"version-history":[{"count":1,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/777\/revisions"}],"predecessor-version":[{"id":947,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/777\/revisions\/947"}],"wp:attachment":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/media?parent=777"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/categories?post=777"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/tags?post=777"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}