标签: statsmodels

Python统计包:statsmodel和scipy.stats之间的区别

我需要一些关于为Python选择统计软件包的建议,我做了很多搜索,但不确定我是否做得对,特别是statsmodels和scipy.stats之间的区别.

我知道的一件事是scikits命名空间是scipy的特定"分支",而以前的scikits.statsmodels现在称为statsmodels.另一方面,还有scipy.stats.两者之间有什么区别,哪一个是Python 统计软件包?

谢谢.

- 编辑 -

我更改了标题,因为有些答案与问题没有关系,我认为这是因为标题不够明确.

python scipy scikits statsmodels

21
推荐指数
2
解决办法
1万
查看次数

Python中的方差通胀因素

我正在尝试计算python中简单数据集中每列的方差膨胀因子(VIF):

a b c d
1 2 4 4
1 2 6 3
2 3 7 4
3 2 8 5
4 1 9 4
Run Code Online (Sandbox Code Playgroud)

我已经使用usdm库中的vif函数在R中完成了这个,它给出了以下结果:

a <- c(1, 1, 2, 3, 4)
b <- c(2, 2, 3, 2, 1)
c <- c(4, 6, 7, 8, 9)
d <- c(4, 3, 4, 5, 4)

df <- data.frame(a, b, c, d)
vif_df <- vif(df)
print(vif_df)

Variables   VIF
   a        22.95
   b        3.00
   c        12.95
   d        3.00
Run Code Online (Sandbox Code Playgroud)

但是,当我使用statsmodel vif函数在python中执行相同操作时,我的结果是: …

python statistics numpy r statsmodels

21
推荐指数
4
解决办法
3万
查看次数

python的哪些统计模块支持单向ANOVA和事后测试(Tukey,Scheffe或其他)?

我试过查看Python的多个统计模块,但似乎找不到任何支持one-way ANOVApost hoc测试.

python statistics ipython scipy statsmodels

18
推荐指数
1
解决办法
2万
查看次数

任何Python库都会生成发布样式回归表

我一直在使用Python进行回归分析.获得回归结果后,我需要将所有结果汇总到一个表中并将它们转换为LaTex(用于发布).是否有任何包在Python中执行此操作?像Stata中的estout这样的东西给出了下表:

在此输入图像描述

python latex regression stata statsmodels

18
推荐指数
1
解决办法
4190
查看次数

如何使用Python中的科学库执行卡方拟合优度检验?

假设我有一些我凭经验得到的数据:

from scipy import stats
size = 10000
x = 10 * stats.expon.rvs(size=size) + 0.2 * np.random.uniform(size=size)
Run Code Online (Sandbox Code Playgroud)

它呈指数分布(有一些噪音),我想用卡方拟合优度(GoF)测试验证这一点.使用Python中的标准科学库(例如scipy或statsmodels)以最少的手动步骤和假设进行此操作的最简单方法是什么?

我可以使用以下模型:

param = stats.expon.fit(x)
plt.hist(x, normed=True, color='white', hatch='/')
plt.plot(grid, distr.pdf(np.linspace(0, 100, 10000), *param))
Run Code Online (Sandbox Code Playgroud)

分布和经验数据图

计算Kolmogorov-Smirnov检验非常优雅.

>>> stats.kstest(x, lambda x : stats.expon.cdf(x, *param))
(0.0061000000000000004, 0.85077099515985011)
Run Code Online (Sandbox Code Playgroud)

但是,我找不到计算卡方检验的好方法.

在statsmodel中有一个卡方的GoF函数,但它假定为离散分布(并且指数分布是连续的).

官员scipy.stats教程只涵盖的情况下,自定义分布和概率与许多表达式(npoints,npointsh,N键合,normbound)摆弄建成,所以它不是很清楚,我该怎么办呢其他分布.该卡方例子假设与预期值和已经获得的自由度.

此外,我不是在寻找一种"手动"执行测试的方法,如此处已经讨论过的,但是我想知道如何应用其中一个可用的库函数.

python scipy statsmodels goodness-of-fit

18
推荐指数
1
解决办法
9102
查看次数

从statsmodels OLS结果打印'std err'值

