You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Julia中adj_price[i, :] \ t是否返回一元线性回归系数?

Julia中adj_price[i, :] \ t能否获取一元线性回归的梯度系数?

你的代码里adj_price[i, :] \ t不能得到你想要的回归梯度(斜率),问题出在两个核心点:

1. 自变量与因变量完全颠倒

你要拟合的是「以时间t为自变量,资产价格adj_price[i,:]为因变量」的线性回归模型(即price = a*t + b,其中a是你要的梯度),但adj_price[i, :] \ t的实际作用是求解以价格为自变量、时间为因变量的最小二乘解(即t = β*price),得到的系数和你的目标完全无关。

2. 未正确构造回归所需的设计矩阵(若包含截距项)

标准的一元线性回归需要包含截距项的设计矩阵(即每个样本对应[1, t]),否则拟合的是过原点的回归模型(price = a*t),这通常不符合金融时间序列分析的常规需求。


修正后的代码

包含截距项的标准线性回归(推荐)

这个版本拟合的是price = a*t + b,提取的系数a就是时间t对价格的梯度:

function fᵢ(adj_price::Matrix{Float64})
    n_assets, n_days = size(adj_price)
    n_days > 1 || throw(ArgumentError("n_days must be greater than 1"))
    t = 1:n_days
    # 构造包含截距项的设计矩阵:每行是 [1, tᵢ]
    design_matrix = hcat(ones(n_days), t)
    aᵢ = zeros(n_assets)
    for i in 1:n_assets
        # 求解最小二乘系数,第二个元素是斜率a
        coeffs = design_matrix \ adj_price[i, :]
        aᵢ[i] = coeffs[2]
    end
    return aᵢ
end

过原点的线性回归(无截距项)

如果你明确不需要截距项,只想拟合price = a*t,可以直接调整自变量和因变量的顺序:

function fᵢ(adj_price::Matrix{Float64})
    n_assets, n_days = size(adj_price)
    n_days > 1 || throw(ArgumentError("n_days must be greater than 1"))
    t = 1:n_days
    aᵢ = zeros(n_assets)
    for i in 1:n_assets
        # 以t为自变量,price为因变量,求解过原点回归的斜率
        aᵢ[i] = t \ adj_price[i, :]
    end
    return aᵢ
end

内容的提问来源于stack exchange,提问作者Shayan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 06:30:11