我很困惑为什么R和statsmodels中的逻辑回归模型不一致.

如果我在R中准备一些数据

# From https://courses.edx.org/c4x/MITx/15.071x/asset/census.csv

library(caTools) # for sample.split

census = read.csv("census.csv")

set.seed(2000)

split = sample.split(census$over50k,SplitRatio = 0.6)

censusTrain = subset(census,split==TRUE)

censusTest = subset(census,split==FALSE)

然后运行逻辑回归

CensusLog1 = glm(over50k ~.,data=censusTrain,family=binomial)

Estimate Std. Error z value Pr(>|z|)

(Intercept) -8.658e+00 1.379e+00 -6.279 3.41e-10 ***

age 2.548e-02 2.139e-03 11.916 < 2e-16 ***

workclass Federal-gov 1.105e+00 2.014e-01 5.489 4.03e-08 ***

workclass Local-gov 3.675e-01 1.821e-01 2.018 0.043641 *

workclass Never-worked -1.283e+01 8.453e+02 -0.015 0.987885

workclass Private 6.012e-01 1.626e-01 3.698 0.000218 ***

workclass Self-emp-inc 7.575e-01 1.950e-01 3.884 0.000103 ***

workclass Self-emp-not-inc 1.855e-01 1.774e-01 1.046 0.295646

workclass State-gov 4.012e-01 1.961e-01 2.046 0.040728 *

workclass Without-pay -1.395e+01 6.597e+02 -0.021 0.983134

...

但我在Python中使用相同的数据,首先从R导出

write.csv(censusTrain,file="traincensus.csv")

write.csv(censusTest,file="testcensus.csv")

然后导入到Python中

import pandas as pd

census = pd.read_csv("census.csv")

census_train = pd.read_csv("traincensus.csv")

census_test = pd.read_csv("testcensus.csv")

我得到的错误和奇怪的结果与我在R中得到的结果没有任何关系.

如果我只是尝试

import statsmodels.api as sm

census_log_1 = sm.Logit.from_formula(f,census_train).fit()

我收到一个错误:

ValueError: operands could not be broadcast together with shapes (19187,2) (19187,)

即使用patsy准备数据也是如此

import patsy

f = 'over50k ~ ' + ' + '.join(list(census.columns)[:-1])

y,X = patsy.dmatrices(f,census_train,return_type='dataframe')

census_log_1 = sm.Logit(y,X).fit()

导致相同的错误.我可以避免错误的唯一方法是使用GLM

census_log_1 = sm.GLM(y,X,family=sm.families.Binomial()).fit()

但是这会产生results,与完全不同于(我认为是)等效的R API产生的那些:

coef std err t P>|t| [95.0% Conf. Int.]

----------------------------------------------------------------------------------------------------------------

Intercept 10.6766 5.985 1.784 0.074 -1.055 22.408

age -0.0255 0.002 -11.916 0.000 -0.030 -0.021

workclass[T. Federal-gov] -0.9775 4.498 -0.217 0.828 -9.794 7.839

workclass[T. Local-gov] -0.2395 4.498 -0.053 0.958 -9.055 8.576

workclass[T. Never-worked] 8.8346 114.394 0.077 0.938 -215.374 233.043

workclass[T. Private] -0.4732 4.497 -0.105 0.916 -9.288 8.341

workclass[T. Self-emp-inc] -0.6296 4.498 -0.140 0.889 -9.446 8.187

workclass[T. Self-emp-not-inc] -0.0576 4.498 -0.013 0.990 -8.873 8.758

workclass[T. State-gov] -0.2733 4.498 -0.061 0.952 -9.090 8.544

workclass[T. Without-pay] 10.0745 85.048 0.118 0.906 -156.616 176.765

...

为什么Python中的逻辑回归会产生错误,并且会产生与R生成的错误不同的结果?这些API实际上是不相同的(我之前已经让它们工作以产生相同的结果)?是否需要对数据集进行一些额外的处理才能使它们被statsmodel使用?

