Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >计算学院化的删除残差和outlier_test()以预测OLS

计算学院化的删除残差和outlier_test()以预测OLS
EN

Stack Overflow用户
提问于 2019-12-24 09:28:48
回答 1查看 329关注 0票数 0

我正在使用statmodel OLS进行迭代异常值消除。我已经用来拟合模型了。

代码语言:javascript
运行
AI代码解释
复制
ols_result = sm.OLS(y,X).fit()

然后我可以得到学院化的删除残差外部和bonferroni

代码语言:javascript
运行
AI代码解释
复制
ols_result.outlier_test(method="bonf")

我正在删除超过bonferroni p> %10的样本,其中cooks距离在每次迭代中也是最高的。直到我没有得到bonf(p)>%10的样本,然后我得到了原始样本的子集。

假设我有400个样本,在删除异常值后,我得到了380个样本。现在我想找出学院化的删除残差和bonferroni,再用400个样本对380个样本进行回归拟合。以查看删除的异常值是否真的是异常值。

这就是问题所在。我正在寻找一种简单的方法来使用statmodels OLS模型来获得拟合值的残差和厨师距离,而不是自己编写这些函数。但是.outlier_test().get_influence()似乎可以处理OLS Result对象。

你们有没有什么简单的方法来实现这些测试而不需要太多的代码等等。

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-26 15:42:57

经过对这种实用性的深入研究。我找不到用statmodels库做这件事的简单方法。相反,我编写了自己的代码,也得到了statmodel源代码的帮助。如果有人需要我在下面分享的代码

代码语言:javascript
运行
AI代码解释
复制
def internally_studentized_residual(X,Y,y_hat):
    """

    Calculate studentized residuals internal

    Parameters
    ______________________________________________________________________

    X:            List
                  Variable x-axis

    Y:            List
                  Response variable of the X 


    y_hat:        List
                  Predictions of the response variable with the given X

    Returns
    ______________________________________________________________________

    Dataframe :   List
                  Studentized Residuals   


    """

#     print(len(Y))
    X = np.array(X, dtype=float)
    Y = np.array(Y, dtype=float)
    y_hat = np.array(y_hat,dtype=float)
    mean_X = np.mean(X)
    mean_Y = np.mean(Y)
    n = len(X)

#     print(X.shape,Y.shape,y_hat.shape)

    residuals = Y - y_hat

    X_inverse = np.linalg.pinv(X.reshape(-1,1))[0]
    h_ii = X_inverse.T * X

    Var_e = math.sqrt(sum((Y - y_hat) ** 2)/(n-2))
    SE_regression = Var_e/((1-h_ii) ** 0.5)
    studentized_residuals = residuals/SE_regression
    return studentized_residuals

def deleted_studentized_residual(X,Y,y_hat):
    """

    Calculate studentized residuals external

    Parameters
    ______________________________________________________________________

    X:            List
                  Variable x-axis

    Y:            List
                  Response variable of the X 


    y_hat:        List
                  Predictions of the response variable with the given X

    Returns
    ______________________________________________________________________

    Dataframe :   List
                  Studentized Residuals External  


    """
    #formula from https://newonlinecourses.science.psu.edu/stat501/node/401/
    r = internally_studentized_residual(X,Y,y_hat)
    n = len(r)
    return [r_i*math.sqrt((n-2-1)/(n-2-r_i**2)) for r_i in r]


def outlier_test(X,Y,y_hat,alpha=0.1):
    """

    outlier test for the points

    Parameters
    ______________________________________________________________________

    X:            List
                  Variable x-axis

    Y:            List
                  Response variable of the X 


    y_hat:        List
                  Predictions of the response variable with the given X

    alpha:        float
                  alpha value for multiple test

    Returns
    ______________________________________________________________________

    Dataframe :   studentized, unadjusted p values and benferroni multiple 
                  test dataframe  


    """
    resid = deleted_studentized_residual(X,Y,y_hat)
    df = len(X) - 1 
    p_vals = stats.t.sf(np.abs(resid),df) * 2
    bonf_test = multipletests(p_vals,alpha,method="bonf")
    df_result = pd.DataFrame()
    df_result.loc[:,"student_resid"] = resid
    df_result.loc[:,"unadj_p"] = p_vals
    df_result.loc[:,"bonf(p)"] = bonf_test[1]
    df_result.index = X.index

    return df_result

