gpt4 book ai didi

python - 鲁棒线性模型 - 没有外生变量,只有常数

转载 作者:太空宇宙 更新时间:2023-11-03 14:05:43 28 4
gpt4 key购买 nike

我只对一个常数(一列 1)进行稳健的线性回归,没有外生变量。通过输入等于下面代码片段中“xi_list”大小的 1 列表,我可以很好地计算模型。

def sigma_and_miu(gvkey, statevar_dict):

statevar_list = statevar_dict[gvkey]

xi_list = [np.log(statevar_list[i]) - np.log(statevar_list[i-1]) for i in range(1, len(statevar_list))]

x = np.array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
y = np.array(xi_list)

rlm_model = sm.RLM(y, x, M=sm.robust.norms.HuberT())
rlm_results = rlm_model.fit()

sigma = np.std(rlm_results.resid * rlm_results.weights)

miudelta = rlm_results.params[0] + (0.5 * sigma ** 2)

return miudelta, sigma

此函数使用以下输入运行。

dict = {1004:[1796.6, 1938.6, 2085.4, 2009.4, 1906.1, 2002.2, 2164.9, 2478.8, 2357.4, 2662.1, 2911.2, 2400.4, 2535.9, 2812.3, 2873.1, 2775.5, 3374.2, 3345.5, 3466.3, 2409.4]}
key = 1004
miu, sigma = sigma_and_miu(key,dict)

但是,我正在寻找一种更具可扩展性的方法。我认为一种解决方案可能是包含一个循环,该循环附加与 xi_list 变量的长度一样多的 1,但是,这似乎不是很有效。

我知道有 sm.add_constant(),我尝试将此常量添加到我的“y”变量中,并在 sm.RLM() 函数中将“x”留空。这会导致无法运行模型。

所以我的问题是,是否有更好的方法来创建 1 列表,或者我应该直接进行循环?

最佳答案

使用基本的 numpy 矢量化计算

例如

statevar = np.asarray(statevar_list)
y = np.log(statevar[1:]) - np.log(statevar[:-1])
x = np.ones(len(y))

旁白:rlm_results 应该具有在估计中用作尺度属性的标准偏差的稳健估计。

关于python - 鲁棒线性模型 - 没有外生变量,只有常数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48908075/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com