← 返回题库
初级

存货估测:线性回归方程建立(最小二乘法)

未完成
初级参考 完整示例代码供参考,建议自己理解后重新输入
"""
金融风险管理 - q030
存货估测:线性回归方程建立
"""

metadata = {
    "id": "q030",
    "title": "存货估测:线性回归方程建立(最小二乘法)",
    "module": "存货估测与回归分析",
    "difficulty": "beginner",
    "data_files": ["case33_fry_cost.csv"],
    "skills": ["线性回归", "最小二乘法", "numpy/scipy"],
    "estimated_minutes": 10
}

"""
【题目】
读取case33_fry_cost.csv,建立存货账面成本与前3年累计投放量的线性回归模型:
Y = a + b * X
(Y = 账面结存成本(万元),X = 前3年累计投放(万kg))

使用numpy.polyfit拟合。

输出字符串(保留4位小数):
回归方程: Y = {a} + {b}X
截距(a): {a}
斜率(b): {b}
"""

def solve():
    import pandas as pd
    import numpy as np
    from pyodide.http import open_url
    from io import StringIO

    BASE_URL = "https://data.zuihe.com/finance/"
    df = pd.read_csv(StringIO(open_url(BASE_URL + "case33_fry_cost.csv").read()))

    x = df['cumulative_3yr_stocking'].values
    y = df['book_cost'].values

    coeffs = np.polyfit(x, y, 1)
    b = round(coeffs[0], 4)
    a = round(coeffs[1], 4)

    lines = [
        f"回归方程: Y = {a} + {b}X",
        f"截距(a): {a}",
        f"斜率(b): {b}",
    ]
    return '
'.join(lines)

if __name__ == "__main__":
    print(solve())

示例

输入
solve()
期望输出
回归方程: Y = 3029.1929 + -9.7709X | 截距(a): 3029.1929 | 斜率(b): -9.7709
Python 代码 🔒 登录后使用
🔒

登录后即可练习

注册免费账号,在浏览器中直接运行 Python 代码