Python 稳健的线性模型-没有外生变量,只有常数
我只对一个常数(一列1)进行稳健的线性回归,没有外生变量。我可以通过输入一个1的列表来计算模型,该列表的大小等于下面代码片段中“xiu列表”的大小Python 稳健的线性模型-没有外生变量,只有常数,python,statsmodels,Python,Statsmodels,我只对一个常数(一列1)进行稳健的线性回归,没有外生变量。我可以通过输入一个1的列表来计算模型,该列表的大小等于下面代码片段中“xiu列表”的大小 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_
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)
然而,我正在寻找一种更具伸缩性的方法。我在想,一种解决方案可能是包含一个循环,该循环附加的1与xiu list变量的长度一样多,但这似乎不是很有效
我知道有sm.add_constant(),我尝试将这个常量添加到我的'y'变量中,并在sm.RLM()函数中将'x'留空。这将导致无法运行模型
所以我的问题是,是否有更好的方法来创建1的列表,还是我应该直接循环?使用基本的numpy矢量化计算 e、 g
旁白:
rlm_结果
应该具有标准偏差的稳健估计,标准偏差在估计中用作尺度属性。谢谢,我不知道np.ones()函数。你能详细说明一下stdev部分的稳健估计吗?我在这里搜索了一下,但什么也找不到:请参见该页属性列表中的scale
说明。比例的估计方法是通过scale\u est
选项选择的
statevar = np.asarray(statevar_list)
y = np.log(statevar[1:]) - np.log(statevar[:-1])
x = np.ones(len(y))