(抱歉要问,但http://statsmodels.sourceforge.net/目前已关闭,我无法访问文档)

我正在使用线性回归statsmodels,基本上:

import statsmodels.api as sm
model = sm.OLS(y,x)
results = model.fit()
Run Code Online (Sandbox Code Playgroud)

我知道我可以打印出完整的结果集:

print results.summary()
Run Code Online (Sandbox Code Playgroud)

输出如下:

                            OLS Regression Results                            
==============================================================================
Dep. Variable:                      y   R-squared:                       0.952
Model:                            OLS   Adj. R-squared:                  0.951
Method:                 Least Squares   F-statistic:                     972.9
Date:                Mon, 20 Jul 2015   Prob (F-statistic):           5.55e-34
Time:                        15:35:22   Log-Likelihood:                -78.843
No. Observations:                  50   AIC:                             159.7
Df Residuals:                      49   BIC:                             161.6
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [95.0% Conf. Int.]
------------------------------------------------------------------------------
x1             1.0250      0.033 …
Run Code Online (Sandbox Code Playgroud)

python io statsmodels

18
推荐指数
2
解决办法
9673
查看次数

用于python中的时间序列分析的包

我正在研究python中的时间序列.我觉得有用和有前途的图书馆是

  • 大熊猫;
  • statsmodel(用于ARIMA);
  • 大熊猫提供简单的指数平滑.

也用于可视化:matplotlib

有没有人知道指数平滑的库?

python time-series forecasting pandas statsmodels

17
推荐指数
3
解决办法
3万
查看次数

构建多元回归模型会抛出错误:"Pandas数据转换为numpy dtype对象.使用np.asarray(data).`检查输入数据

我有一些pandas数据帧,其中一些分类预测变量(即变量)为0和1,以及一些数字变量.当我适合像以下的stasmodel:

est = sm.OLS(y, X).fit()
Run Code Online (Sandbox Code Playgroud)

它抛出:

Pandas data cast to numpy dtype of object. Check input data with np.asarray(data). 
Run Code Online (Sandbox Code Playgroud)

我使用了转换DataFrame的所有dtypes df.convert_objects(convert_numeric=True)

在此之后,所有数据框变量的dtypes都显示为int32或int64.但最后它仍然显示dtype: object,像这样:

4516        int32
4523        int32
4525        int32
4531        int32
4533        int32
4542        int32
4562        int32
sex         int64
race        int64
dispstd     int64
age_days    int64
dtype: object
Run Code Online (Sandbox Code Playgroud)

这里4516,4523是变量标签.

任何的想法?我需要在数百个变量上构建一个多元回归模型.为此,我连接了3个pandas DataFrames,以提出用于模型构建的最终DataFrame.

python numpy pandas statsmodels

17
推荐指数
2
解决办法
3万
查看次数

statsmodels和R中的泊松回归

给出一些随机生成的数据

  • 2列,
  • 50行和
  • 整数范围在0-100之间

使用R,可以实现泊松glm和诊断图:

> col=2
> row=50
> range=0:100
> df <- data.frame(replicate(col,sample(range,row,rep=TRUE)))
> model <- glm(X2 ~ X1, data = df, family = poisson)
> glm.diag.plots(model)
Run Code Online (Sandbox Code Playgroud)

Python中,这将给出线预测器与剩余图:

import numpy as np
import pandas as pd
import statsmodels.formula.api
from statsmodels.genmod.families import Poisson
import seaborn as sns
import matplotlib.pyplot as plt

df = pd.DataFrame(np.random.randint(100, size=(50,2)))
df.rename(columns={0:'X1', 1:'X2'}, inplace=True)
glm = statsmodels.formula.api.gee
model = glm("X2 ~ X1", groups=None, data=df, family=Poisson())
results = model.fit()
Run Code Online (Sandbox Code Playgroud)

并在Python中绘制诊断图: …

python plot machine-learning statsmodels

17
推荐指数
1
解决办法
3636
查看次数

错误:ValueWarning:提供了日期索引,但它没有关联的频率信息,因此在例如预测时将被忽略

所以我有一个包含两列的 CSV 文件:日期和价格,但是当我尝试在该时间序列上使用 ARIMA 时,我遇到了这个错误:

ValueWarning:提供了日期索引,但它没有相关的频率信息,因此在预测时将被忽略。
'在例如预测时被忽略。', ValueWarning)

所以我发现了这两个问题:

ValueWarning:未提供频率信息,因此将使用推断频率 MS

/sf/answers/2510249241/

但是当我尝试运行示例中的代码(第二个链接)时:

import pandas as pd
from statsmodels.tsa.arima_model import ARMA

df=pd.DataFrame({"val": pd.Series([1.1,1.7,8.4 ], 
                 index=['2015-01-15 12:10:23','2015-02-15 12:10:23','2015-03-15 12:10:23'])})
print df
'''
                     val
2015-01-15 12:10:23  1.1
2015-02-15 12:10:23  1.7
2015-03-15 12:10:23  8.4
'''

print df.index

'''
Index([u'2015-01-15 12:10:23',u'2015-02-15 12:10:23',u'2015-03-15 12:10:23'], dtype='object')

'''

df.index = pd.DatetimeIndex(df.index)
print df.index
'''
DatetimeIndex(['2015-01-15 12:10:23', '2015-02-15 12:10:23',
               '2015-03-15 12:10:23'],
              dtype='datetime64[ns]', freq=None)
'''

model = ARMA(df["val"], (1,0))
print model
Run Code Online (Sandbox Code Playgroud)

我也收到了同样的 ValueWarning,所以我试图改变这一行:

df.index = pd.DatetimeIndex(df.index)
Run Code Online (Sandbox Code Playgroud)

对此:

df.index = …
Run Code Online (Sandbox Code Playgroud)

python time-series pandas statsmodels arima

16
推荐指数
1
解决办法
1万
查看次数