python中逻辑回归结果怎么看_python – 为什么statsmodels不能重现我的R逻辑回归结果?...相关推荐

  1. python中raise和raise e区别_python raise和assert的区别

    python中raise和assert的区别 一.使用raise抛出异常 python可以自动触发异常,raise(内置函数)的定义为显示的抛出异常,用户可以使用raise进行判断,显式的引发异常,r ...

  2. python中可变参数和关键字参数_python的可变参数和关键字参数(*args **kw)

    本文是来自廖大的python教程其中我一直忘记的部分.算是一个笔记把.因为日常这俩参数名字一直搞混 可变参数 在Python函数中,还可以定义可变参数.顾名思义,可变参数就是传入的参数个数是可变的,可 ...

  3. python中用于获取当前目录的是_python中获得当前目录和上级目录的实现方法

    python中获得当前目录和上级目录的实现方法 获取当前文件的路径: from os import path d = path.dirname(__file__) #返回当前文件所在的目录 # __f ...

  4. python中find函数运算结果类型_Python 运算符与数据类型

    Python 运算符 运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算,在Python中运算符大致可以分为7种类型:算术运算符.比较运算符.赋值运算符.逻辑运算符.位运算等,下面的例子将 ...

  5. python中布尔变量的值为_python 布尔操作实现代码 python是如何定义并使用变量的...

    python中怎么定义一个布尔类型的变量我要记住这一个半小时的车程,我要记住每一个红灯和颠簸,我要记住你手臂的温度.甚至希望旅途变长,天色变暗,暴雨如注,可与你再度过一个夜晚. 直接定义a=True/ ...

  6. python中不可迭代对象有哪些_python可迭代对象

    本身实现了迭代方法的对象称之为可迭代对象,可迭代对象特点: 支持每次返回自己所包含的一个成员的对象: 对象实现了 __iter__ 方法: 所有数据结构都是可迭代对象: for 循环要求对象必须是一个 ...

  7. python中gil锁和线程锁_Python线程——GIL锁、线程锁(互斥锁)、递归锁(RLock)...

    GIL锁 ​ 计算机有4核,代表着同一时间,可以干4个任务.如果单核cpu的话,我启动10个线程,我看上去也是并发的,因为是执行了上下文的切换,让看上去是并发的.但是单核永远肯定时串行的,它肯定是串行 ...

  8. python中导入模块用什么命令_Python导入模块的技巧

    作为使用Python的开发者,我们一开始学习的内容之一就是如何导入Python的各种模块或库.但是我们注意到,那些经常使用Python的用户并不一定都知道Python的导入机制其实非常灵活.在本文中, ...

  9. python中math.ceil是什么意思_python中的数字取整(ceil,floor,round)概念和用法

    python中的数学运算函数(ceil,floor,round)的主要任务是截掉小数以后的位数.总体来说 就是取整用的.只是三者之间有微妙的区别: floor() :把数字变小 ceil() : 把数 ...

最新文章

  1. CentOS7.5安装配置PostgreSQL10
  2. Oracle SQL Optimizer IN VS Exists Again
  3. 【设计原则和建议】 构造和析构对象
  4. 加工中心刻字宏程序_加工中心通用铣螺纹宏程序实例,千万别说你学不会!
  5. 5 秒创建 k8s 集群[转]
  6. 频偏纠正matlab实现,Matlab关于OFDM同步定时估计和频偏估计的算法
  7. (二)Cypher语言常用方法举例
  8. 2017-2018-2课表
  9. base32解码工具_[随波逐流]CTF编码工具 V1.0
  10. 基于cocos2d-x引擎的游戏框架设计
  11. 基于handsontable的web excel(上)
  12. Android系统证书 platform.x509.pem platform.pk8转换为.keystore文件
  13. excel中if如何加android,Excel 如何实现函数IF的嵌套超过七层
  14. 小米路由pro php,家庭实测 | 荣耀路由Pro2 可以吊打小米路由器吗?
  15. 研究心得:调研文献“快而全“的三步
  16. PHP影视源码 米酷CMS影视系统6.27修复版
  17. Vue常用指令 [vue框架][web前端]
  18. javanbsp;网盘资料共享
  19. 计算机管理没用调制解调器,电脑调制解调器错误连不上网
  20. PYTHON链家租房数据分析:岭回归、LASSO、随机森林、XGBOOST、KERAS神经网络、KMEANS聚类、地理可视化...

热门文章

  1. mysql 5.5 5.6 备份库_mysql5.5备份数据库里面除系统库外的所有数据库
  2. Java数据结构Map List Set及Queue相关的类图
  3. 翻译练习:Hadoop概述
  4. Java案例:Log4J基本使用
  5. 【BZOJ2151】种树,贪心+Splay乱搞
  6. 【BZOJ2844】albus就是要第一个出场,线性基
  7. 【BZOJ1934】【codevs2341】善意的投票,二分图最小割
  8. 【codevs1869】硬币购物,背包+神奇的容斥原理
  9. XP计算机调整对比度,Win7系统调节显示器屏幕对比度的两种方法【图文】
  10. 2017.10.17 Codechef MARCH14 GERALD07加强版 失败总结