[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6XGMWY3SJ5MKSE1EXXAYNFM":3,"skill-same:01M6XGMWY3SJ5MKSE1EXXAYNFM":78},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":58,"commitSha":59,"skillDirectory":60,"forksCount":14,"repositoryHtmlUrl":61,"repositoryHomepageUrl":6,"ownerHtmlUrl":62,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":63,"install":64,"resources":77},"01M6XGMWY3SJ5MKSE1EXXAYNFM","physics-fitting",null,"Nonlinear curve fitting for physics data with proper error propagation, chi-squared analysis, residual diagnostics, confidence intervals, and model comparison (AIC\u002FBIC). Use for any parameter extraction from experimental or simulation data.","fadrienne\u002FMyGitHub","fadrienne","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F197874571?v=4","01M6X64V8VWCRSMFZ4EPS2BWXG","Francesca Adrienne","01M6X64VD5MW4F9PHDWQKS7ZAF",0,"MIT","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fphysics\u002Fphysics-fitting\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"physics fitting","physics","confidence intervals","Nonlinear","for","with","comparison","chi","error","synthetic","propagation","analysis","estimation","scipy","numpy","use","regression","model","simulation","matplotlib","2026-11-10 10:12:30",false,"---\nname: physics-fitting\ndescription: Nonlinear curve fitting for physics data with proper error propagation, chi-squared analysis, residual diagnostics, confidence intervals, and model comparison (AIC\u002FBIC). Use for any parameter extraction from experimental or simulation data.\ncategory: physics\nversion: 1.0.0\nauthor: Synthetic Sciences\nlicense: MIT\ntags: [Curve Fitting, Regression, Chi-Squared, Error Propagation, Parameter Estimation, Physics]\ndependencies: [\"scipy>=1.11.0\", \"numpy>=1.24.0\", \"matplotlib>=3.7.0\", \"lmfit>=1.2.0\"]\n---\n\n# Physics Data Fitting\n\n## Overview\n\nExtract physical parameters from data using nonlinear least squares, chi-squared minimization, and Bayesian inference. Proper error propagation, residual analysis, confidence intervals, and model comparison included.\n\n## When to Use\n\n- Fitting a model function to experimental data\n- Extracting physical constants from measurements\n- Comparing competing models (which theory fits better?)\n- Propagating measurement uncertainties to derived quantities\n- Any parameter estimation with proper error bars\n\n## Do NOT Use When\n\n- You need MCMC \u002F full posterior distributions (use `bayesian-inference` with emcee\u002FPyMC)\n- You're discovering the model itself (use `symbolic-regression`)\n- Data is a time series from an ODE (use `ode-solver` + this skill)\n\n## Core Workflows\n\n### 1. Basic Nonlinear Fit (scipy)\n\n```python\nimport numpy as np\nfrom scipy.optimize import curve_fit\nimport matplotlib.pyplot as plt\n\n# Model function\ndef exponential_decay(t, A, tau, C):\n    \"\"\"y = A * exp(-t\u002Ftau) + C\"\"\"\n    return A * np.exp(-t \u002F tau) + C\n\n# Data with uncertainties\nt_data = np.array([0.5, 1, 2, 3, 5, 7, 10, 15, 20])\ny_data = np.array([9.8, 8.1, 5.5, 3.9, 2.1, 1.3, 0.7, 0.35, 0.22])\ny_err = np.array([0.3, 0.2, 0.2, 0.15, 0.1, 0.1, 0.08, 0.05, 0.04])\n\n# Fit with uncertainties\npopt, pcov = curve_fit(exponential_decay, t_data, y_data,\n                       sigma=y_err, absolute_sigma=True,\n                       p0=[10, 3, 0.1])  # initial guess\n\n# Extract parameters with uncertainties\nperr = np.sqrt(np.diag(pcov))\nA, tau, C = popt\ndA, dtau, dC = perr\nprint(f\"A   = {A:.3f} ± {dA:.3f}\")\nprint(f\"τ   = {tau:.3f} ± {dtau:.3f}\")\nprint(f\"C   = {C:.3f} ± {dC:.3f}\")\n\n# Chi-squared\nresiduals = (y_data - exponential_decay(t_data, *popt)) \u002F y_err\nchi2 = np.sum(residuals**2)\nndof = len(t_data) - len(popt)\nchi2_red = chi2 \u002F ndof\nprint(f\"χ²\u002Fndof = {chi2:.2f}\u002F{ndof} = {chi2_red:.2f}\")\n```\n\n### 2. Advanced Fitting with lmfit\n\n```python\nfrom lmfit import Model, Parameters\n\nmodel = Model(exponential_decay)\nparams = Parameters()\nparams.add('A', value=10, min=0)         # bounded\nparams.add('tau', value=3, min=0.01)     # positive definite\nparams.add('C', value=0, min=-1, max=1)  # bounded\n\nresult = model.fit(y_data, params, t=t_data,\n                   weights=1\u002Fy_err)\n\n# Full report\nprint(result.fit_report())\n\n# Confidence intervals (profile likelihood)\nci = result.conf_interval()\nprint(\"\\nConfidence Intervals:\")\nfor name in result.params:\n    print(f\"  {name}: {ci[name]}\")\n\n# Plot with confidence band\nfig, axes = plt.subplots(2, 1, figsize=(10, 8), gridspec_kw={'height_ratios': [3, 1]})\n\nt_fine = np.linspace(0, 22, 200)\n\nax = axes[0]\nax.errorbar(t_data, y_data, yerr=y_err, fmt='ko', capsize=3, label='Data')\nax.plot(t_fine, exponential_decay(t_fine, *popt), 'r-', linewidth=2, label='Best fit')\n\n# Confidence band via parameter covariance\nfrom scipy.stats import t as t_dist\nn_boot = 1000\ny_samples = np.zeros((n_boot, len(t_fine)))\nrng = np.random.default_rng(42)\nfor i in range(n_boot):\n    p_sample = rng.multivariate_normal(popt, pcov)\n    y_samples[i] = exponential_decay(t_fine, *p_sample)\ny_lo = np.percentile(y_samples, 2.5, axis=0)\ny_hi = np.percentile(y_samples, 97.5, axis=0)\nax.fill_between(t_fine, y_lo, y_hi, alpha=0.2, color='red', label='95% CI')\nax.set_ylabel('y', fontsize=13)\nax.legend(fontsize=11)\nax.grid(True, alpha=0.3)\n\n# Residuals\nax = axes[1]\nax.errorbar(t_data, residuals, yerr=1, fmt='ko', capsize=3)\nax.axhline(0, color='r', linestyle='--')\nax.set_xlabel('t', fontsize=13)\nax.set_ylabel('Residual (σ)', fontsize=13)\nax.grid(True, alpha=0.3)\n\nplt.tight_layout()\nplt.savefig('fit_with_residuals.png', dpi=150, bbox_inches='tight')\n```\n\n### 3. Model Comparison (AIC \u002F BIC)\n\n```python\ndef model_comparison(models, data_x, data_y, data_err):\n    \"\"\"Compare models using AIC and BIC.\"\"\"\n    results = []\n\n    for name, func, p0 in models:\n        try:\n            popt, pcov = curve_fit(func, data_x, data_y,\n                                   sigma=data_err, absolute_sigma=True, p0=p0)\n            residuals = (data_y - func(data_x, *popt)) \u002F data_err\n            chi2 = np.sum(residuals**2)\n            n = len(data_y)\n            k = len(popt)\n            ndof = n - k\n\n            # Log-likelihood (Gaussian errors)\n            log_L = -0.5 * chi2 - 0.5 * n * np.log(2*np.pi) - np.sum(np.log(data_err))\n\n            aic = 2*k - 2*log_L\n            bic = k*np.log(n) - 2*log_L\n\n            results.append({\n                'name': name, 'k': k, 'chi2': chi2,\n                'chi2_red': chi2\u002Fndof, 'AIC': aic, 'BIC': bic\n            })\n        except RuntimeError:\n            results.append({'name': name, 'k': 0, 'chi2': np.inf,\n                           'chi2_red': np.inf, 'AIC': np.inf, 'BIC': np.inf})\n\n    # Print comparison\n    print(f\"{'Model':\u003C20} {'k':\u003C4} {'χ²\u002Fndof':\u003C10} {'AIC':\u003C10} {'BIC':\u003C10}\")\n    print(\"-\" * 54)\n    for r in sorted(results, key=lambda x: x['AIC']):\n        print(f\"{r['name']:\u003C20} {r['k']:\u003C4} {r['chi2_red']:\u003C10.3f} {r['AIC']:\u003C10.2f} {r['BIC']:\u003C10.2f}\")\n\n    return results\n\n# Example: compare exponential vs power law\ndef power_law(t, A, n, C):\n    return A * t**(-n) + C\n\nmodels = [\n    ('Exponential', exponential_decay, [10, 3, 0.1]),\n    ('Power law', power_law, [10, 1, 0.1]),\n]\nmodel_comparison(models, t_data, y_data, y_err)\n```\n\n### 4. Error Propagation\n\n```python\ndef error_propagation(func, params, cov_matrix, *args):\n    \"\"\"\n    Propagate parameter uncertainties through a function.\n    Uses the Jacobian: σ²_f = J^T · Σ · J\n    \"\"\"\n    eps = 1e-8\n    f0 = func(params, *args)\n    n_params = len(params)\n\n    # Compute Jacobian numerically\n    J = np.zeros((np.size(f0), n_params))\n    for i in range(n_params):\n        p_up = params.copy()\n        p_up[i] += eps\n        J[:, i] = (func(p_up, *args) - f0) \u002F eps\n\n    # Propagate: Σ_f = J Σ_p J^T\n    cov_f = J @ cov_matrix @ J.T\n\n    return f0, np.sqrt(np.diag(cov_f))\n\n# Example: compute half-life from decay constant\ndef half_life(params):\n    tau = params[1]  # decay time\n    return np.array([tau * np.log(2)])\n\nt_half, dt_half = error_propagation(half_life, popt, pcov)\nprint(f\"Half-life: {t_half[0]:.3f} ± {dt_half[0]:.3f}\")\n```\n\n## Goodness-of-Fit Reference\n\n| χ²\u002Fndof | Interpretation |\n|---|---|\n| ≈ 1 | Good fit — model matches data within uncertainties |\n| ≪ 1 | Overfitting or overestimated uncertainties |\n| ≫ 1 | Poor fit — model inadequate or underestimated uncertainties |\n| 0.5 - 2.0 | Acceptable range for most physics analyses |\n\n## Common Pitfalls\n\n| Pitfall | Fix |\n|---|---|\n| `absolute_sigma=False` (default!) | Always set `absolute_sigma=True` when you have real error bars |\n| Bad initial guess → wrong minimum | Try multiple starting points or use `lmfit` bounds |\n| Correlated parameters | Check off-diagonal elements of covariance matrix |\n| Non-Gaussian residuals | Plot residual histogram, consider robust fitting |\n| Overfitting (too many parameters) | Use AIC\u002FBIC for model selection |\n| Ignoring systematic errors | Report systematics separately from statistical errors |\n","# Physics Data Fitting\n\n## Overview\n\nExtract physical parameters from data using nonlinear least squares, chi-squared minimization, and Bayesian inference. Proper error propagation, residual analysis, confidence intervals, and model comparison included.\n\n## When to Use\n\n- Fitting a model function to experimental data\n- Extracting physical constants from measurements\n- Comparing competing models (which theory fits better?)\n- Propagating measurement uncertainties to derived quantities\n- Any parameter estimation with proper error bars\n\n## Do NOT Use When\n\n- You need MCMC \u002F full posterior distributions (use `bayesian-inference` with emcee\u002FPyMC)\n- You're discovering the model itself (use `symbolic-regression`)\n- Data is a time series from an ODE (use `ode-solver` + this skill)\n\n## Core Workflows\n\n### 1. Basic Nonlinear Fit (scipy)\n\n```python\nimport numpy as np\nfrom scipy.optimize import curve_fit\nimport matplotlib.pyplot as plt\n\n# Model function\ndef exponential_decay(t, A, tau, C):\n    \"\"\"y = A * exp(-t\u002Ftau) + C\"\"\"\n    return A * np.exp(-t \u002F tau) + C\n\n# Data with uncertainties\nt_data = np.array([0.5, 1, 2, 3, 5, 7, 10, 15, 20])\ny_data = np.array([9.8, 8.1, 5.5, 3.9, 2.1, 1.3, 0.7, 0.35, 0.22])\ny_err = np.array([0.3, 0.2, 0.2, 0.15, 0.1, 0.1, 0.08, 0.05, 0.04])\n\n# Fit with uncertainties\npopt, pcov = curve_fit(exponential_decay, t_data, y_data,\n                       sigma=y_err, absolute_sigma=True,\n                       p0=[10, 3, 0.1])  # initial guess\n\n# Extract parameters with uncertainties\nperr = np.sqrt(np.diag(pcov))\nA, tau, C = popt\ndA, dtau, dC = perr\nprint(f\"A   = {A:.3f} ± {dA:.3f}\")\nprint(f\"τ   = {tau:.3f} ± {dtau:.3f}\")\nprint(f\"C   = {C:.3f} ± {dC:.3f}\")\n\n# Chi-squared\nresiduals = (y_data - exponential_decay(t_data, *popt)) \u002F y_err\nchi2 = np.sum(residuals**2)\nndof = len(t_data) - len(popt)\nchi2_red = chi2 \u002F ndof\nprint(f\"χ²\u002Fndof = {chi2:.2f}\u002F{ndof} = {chi2_red:.2f}\")\n```\n\n### 2. Advanced Fitting with lmfit\n\n```python\nfrom lmfit import Model, Parameters\n\nmodel = Model(exponential_decay)\nparams = Parameters()\nparams.add('A', value=10, min=0)         # bounded\nparams.add('tau', value=3, min=0.01)     # positive definite\nparams.add('C', value=0, min=-1, max=1)  # bounded\n\nresult = model.fit(y_data, params, t=t_data,\n                   weights=1\u002Fy_err)\n\n# Full report\nprint(result.fit_report())\n\n# Confidence intervals (profile likelihood)\nci = result.conf_interval()\nprint(\"\\nConfidence Intervals:\")\nfor name in result.params:\n    print(f\"  {name}: {ci[name]}\")\n\n# Plot with confidence band\nfig, axes = plt.subplots(2, 1, figsize=(10, 8), gridspec_kw={'height_ratios': [3, 1]})\n\nt_fine = np.linspace(0, 22, 200)\n\nax = axes[0]\nax.errorbar(t_data, y_data, yerr=y_err, fmt='ko', capsize=3, label='Data')\nax.plot(t_fine, exponential_decay(t_fine, *popt), 'r-', linewidth=2, label='Best fit')\n\n# Confidence band via parameter covariance\nfrom scipy.stats import t as t_dist\nn_boot = 1000\ny_samples = np.zeros((n_boot, len(t_fine)))\nrng = np.random.default_rng(42)\nfor i in range(n_boot):\n    p_sample = rng.multivariate_normal(popt, pcov)\n    y_samples[i] = exponential_decay(t_fine, *p_sample)\ny_lo = np.percentile(y_samples, 2.5, axis=0)\ny_hi = np.percentile(y_samples, 97.5, axis=0)\nax.fill_between(t_fine, y_lo, y_hi, alpha=0.2, color='red', label='95% CI')\nax.set_ylabel('y', fontsize=13)\nax.legend(fontsize=11)\nax.grid(True, alpha=0.3)\n\n# Residuals\nax = axes[1]\nax.errorbar(t_data, residuals, yerr=1, fmt='ko', capsize=3)\nax.axhline(0, color='r', linestyle='--')\nax.set_xlabel('t', fontsize=13)\nax.set_ylabel('Residual (σ)', fontsize=13)\nax.grid(True, alpha=0.3)\n\nplt.tight_layout()\nplt.savefig('fit_with_residuals.png', dpi=150, bbox_inches='tight')\n```\n\n### 3. Model Comparison (AIC \u002F BIC)\n\n```python\ndef model_comparison(models, data_x, data_y, data_err):\n    \"\"\"Compare models using AIC and BIC.\"\"\"\n    results = []\n\n    for name, func, p0 in models:\n        try:\n            popt, pcov = curve_fit(func, data_x, data_y,\n                                   sigma=data_err, absolute_sigma=True, p0=p0)\n            residuals = (data_y - func(data_x, *popt)) \u002F data_err\n            chi2 = np.sum(residuals**2)\n            n = len(data_y)\n            k = len(popt)\n            ndof = n - k\n\n            # Log-likelihood (Gaussian errors)\n            log_L = -0.5 * chi2 - 0.5 * n * np.log(2*np.pi) - np.sum(np.log(data_err))\n\n            aic = 2*k - 2*log_L\n            bic = k*np.log(n) - 2*log_L\n\n            results.append({\n                'name': name, 'k': k, 'chi2': chi2,\n                'chi2_red': chi2\u002Fndof, 'AIC': aic, 'BIC': bic\n            })\n        except RuntimeError:\n            results.append({'name': name, 'k': 0, 'chi2': np.inf,\n                           'chi2_red': np.inf, 'AIC': np.inf, 'BIC': np.inf})\n\n    # Print comparison\n    print(f\"{'Model':\u003C20} {'k':\u003C4} {'χ²\u002Fndof':\u003C10} {'AIC':\u003C10} {'BIC':\u003C10}\")\n    print(\"-\" * 54)\n    for r in sorted(results, key=lambda x: x['AIC']):\n        print(f\"{r['name']:\u003C20} {r['k']:\u003C4} {r['chi2_red']:\u003C10.3f} {r['AIC']:\u003C10.2f} {r['BIC']:\u003C10.2f}\")\n\n    return results\n\n# Example: compare exponential vs power law\ndef power_law(t, A, n, C):\n    return A * t**(-n) + C\n\nmodels = [\n    ('Exponential', exponential_decay, [10, 3, 0.1]),\n    ('Power law', power_law, [10, 1, 0.1]),\n]\nmodel_comparison(models, t_data, y_data, y_err)\n```\n\n### 4. Error Propagation\n\n```python\ndef error_propagation(func, params, cov_matrix, *args):\n    \"\"\"\n    Propagate parameter uncertainties through a function.\n    Uses the Jacobian: σ²_f = J^T · Σ · J\n    \"\"\"\n    eps = 1e-8\n    f0 = func(params, *args)\n    n_params = len(params)\n\n    # Compute Jacobian numerically\n    J = np.zeros((np.size(f0), n_params))\n    for i in range(n_params):\n        p_up = params.copy()\n        p_up[i] += eps\n        J[:, i] = (func(p_up, *args) - f0) \u002F eps\n\n    # Propagate: Σ_f = J Σ_p J^T\n    cov_f = J @ cov_matrix @ J.T\n\n    return f0, np.sqrt(np.diag(cov_f))\n\n# Example: compute half-life from decay constant\ndef half_life(params):\n    tau = params[1]  # decay time\n    return np.array([tau * np.log(2)])\n\nt_half, dt_half = error_propagation(half_life, popt, pcov)\nprint(f\"Half-life: {t_half[0]:.3f} ± {dt_half[0]:.3f}\")\n```\n\n## Goodness-of-Fit Reference\n\n| χ²\u002Fndof | Interpretation |\n|---|---|\n| ≈ 1 | Good fit — model matches data within uncertainties |\n| ≪ 1 | Overfitting or overestimated uncertainties |\n| ≫ 1 | Poor fit — model inadequate or underestimated uncertainties |\n| 0.5 - 2.0 | Acceptable range for most physics analyses |\n\n## Common Pitfalls\n\n| Pitfall | Fix |\n|---|---|\n| `absolute_sigma=False` (default!) | Always set `absolute_sigma=True` when you have real error bars |\n| Bad initial guess → wrong minimum | Try multiple starting points or use `lmfit` bounds |\n| Correlated parameters | Check off-diagonal elements of covariance matrix |\n| Non-Gaussian residuals | Plot residual histogram, consider robust fitting |\n| Overfitting (too many parameters) | Use AIC\u002FBIC for model selection |\n| Ignoring systematic errors | Report systematics separately from statistical errors |\n",{"name":5,"tags":44,"author":51,"license":15,"version":52,"category":20,"description":7,"dependencies":53},[45,46,47,48,49,50],"Curve Fitting","Regression","Chi-Squared","Error Propagation","Parameter Estimation","Physics","Synthetic Sciences","1.0.0",[54,55,56,57],"scipy>=1.11.0","numpy>=1.24.0","matplotlib>=3.7.0","lmfit>=1.2.0","main","4aa39efd1cdab0b4657ecee16c92a92011a5b10f","openscience\u002Fbackend\u002Fcli\u002Fskills\u002Fphysics\u002Fphysics-fitting","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub","https:\u002F\u002Fgithub.com\u002Ffadrienne","2026-10-28 00:43:09",{"source":8,"skillName":5,"commands":65,"prompt":75,"zipAvailable":76},[66,69,72],{"tool":67,"command":68},"npx","npx skills add fadrienne\u002FMyGitHub --skill physics-fitting",{"tool":70,"command":71},"bunx","bunx skills add fadrienne\u002FMyGitHub --skill physics-fitting",{"tool":73,"command":74},"pnpm","pnpm dlx skills add fadrienne\u002FMyGitHub --skill physics-fitting","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fphysics\u002Fphysics-fitting\u002FSKILL.md",true,[],[79,107,131,165,191,218],{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":90,"publishedAt":39},"01M7167B28PK20HP7R7ZED2DY0","statistical-power","Sample size calculation, power analysis, and effect size conversion for scientific studies. Use BEFORE data collection (a priori) to determine required N, or after (post-hoc) to compute achieved power. Covers parametric tests (t-test, ANOVA, chi-square, proportions, correlation, regression), simulation-based power for complex\u002Fclustered\u002Fnested designs, and power curves. Use this skill when someone asks 'how many samples do I need', 'what is my power', 'what effect size can I detect', or any variant. Pairs with \u002Fexperimental-design (choose design first, then compute power) and \u002Fstatistical-analysis (analyze data after collection).","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fstatistical-power\u002FSKILL.md",[85],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[91,92,93,32,35,94,95,96,97,98,99,30,100,101,102,103,104,105,37,106],"power","statistical power","effect","choose","design","uv","when","Bash","collection","calculation","ANOVA","conversion","analyze","t-test","chi-square","sample",{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":116,"publishedAt":39},"01M71677EBCM8EPCE9BZCK8505","statistical-analysis","Guided statistical analysis with test selection and reporting. Use when you need help choosing appropriate tests for your data, assumption checking, power analysis, and APA-formatted results. Best for academic research reporting, test selection guidance. For implementing specific models programmatically use statsmodels.","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fstatistical-analysis\u002FSKILL.md",[113],{"categoryNo":114,"categoryName":115,"taxonomyType":88,"taxonomyTypeDesc":89},"01JBSEEDCAT000000000000008","测试与质量",[30,117,91,118,119,120,97,121,122,123,23,124,34,24,125,126,127,128,129,130],"statistical analysis","academic research","implementing","selection","you","reporting","data","tests","test","research","results","statsmodels","models","help",{"skillNo":132,"name":133,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":146,"publishedAt":39},"01M71673R93XAHFH81DBNVNG7H","scientific-writing","Core skill for the deep research and writing tool. Write scientific manuscripts in full paragraphs (never bullet points). Use two-stage process with (1) section outlines with key points using research-lookup then (2) convert to flowing prose. IMRAD structure, citations (APA\u002FAMA\u002FVancouver), figures\u002Ftables, reporting guidelines (CONSORT\u002FSTROBE\u002FPRISMA), for research papers and journal submissions.","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fscientific-writing\u002FSKILL.md",[137,140,141],{"categoryNo":138,"categoryName":139,"taxonomyType":88,"taxonomyTypeDesc":89},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},{"categoryNo":142,"categoryName":143,"taxonomyType":144,"taxonomyTypeDesc":145},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[147,148,149,150,151,152,153,154,155,156,98,157,158,159,160,161,162,163,122,164],"writing","scientific","scientific writing","Citations","deep","deep research","never","papers","journal","false","api","prisma","structure","openrouter","Outlines","core skill","read","features",{"skillNo":166,"name":167,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":169,"categories":170,"keywords":175,"publishedAt":39},"01M7166ZPKXBF4EBPHVTJPQBB1","scientific-visualization","Meta-skill for publication-ready figures. Use when creating journal submission figures requiring multi-panel layouts, significance annotations, error bars, colorblind-safe palettes, and specific journal formatting (Nature, Science, Cell). Orchestrates matplotlib\u002Fseaborn\u002Fplotly with publication styles. For quick exploration use seaborn or plotly directly.","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fscientific-visualization\u002FSKILL.md",[171,174],{"categoryNo":172,"categoryName":173,"taxonomyType":88,"taxonomyTypeDesc":89},"01JBSEEDCAT000000000000013","分析与可视化",{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},[176,148,177,27,178,179,180,181,182,155,97,183,184,185,186,187,188,189,23,190],"visualization","scientific visualization","ready","quick","exploration","meta-skill","Meta","safe","plotly","annotations","formatting","Publication","figures","panel","submission",{"skillNo":192,"name":193,"nameZh":6,"description":194,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":195,"categories":196,"keywords":203,"publishedAt":39},"01M7166VXJWQSSC3RQZP60WBGR","research-code","Debug, profile, review, and restructure Python research and analysis code. Use when analysis scripts crash, produce wrong results, run too slowly, or need a correctness review. Covers: reading tracebacks and diagnosing root causes, hypothesis-driven debugging, reviewing code for common statistical\u002Fnumerical errors, profiling data pipelines, improving reproducibility (seeds, environments, determinism), and structuring analysis scripts for sharing. Distinct from \u002Fexploratory-data-analysis (which understands data) and \u002Fstatistical-analysis (which chooses and runs tests) — this skill focuses on the code itself.","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fresearch-code\u002FSKILL.md",[197,200],{"categoryNo":198,"categoryName":199,"taxonomyType":88,"taxonomyTypeDesc":89},"01JBSEEDCAT000000000000021","资料检索与研究",{"categoryNo":201,"categoryName":202,"taxonomyType":144,"taxonomyTypeDesc":145},"01JBSEEDCAT000000000000030","开发工程师",[204,205,126,206,207,208,209,96,210,97,98,30,211,212,213,214,215,216,163,217],"code","research code","which","memory","data-analysis","errors","debugging","common","review","data pipelines","run","scripts","line","write",{"skillNo":219,"name":220,"nameZh":6,"description":221,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":222,"licenseFileUrl":6,"sourceHtmlUrl":223,"categories":224,"keywords":231,"publishedAt":39},"01M7166CF5HSR7SVZYZFWTDX55","markdown-mermaid-writing","Comprehensive markdown and Mermaid diagram writing skill. Use when creating any scientific document, report, analysis, or visualization. Establishes text-based diagrams as the default documentation standard with full style guides (markdown + mermaid), 24 diagram type references, and 9 document templates.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fmarkdown-mermaid-writing\u002FSKILL.md",[225,228,229,230],{"categoryNo":226,"categoryName":227,"taxonomyType":88,"taxonomyTypeDesc":89},"01JBSEEDCAT000000000000002","文档处理",{"categoryNo":138,"categoryName":139,"taxonomyType":88,"taxonomyTypeDesc":89},{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},{"categoryNo":142,"categoryName":143,"taxonomyType":144,"taxonomyTypeDesc":145},[147,232,233,234,235,236,176,237,238,97,98,30,239,240,241,242,243,244,148,163],"markdown mermaid writing","mermaid","markdown","community","diagrams","project","default","team","guides","text","documentation","references","diagram"]