这可能是一个有点脏的代码。我没有时间去清理和提高效率。它使用numpy模块和scipy.stats

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

https://stackoverflow.com/questions/59466607

复制
相关文章
API和Web Api
API(应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
岳泽以
2022/10/26
2.5K0
web 通信--跨文档、worker、通道
跨文档通信(cross-document messaging)、worker通信(cross-worker messaging)、通道通信(channel messaging)
奋飛
2022/01/24
8240
web 通信--跨文档、worker、通道
Contact Manager Web API 示例[2] Web API Routing
联系人管理器web API是一个Asp.net web api示例程序,演示了通过ASP.NET Web API 公开联系信息,并允许您添加和删除联系人,示例地址http://code.msdn.microsoft.com/Contact-Manager-Web-API-0e8e373d。 Contact Manager Web API 示例[1]CRUD 操作 已经做了一个基本的介绍,本文主要介绍Web API Routing。 如果你已经熟悉 ASP.NET MVC,你会发现 Web API Routi
张善友
2018/01/22
1K0
Contact Manager Web API 示例[2] Web API Routing
联系人管理器web API是一个Asp.net web api示例程序,演示了通过ASP.NET Web API 公开联系信息,并允许您添加和删除联系人,示例地址http://code.msdn.microsoft.com/Contact-Manager-Web-API-0e8e373d。 Contact Manager Web API 示例[1]CRUD 操作 已经做了一个基本的介绍,本文主要介绍Web API Routing。 如果你已经熟悉 ASP.NET MVC,你会发现 Web API Routi
张善友
2018/01/22
1K0
团队使用 Slack 技巧
对于一个开源人来说,Slack 是绕不过的一款即时通讯工具。当一些 Issue 需要更详细的描述,或者有实时交流需求时,很多开源项目的维护者和用户往往都会使用 Slack 来进行沟通的,所以笔者对 Slack 还是十分熟悉的。但当身处一个全员 remote 团队,技术、业务和其他团队都要求使用 Slack 进行沟通和交流时,自认 Slack 老炮的笔者,却发现很多之前完全不了解的关于团队使用 Slack 的技巧。
郭旭东
2021/07/16
1.5K0
WCF Web Api
什么是WCF Web Api ? 越来越多的互联网应用向外开放他们的功能,例如Flickr,Twitter和Facebook,国内也掀起了开放的浪潮。处理这些社会化的应用外,企业的组织也在暴露企业的应用功能。WCF Web API允许开发人员通过HTTP开放他们的应用程序、数据和服务。这允许开发人员可以充分利用HTTP作为应用程序的协议,应用程序可以和丰富的客户端进行交互,不仅仅是浏览器、移动设备、桌面应用还是其他的后端服务。他们还可以利用网络的高速缓存和代理的基础设施,通过提供适当的控制和实体头的方式,在
张善友
2018/01/29
8350
WCF Web Api
如何用 Python 打造一个聊天机器人?
不知道玩Slack的人多不多?国内有一个类似的产品,之前搞PythonTG翻译组在用,但是没怎么用起来。感觉这些产品提供的灵活性还蛮大的,可以自己实现许多有意思的机器人。
IT阅读排行榜
2018/08/16
1.9K0
如何用 Python 打造一个聊天机器人?
Web API 和 API 的区别
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,无需理解其内部工作机制细节,只需直接调用使用即可。
梨涡浅笑
2020/10/27
3.3K0
使用 ASP.NET Web API 构建超媒体 Web API
超媒体(通常称为应用程序状态的引擎 (HATEOAS))是具象状态传输 (REST) 的主要限制之一。有一种观念认为超媒体项目(如链接或表单)可用于说明客户端如何与一组 HTTP 服务交互。这迅速成为一个有趣的概念,在开发可演变的 API 设计时会用到它。这与我们通常与 Web 交互的方式没有任何不同。我们通常记住网站主页的一个入口点或 URL,然后使用链接浏览网站的各个不同区域。我们还使用表单,它附带预定义的操作或 URL 以提交网站执行某些操作所需的数据。 开发人员倾向在服务中提供所有支持的方法的静态描
张善友
2018/01/22
2.9K0
使用 ASP.NET Web API 构建超媒体 Web API
「Web编程API」- 02
请注意,本文编写于 2094 天前,最后修改于 174 天前,其中某些信息可能已经过时。
曼亚灿
2023/05/17
5010
「Web编程API」- 02
「Web编程API」- 01
请注意,本文编写于 2096 天前,最后修改于 174 天前,其中某些信息可能已经过时。
曼亚灿
2023/05/17
6880
「Web编程API」- 01
Web Crypto API简介
早年在web端做对称/非对称的加解密还是个很复杂的操作,由于没有js层面的基础库。很多基础设施只能从头开始。
王沛文
2018/07/31
6.2K0
Web 项目刚要打包,却找不到项目资源?
  编程无小事,不管是语言层面还是工具层面,都要熟悉,方能在编程中过程中众享丝滑,不然就随处卡顿,耗费时间不说,还没有任何成就感。撸码过程中用 Idea 也很多年了,工具或环境遇到问题,问下度娘就完事了,也懒得总结记录个啥。但人都犯贱而且健忘,事有再犯,总问度娘也是问题,还是花小点时间记录一下,给自己备忘,也分享给同样问题的人,阿弥陀佛,善哉善哉。
用户1615728
2020/03/02
9840
Web API的CORS
 上面代码代表允许所有跨域请求。当然也可以只允许某个站点进行跨域请求,只需将‘*’改为指定站定即可
莫问今朝
2019/02/25
7000
「Web编程API」- 04
请注意,本文编写于 2088 天前,最后修改于 174 天前,其中某些信息可能已经过时。
曼亚灿
2023/05/17
9100
「Web编程API」- 04
Web API 设计摘要
近期读了一本微电子书 Brian Mulloy 所著《Web API Design》感觉颇多收获,特对其内容做了个整理摘要以便回想其观点精华以指导日常工作中的设计思路。
全栈程序员站长
2022/07/13
4050
Web API 设计摘要
「Web编程API」- 03
请注意,本文编写于 2091 天前,最后修改于 174 天前,其中某些信息可能已经过时。
曼亚灿
2023/05/17
1.4K0
「Web编程API」- 03
常用的web方法 web API(二)
在上一篇《常用的web方法 web API(一)》中我们学习了:绑定事件的几种方式、解绑事件的几种方式、创建元素的几种方式、获取节点的几种方式本篇我们将继续学习:轮播图的js方法、offset系列相关属性、scroll系列属性、client系列以及获取元素计算后的样式属性值。好了,接下来我们接着学习:
凯哥Java
2019/06/28
1.1K0
常用的web方法 web API(二)
常用的web方法 web API(一)
   例子:  my$("btn").onclick=function(){};
凯哥Java
2019/06/28
8140
常用的web方法 web API(一)
import win32api 找不到指定程序_win32api python
使用环境是win7+Python3.4,32位,下载地址:https://sourceforge.net/projects/pywin32/files/pywin32/Build%20220/
全栈程序员站长
2022/11/07
2.8K0
import win32api 找不到指定程序_win32api python

相似问题

根据列的阈值删除行

25

根据阈值删除行

12

熊猫:根据阈值标准删除列

14

根据列中的值和阈值保持值删除行

22

按组阈值选择或删除行

33
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档