from patsy import *
from pandas import *
dta = DataFrame([["lo", 1],["hi", 2.4],["lo", 1.2],["lo", 1.4],["very_high",1.8]], columns=["carbs", "score"])
dmatrix("carbs + score", dta)
DesignMatrix with shape (5, 4)
Intercept carbs[T.lo] carbs[T.very_high] score
1 1 0 1.0
1 0 0 2.4
1 1 0 1.2
1 1 0 1.4
1 0 1 1.8
Terms:
'Intercept' (column 0), 'carbs' (columns 1:3), 'score' (column 3)
Run Code Online (Sandbox Code Playgroud)
问题:我是否可以不读取此 DesignMatrix 给出的名称,而不是使用 Designinfo 指定列的“名称”(这基本上使我的代码的可重用性降低),以便稍后将其输入到 DataFrame 中,而无需知道预先确定“参考水平/对照组”水平是多少?
IE。当我做 dmatrix("C(carbs, Treatment(reference='lo')) + Score", dta)
"""
# How can I get …Run Code Online (Sandbox Code Playgroud) 我试图适应我所拥有的一些数据的分布。为了测试它,我首先尝试从固定分布生成样本并尝试拟合它。下面是我正在使用的代码。
samp = t.rvs(loc=0, scale=0.6, df=1.3, size=150)
param = t.fit(samp)
x = linspace(-5,5,100)
pdf_fitted = t.pdf(x,loc=param[0],scale=param[1],df=param[2])
pdf = t.pdf(x,loc=0,scale=0.6,df=1.3)
title('Student\'s t Distribution')
plot(x,pdf_fitted,'r-',x,pdf,'b-')
hist(samp, normed=1,alpha=0.3)
show()
print(param)
Run Code Online (Sandbox Code Playgroud)
现在,人们会期望这一点pdf并且pdf_fitted本质上是相同的。然而,事实并非如此。当显示图时,原始分布和拟合分布看起来非常不同。而且,获得的参数与指定的参数(loc=0,scale=0.6,df=1.3)根本不匹配!这让我很困惑,因为我只是调整http://glowingpython.blogspot.com/2012/07/distribution-fitting-with-scipy.html中的代码来处理 t 分布。有人可以告诉我拟合 t 分布是否有任何细微差别吗?谢谢
我使用 pandas 和 statsmodels 进行线性回归。但是,我找不到任何可能的方法来读取结果。结果已显示,但我需要使用 coef 值进行一些进一步的计算。有没有可能的方法将 coef 值存储到新变量中?
import statsmodels.api as sm
import numpy
ones = numpy.ones(len(x[0]))
t = sm.add_constant(numpy.column_stack((x[0], ones)))
for m in x[1:]:
t = sm.add_constant(numpy.column_stack((m, t)))
results = sm.OLS(y, t).fit()
Run Code Online (Sandbox Code Playgroud)
我正在使用 statsmodels 创建一些回归输出:
import statsmodels.api as sm
import statsmodels.formula.api as smf
from statsmodels.iolib.summary2 import summary_col
import numpy as np
import pandas as pd
x1 = pd.Series(np.random.randn(2000))
x2 = pd.Series(np.random.randn(2000))
aa_milne_arr = ['a', 'b', 'c', 'd', "e", "f", "g", "h", "i"]
dummy = pd.Series(np.random.choice(aa_milne_arr, 2000,))
depen = pd.Series(np.random.randn(2000))
df = pd.DataFrame({"y": depen, "x1": x1, "x2": x2, "dummy": dummy})
df['const'] = 1
df['xsqr'] = df['x1']**2
mod = smf.ols('y ~ x1 + x2 + dummy', data=df)
mod2 = smf.ols('y ~ x1 + x2 …Run Code Online (Sandbox Code Playgroud) 每当我尝试将 statsmodels.formula.api 作为 smf 导入时,我都会收到以下错误。
import statsmodels.formula.api as smf
Traceback (most recent call last):
File "<ipython-input-257-268d740a5877>", line 1, in <module>
import statsmodels.formula.api as smf
File "C:\Users\ldresl\Anaconda3\lib\site-
packages\statsmodels\formula\__init__.py", line 1, in <module>
from statsmodels import PytestTester
ImportError: cannot import name 'PytestTester'
Run Code Online (Sandbox Code Playgroud) 我的一个朋友问我这个线性回归代码,我也无法解决,所以现在也是我的问题。
我们得到的错误: ValueError:endog 和 exog 矩阵的大小不同
当我从 ind_names 中删除“Tech”时,它工作正常。这可能毫无意义,但为了消除语法错误的可能性,我尝试这样做。
技术和金融行业标签在 DataFrame 中分布不均,所以这可能导致大小不匹配?但我无法进一步调试,所以决定问你们。
对错误和解决方案的想法得到一些确认真是太好了。请在下面找到代码。
#We have a portfolio constructed of 3 randomly generated factors (fac1, fac2, fac3).
#Python code provides the following message
#ValueError: The indices for endog and exog are not aligned
import pandas as pd
from numpy.random import rand
import numpy as np
import statsmodels.api as sm
fac1, fac2, fac3 = np.random.rand(3, 1000) #Generate random factors
#Consider a collection of hypothetical stock portfolios
#Generate randomly 1000 tickers
import random; …Run Code Online (Sandbox Code Playgroud) 我正在运行以下源代码:
import statsmodels.formula.api as sm
# Add one column of ones for the intercept term
X = np.append(arr= np.ones((50, 1)).astype(int), values=X, axis=1)
regressor_OLS = sm.OLS(endog=y, exog=X).fit()
print(regressor_OLS.summary())
Run Code Online (Sandbox Code Playgroud)
在哪里
X 是一个 50x5(在添加截距项之前)的 numpy 数组,如下所示:
[[0 1 165349.20 136897.80 471784.10]
[0 0 162597.70 151377.59 443898.53]...]
Run Code Online (Sandbox Code Playgroud)
并且y是一个 50x1 numpy 数组,具有因变量的浮点值。
前两列用于具有三个不同值的虚拟变量。其余的列是三个不同的独立变量。
虽然,据说statsmodels.formula.api.OLS自动添加了一个拦截项(参见@stellacia 的回答:OLS using statsmodel.formula.api vs statsmodel.api)它summary没有显示拦截项的统计值,在我的情况下如下所示:
OLS Regression Results
==============================================================================
Dep. Variable: Profit R-squared: 0.988
Model: OLS Adj. R-squared: 0.986
Method: Least Squares F-statistic: …Run Code Online (Sandbox Code Playgroud) 对以下链接进行了调查,但没有为我提供我正在寻找/解决问题的答案:First,Second。
由于保密问题,我无法发布实际分解我可以显示我当前的代码并给出数据集的长度,如果这还不够,我将删除这个问题。
import numpy as np
from statsmodels.tsa import seasonal
def stl_decomposition(data):
data = np.array(data)
data = [item for sublist in data for item in sublist]
decomposed = seasonal.seasonal_decompose(x=data, freq=12)
seas = decomposed.seasonal
trend = decomposed.trend
res = decomposed.resid
Run Code Online (Sandbox Code Playgroud)
在图中,它显示它根据加法模型正确分解。然而,趋势和残差列表的前 6 个月和最后 6 个月都有 NaN 值。当前数据集的大小为 10*12。理想情况下,这应该适用于仅 2 年的时间。
这仍然像第一个链接中所说的那样太小吗?即我需要自己推断额外的分数?
编辑:似乎在趋势和残差的两端,频率的一半总是 NaN。同样适用于减小数据集的大小。
我正在尝试普通最小二乘法的示例,代码如下。
import numpy as np
import statsmodels.api as sm
import statsmodels.formula.api as smf
dat = sm.datasets.get_rdataset("Guerry", "HistData").data
results = smf.ols('Lottery ~ Literacy + np.log(Pop1831)', data=dat).fit()
print(results.summary())
Run Code Online (Sandbox Code Playgroud)
但我在下面得到这个错误,示例的来源在网站http://www.statsmodels.org/stable/index.html 我的 statsmodels 版本是 0.9,我只是像第一个朋友所说的那样删除 np,但是我仍然遇到同样的错误,所以它不起作用,我只能尝试这些,请帮助我..... 错误太长,所以我需要把它切成几块
第一部分如下:
AssertionError Traceback (most recent call last)
<ipython-input-6-1d91087b5e15> in <module>()
3 import statsmodels.formula.api as smf
4 dat = sm.datasets.get_rdataset("Guerry", "HistData").data
----> 5 results = smf.ols('Lottery ~ Literacy + log(Pop1831)', data=dat).fit()
6 print(results.summary())
~\Anaconda3\lib\site-packages\statsmodels\base\model.py in from_formula(cls, formula, data, subset, drop_cols, *args, **kwargs)
153
154 tmp = handle_formula_data(data, …Run Code Online (Sandbox Code Playgroud) 有人可以告诉我如何显示plot_acf和plot_pacf并排?我在show=False争论和 matplotlib 疯狂的对象模型中挣扎......
statsmodels ×10
python ×8
pandas ×4
numpy ×2
regression ×2
matplotlib ×1
patsy ×1
python-2.7 ×1
python-3.x ×1
scipy ×1
statistics ×1