Python使用逻辑回归估算OR值
第一种是统计学方法,需要用到 statsmodels包
statsmodels是统计和计量经济学的package,包含了用于参数评估和统计测试的实用工具
第二种是机器学习,需要使用sklearn中的LogisticRegression
下面以计算dis1-->dis2的OR值为例,也就是说dis1为自变量,dis2为因变量
首先我们先造一组数据: x为自变量,y为因变量
df = pd.DataFrame({'x': ['dis1', 'dis1', 'dis1', 'dis1', 'dis3', 'dis3', 'dis3', 'dis3'], 'y': ["dis2", "dis2",
"dis2", "dis4", "dis4", "dis4", "dis4", "dis2"]})
因为我要使用逻辑回归估计OR值,所以首先会计算出实际的OR值
患dis2 | 不患dis2 | |
患dis1 | A | B |
不患dis1 | C | D |
OR值的计算:OR_dis1_dis2 = AD/BC,其中A = 3, B = 1, C = 1, D = 3
ct = pd.crosstab(df.x, df.y)
oddsratio, pvalue = stats.fisher_exact(ct)
使用stamodel包中的逻辑回归进行OR值的估计:
df["intercept"] = 1.0 # 截距项,初始化截距项,不可省 # 拟合模型
logit = sm.Logit(df['y'], df[df.columns[1:]])
result = logit.fit() print(result.summary())
# 计算得到OR值
OR1 = np.exp(result.params)
使用机器学习方法计算OR
df = pd.get_dummies(df)
clf = LogisticRegression(penalty='none') clf.fit(df[['x_dis1']], df[['y_dis2']].values)
print(clf)
odds_ratio = np.exp(clf.coef_)
print(odds_ratio)
完整代码:
import pandas as pd
import statsmodels.api as sm
from sklearn.linear_model import LogisticRegression
import numpy as np # 构造数据
df = pd.DataFrame({'x': ['dis1', 'dis1', 'dis1', 'dis1', 'dis3', 'dis3', 'dis3', 'dis3'], 'y': ["dis2", "dis2",
"dis2", "dis4", "dis4", "dis4", "dis4", "dis2"]}) # 计算实际OR
ct = pd.crosstab(df.x, df.y)
oddsratio, pvalue = stats.fisher_exact(ct) # 使用统计学方法计算
df["intercept"] = 1.0 # 截距项,初始化截距项,不可省 # 拟合模型
logit = sm.Logit(df['y'], df[df.columns[1:]])
result = logit.fit() print(result.summary())
# 计算得到OR值
OR1 = np.exp(result.params) # 使用机器学习方法计算
df = pd.get_dummies(df)
clf = LogisticRegression(penalty='none') clf.fit(df[['x_dis1']], df[['y_dis2']].values)
print(clf)
odds_ratio = np.exp(clf.coef_)
print(odds_ratio)
Python使用逻辑回归估算OR值的更多相关文章
- 机器学习_线性回归和逻辑回归_案例实战:Python实现逻辑回归与梯度下降策略_项目实战:使用逻辑回归判断信用卡欺诈检测
线性回归: 注:为偏置项,这一项的x的值假设为[1,1,1,1,1....] 注:为使似然函数越大,则需要最小二乘法函数越小越好 线性回归中为什么选用平方和作为误差函数?假设模型结果与测量值 误差满足 ...
- 机器学习之使用Python完成逻辑回归
一.任务基础 我们将建立一个逻辑回归模型来预测一个学生是否被大学录取.假设你是一个大学系的管理员,你想根据两次考试的结果来决定每个申请人的录取机会.你有以前的申请人的历史数据,你可以用它作为逻辑回归的 ...
- Python之逻辑回归模型来预测
建立一个逻辑回归模型来预测一个学生是否被录取. import numpy as np import pandas as pd import matplotlib.pyplot as plt impor ...
- python机器学习-逻辑回归
1.逻辑函数 假设数据集有n个独立的特征,x1到xn为样本的n个特征.常规的回归算法的目标是拟合出一个多项式函数,使得预测值与真实值的误差最小: 而我们希望这样的f(x)能够具有很好的逻辑判断性质,最 ...
- python机器学习——逻辑回归
我们知道感知器算法对于不能完全线性分割的数据是无能为力的,在这一篇将会介绍另一种非常有效的二分类模型--逻辑回归.在分类任务中,它被广泛使用 逻辑回归是一个分类模型,在实现之前我们先介绍几个概念: 几 ...
- python实现逻辑回归
首先得明确逻辑回归与线性回归不同,它是一种分类模型.而且是一种二分类模型. 首先我们需要知道sigmoid函数,其公式表达如下: 其函数曲线如下: sigmoid函数有什么性质呢? 1.关于(0,0. ...
- 吴裕雄 python 机器学习——逻辑回归
import numpy as np import matplotlib.pyplot as plt from matplotlib import cm from mpl_toolkits.mplot ...
- 用python实现逻辑回归
机器学习课程的一个实验,整理出来共享. 原理很简单,优化方法是用的梯度下降.后面有测试结果. # coding=utf-8 from math import exp import matplotlib ...
- Python之逻辑回归
代码: import numpy as np from sklearn import datasets from sklearn.linear_model import LogisticRegress ...
随机推荐
- WPF界面语言切换
举例中英文切换: 一.静态切换(每次切换需要重启应用) 1. 新建一个WPF APP(.NET Framework)项目,StaticLanguageSelect 2. 右击项目名,添加New Ite ...
- Navicat v15 破解
特别注意: 1.断网,否则在安装过程中会失败 2.关闭防火墙及杀毒软件 3.选择对应版本:mysql版就选择mysql 4.如果出现 就卸载,删除注册表,重新安装,出现rsa public key n ...
- JDBC学习一---JDBC入门
原文链接 今天开始会写一系列 Java 后端学习的笔记,一方面是为了以后翻阅查看,更主要的原因是通过写作输出的方式让自己的印象更深,避免遗忘. 首先是简单记录下自己学习使用 JDBC 的历程,由于目前 ...
- LGP5161口胡
大家好,我是后缀自动机套线段树魔怔人,我非常喜欢使用后缀自动机套线段树草字符串题. 看到一个区间加上一个相同的数后等于另外一个区间,很容易想到先对序列做差分,统计长度为1的答案后再来统计这些. 直接统 ...
- ElasticSearch7.3 学习之倒排索引揭秘及初识分词器(Analyzer)
一.倒排索引 1. 构建倒排索引 例如说有下面两个句子doc1,doc2 doc1:I really liked my small dogs, and I think my mom also like ...
- Windows下载安装RabbitMQ教程-------报错卸载重新安装 (要卸载干净 -看下文)
Could not update enabled plugins file at c:\Users\忙聸鹿忙聳掳忙聰戮\AppData\Roaming\RabbitMQ\enabled_plugins ...
- Java案例——简单登录
public class UserLogin { public static void main(String[] args) { //1.定义两个字符串作为已知用户的姓名与密码 String Use ...
- 端口转发工具--lcx
简介 lcx是一款强大的内网端口转发工具,用于将内网主机开放的内部端口映射到外网主机(有公网IP)任意端口.它是一款命令行工具,当然也可以在有权限的webshell下执行,正因如此lcx常被认为是一款 ...
- bzoj4596/luoguP4336 [SHOI2016]黑暗前的幻想乡(矩阵树定理,容斥)
bzoj4596/luoguP4336 [SHOI2016]黑暗前的幻想乡(矩阵树定理,容斥) bzoj Luogu 题解时间 看一看数据范围,求生成树个数毫无疑问直接上矩阵树定理. 但是要求每条边都 ...
- docker-compose + nginx部署前后端分离的项目
安装docker 安装必要的系统工具 # 更新yum工具 yum update -y # 安装必要的工具 yum install -y yum-utils device-mapper-persiste ...