首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用状态模型联合测试ipython中的多级分类效果?

如何使用状态模型联合测试ipython中的多级分类效果?
EN

Stack Overflow用户
提问于 2014-09-05 18:45:22
回答 2查看 547关注 0票数 1

我在ipython的状态模型中使用普通的最小二乘函数来拟合一个线性模型,其中一个协变量(城市)是一个多层次的范畴效应:

result=smf.ols(formula="Y ~ C(City) + X*C(Group)",data=s).fit();

(X是连续的,群是二进制范畴变量)。

当我做results.summary()时,我得到了每层城市的一行,然而,我想知道的是“城市”协变量的总体意义(即比较Y~C( City )+X*C(组)与部分模型Y~X*C(组))。

有办法吗?

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-06 16:01:15

简短回答

您可以直接使用anova_lm (类型3),也可以使用f_testwald_test,或者构造约束矩阵,或者以公式序列的形式提供假设的约束。

http://statsmodels.sourceforge.net/devel/anova.html test.html

票数 0
EN

Stack Overflow用户

发布于 2014-09-06 18:19:06

谢谢user333700!

这是你的提示的详细说明。我用一个三级分类变量生成数据,使用状态模型来拟合一个模型,然后联合测试分类变量的所有级别:

代码语言:javascript
复制
# 1. generate data
def rnorm(n,u,s):
    return np.random.standard_normal(n)*s+u
a=rnorm(100,-1,1);
b=rnorm(100,0,1);
c=rnorm(100,+1,1);
n=rnorm(300,0,1); # some noise
y=np.concatenate((a,b,c))+n
g=np.zeros(300);
g[0:100]=1
g[100:200]=2
g[200:300]=3
df=pd.DataFrame({'Y':y,'G':g,'N':n});

# 2. fit model
r=smf.ols(formula="Y ~ N + C(G)",data=df).fit();
r.summary()

# 3. joint test
print r.params
A=np.identity(len(r.params)) # identity matrix with size = number of params
GroupTest=A[1:3,:] # for the categorical var., keep the corresponding rows of A
CovTest=A[3,:] # row for the continuous var.
print "Group effect test",r.f_test(GroupTest).fvalue
print "Covariate effect test",r.f_test(CovTest).fvalue

结果应该是这样的:

代码语言:javascript
复制
Intercept     -1.188975
C(G)[T.2.0]    1.315898
C(G)[T.3.0]    2.137431
N              0.922038
dtype: float64
Group effect test [[ 120.86097747]]
Covariate effect test [[ 259.34155851]]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25692087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档