首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中比较线性模型中的对比(比如Rs对比库?)

在Python中比较线性模型中的对比(比如Rs对比库?)
EN

Stack Overflow用户
提问于 2015-12-11 19:21:41
回答 1查看 1.3K关注 0票数 3

在R中,我可以做以下工作来比较线性模型的两个对比:

代码语言:javascript
复制
url <- "https://raw.githubusercontent.com/genomicsclass/dagdata/master/inst/extdata/spider_wolff_gorb_2013.csv"
filename <- "spider_wolff_gorb_2013.csv"
install.packages("downloader", repos="http://cran.us.r-project.org")
library(downloader)
if (!file.exists(filename)) download(url, filename)
spider <- read.csv(filename, skip=1)
head(spider, 5)
#   leg type friction
# 1  L1 pull     0.90
# 2  L1 pull     0.91
# 3  L1 pull     0.86
# 4  L1 pull     0.85
# 5  L1 pull     0.80
fit = lm(friction ~ type + leg, data=spider)
fit
# Call:
# lm(formula = friction ~ type + leg, data = spider)
# 
# Coefficients:
# (Intercept)     typepush        legL2        legL3        legL4
#      1.0539      -0.7790       0.1719       0.1605       0.2813
install.packages("contrast", repos="http://cran.us.r-project.org")
library(contrast)
l4vsl2 = contrast(fit, list(leg="L4", type="pull"), list(leg="L2",type="pull"))
l4vsl2
# lm model parameter contrast
# 
#   Contrast       S.E.      Lower     Upper    t  df Pr(>|t|)
#  0.1094167 0.04462392 0.02157158 0.1972618 2.45 277   0.0148

我已经了解了如何在Python中完成上述大部分工作:

代码语言:javascript
复制
import pandas as pd
df = pd.read_table("https://raw.githubusercontent.com/genomicsclass/dagdata/master/inst/extdata/spider_wolff_gorb_2013.csv", sep=",", skiprows=1)
df.head(2)

import statsmodels.formula.api as sm

model1 = sm.ols(formula='friction ~ type + leg', data=df)
fitted1 = model1.fit()
print(fitted1.summary())

现在剩下的就是找出腿对L4和腿对L2对比的t统计量。这在Python中是可能的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-11 21:38:10

状态模型仍然缺少一些预定义的对比,但是模型结果类的t_testwald_testf_test方法可以用来测试线性(或仿射)限制。这些限制由数组或使用参数名称的字符串提供。

有关如何指定对比/限制的详细信息应在文档中提供。

例如

代码语言:javascript
复制
>>> tt = fitted1.t_test("leg[T.L4] - leg[T.L2]")
>>> print(tt.summary())
                             Test for Constraints                             
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
c0             0.1094      0.045      2.452      0.015       0.022       0.197
==============================================================================

结果是t_test返回的实例中的属性或方法。例如,conf_int可以由

代码语言:javascript
复制
>>> tt.conf_int()
array([[ 0.02157158,  0.19726175]])

t_test被矢量化,并将每个限制或对比视为单独的假设。wald_test将一系列限制视为联合假设:

代码语言:javascript
复制
>>> tt = fitted1.t_test(["leg[T.L3] - leg[T.L2], leg[T.L4] - leg[T.L2]"])
>>> print(tt.summary())
                             Test for Constraints                             
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
c0            -0.0114      0.043     -0.265      0.792      -0.096       0.074
c1             0.1094      0.045      2.452      0.015       0.022       0.197
==============================================================================


>>> tt = fitted1.wald_test(["leg[T.L3] - leg[T.L2], leg[T.L4] - leg[T.L2]"])
>>> print(tt.summary())
<F test: F=array([[ 8.10128575]]), p=0.00038081249480917173, df_denom=277, df_num=2>

旁白:如果cov_type被指定为fit的参数,这也适用于健壮的协方差矩阵。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34231016

复制
相关文章

相似问题

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