Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >mantelhaen.test()外接函数错误中的NA/NaN/Inf

mantelhaen.test()外接函数错误中的NA/NaN/Inf
EN

Stack Overflow用户
提问于 2018-01-24 04:22:43
回答 1查看 1.5K关注 0票数 3

我有一个100 K行的数据,我想要计算一个Cochran-Mantel-Haenszel测试。

我的变量是受教育程度和以分位数计算的分数,分组变量是性别,代码行如下所示:

代码语言:javascript
运行
AI代码解释
复制
mantelhaen.test(db$education, db$score.grouped, db$sex)

此代码引发此错误并发出警告:

qr.default(a,tol = tol)中的错误:外部函数调用中的NA/NaN/Inf (arg 1) 此外:警告消息: ntot *rowsum:整数溢出产生的NAs

这个错误似乎是由我的第一个变量引起的,因为在测试的7个变量中,我只遇到了其中两个变量的问题,这似乎没有明显的共同之处。

缺失的值和因子级别似乎在抛出错误的变量和不抛出错误的变量之间没有区别。我尝试了完整的情况(使用na.omit),问题仍然存在。

是什么触发了这个错误?这是否意味着?

我怎么才能摆脱它?

有趣的帖子:外部函数调用中的NA/NaN/Inf (第1条)什么是R中的整数溢出,它如何发生?

增编:这是str的结果(失败是educationimc.cl):

代码语言:javascript
运行
AI代码解释
复制
str(db[c("education","score.grouped","sex", ...)])
'data.frame':   104382 obs. of  7 variables:
 $ age.cl: Ord.factor w/ 5 levels "<30 ans"<"30-40 ans"<..: 5 2 1 1 3 4 2 3 4 4 ...
  ..- attr(*, "label")= chr "age"
 $ emploi2          : Factor w/ 8 levels "Agriculteurs exploitants",..: 3 5 6 8 8 8 8 3 3 3 ...
  ..- attr(*, "label")= chr "CSP"
 $ tabac            : Factor w/ 4 levels "ancien fumeur",..: 4 1 4 4 3 4 4 1 4 4 ...
  ..- attr(*, "label")= chr "tabac"
 $ situ_mari2       : Factor w/ 3 levels "Vit seul","Divorsé, séparé ou veuf",..: 3 2 1 1 1 3 1 3 2 3 ...
  ..- attr(*, "label")= chr "marriage"
 $ education        : Factor w/ 3 levels "Universitaire",..: 1 1 1 1 3 1 1 1 1 1 ...
 $ revenu.cl        : Factor w/ 4 levels "<1800 euros/uc",..: 3 4 2 NA 4 1 1 4 4 1 ...
 $ imc.cl           : Ord.factor w/ 6 levels "Maigre"<"Normal"<..: 2 2 1 2 3 1 3 2 2 3 ...
  ..- attr(*, "label")= chr "IMC"

编辑:通过在函数内部跳转,错误和警告是由调用qr.solve引起的。我不明白这件事,但我会试着往下跳

EDIT2:在qr.solve中,错误由对.F_dqrdc2Fortran调用引发。这超出了我的水平,我的鼻子开始流血了。

EDIT3:我试图对数据进行head以确定哪一行是原因所在:

代码语言:javascript
运行
AI代码解释
复制
db2 = db %>% head(99787)   #fails at 99788
db2 = db %>% tail(99698)   #fails at 99699
mantelhaen.test(db2$education, db2$score.grouped, db2$sex)

这给我的信息不多,但也许可以给你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-24 09:40:41

我能够通过扩大数据集来复制这个问题。

代码语言:javascript
运行
AI代码解释
复制
set.seed(101); n <- 500000
db <- data.frame(education=
                   factor(sample(1:3,replace=TRUE,size=n)),
                 score=
                   factor(sample(1:5,replace=TRUE,size=n)),
                 sex=
                   sample(c("M","F"),replace=TRUE,size=n))

在此之后,mantelhaen.test(db$education, db$score, db$sex)给出了报告的错误。

值得庆幸的是,真正的问题并不在QR分解代码的内部:而是发生在QR分解之前设置一个矩阵时。有两种计算,ntot*colsumsntot*rowsums,使R的整数计算能力溢出。有一种相对简单的方法可以通过创建函数的修改版本来解决这个问题:

  • 复制源代码:dump("mantelhaen.test",file="my_mh.R")
  • 编辑源代码
    • l. 1:将函数名修改为my_mantelhaen.test (以避免混淆)
    • 第199和200行:将ntot更改为as.numeric(ntot),在溢出发生之前将整数转换为双精度

  • 读取新函数的source("my_mh.R")

现在

代码语言:javascript
运行
AI代码解释
复制
my_mantelhaen.test(db$education, db$score, db$sex)  

应该行得通。为了确保得到相同的答案,您肯定应该对照旧函数测试新函数。

现在发到R错误列表上,我们看看会发生什么.

更新2018年5月11日:这是修正了R的开发版本 (3.6be)。

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

https://stackoverflow.com/questions/48422398

复制
相关文章
html表单验证确认密码_简述html5的表单验证
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/17
3.6K0
html表单验证确认密码_简述html5的表单验证
AngularJS 的输入验证机制:内置验证器、自定义验证器和显示验证信息
AngularJS 是一款流行的前端JavaScript框架,提供了强大的表单处理功能。其中一个关键特性是输入验证,即对用户输入进行验证以确保数据的有效性和完整性。本文将详细介绍 AngularJS 的输入验证机制,包括内置验证器、自定义验证器和显示验证信息等内容。
网络技术联盟站
2023/07/05
3920
[译]HTML验证的价值探讨
[译]HTML验证的价值探讨 作者:Nicholas C. Zakas 原文:http://www.nczonline.net/blog/2010/08/17/the-value-of-html-validation/ 这篇文章我已经酝酿了很久,期间还拜读了 Chris Heilmann 关于 Remy Sharp’s site 的这篇大作。我和Chris曾就这个话题多次交换意见,最终我们彼此的观点都有所改变,接受了一些过去无法接受的意见。我曾经在公开的、私下的各种场合直言不讳地表示过,目前的HTML验证状
小李刀刀
2018/03/02
1K0
HTML5-输入验证
HTML5引入了对输入验证的支持。设计者可告知浏览器自己需要什么类型的数据,然后浏览器在提交表单之前会使用这些信息检查用户输入的数据是否有效。其好处是:用户可以立刻得到问题反馈。
奋飛
2021/08/30
1.6K0
HTML5-输入验证
HTML5-输入验证
HTML5引入了对输入验证的支持。设计者可告知浏览器自己需要什么类型的数据,然后浏览器在提交表单之前会使用这些信息检查用户输入的数据是否有效。其好处是:用户可以立刻得到问题反馈。
奋飛
2019/08/15
2.1K0
动手实现一个JSON验证器(上)
分析 既然要验证JSON的有效性,那么必然需要清楚的知道JSON格式,这个在JSON官网已经给我们画出来了: 从官方的图上面可以看出,JSON的组成一共有五部分: object: 以左大括号({)开头
李海彬
2018/03/26
1.5K0
动手实现一个JSON验证器(上)
HTML5表单及其验证
将原本type为text的input控件声明为以上特殊类型,是为了给用户呈现不同的输入界面(移动平台上支持这些不同的输入界面,这里就不细说),而且表单提交时会对其值做进一步的验证。下面展示这些新表单元素,请用支持这些表单元素的浏览器查看,IE对其支持最差。
HUC思梦
2020/09/03
1.8K0
Spring MVC-07循序渐进之验证器 上 (Spring自带的验证框架)
Converter和Formatter作用域Field级。 在MVC应用程序中,它们将String转换或者格式化成另外一种Java类型,比如java.util.Date.
小小工匠
2021/08/17
6720
HTML 交互式表单验证
在 HTML 中创建表单总是有点复杂。你首先得将 HTML 标记编写正确,然后需要确保每一个表单项在提交之前都有一个可用的值,最后还需要在有问题时用提醒来告知用户。   还好 HTML5 引入了一些新
用户1667431
2018/04/18
2.2K0
HTML 交互式表单验证
Alamofire验证器Validation
Alamofire融合Swift本身的特点,使用起来更加简单方便。下面引用官方Demo,发起一个请求并json解析处理。
Light413
2020/04/08
1.6K0
Alamofire验证器Validation
eBPF验证器原理
之前对eBPF验证器的了解仅停留在概念层面,那么验证器究竟是如何保证eBPF程序的安全呢,本文揭开eBPF验证器的检查细节。
Jinrong
2022/07/21
2K0
eBPF验证器原理
Spring Security实战-认证核心验证器验证逻辑AuthenticationProviderManagerAuthenticationProvider
提供了基本的认证逻辑和方法 它包含了一个List<AuthenticationProvider>对象
JavaEdge
2018/12/14
3.5K0
身份验证器是如何验证我们的身份?
​ 我以为我最初遇见他是在宝塔面板上,因为他可以方便的帮助我们进行身份验证。其实我们早就相遇在QQ安全中心手机版的口令里面(此处不确定是否是使用同一种算法,不过原理类似)。当初遇见他,我并不知道他是离线的。我以为谷歌身份验证器肯定是绑定谷歌账号的。后来找了半天,原来他只是个离线的软件。相信有很多同学和我一样的想法:离线身份验证器如何能使我们登录在线的场景?
yumusb
2020/08/28
4.3K0
HTML简单注册界面——含表单验证
最近学习HTML表单,感慨万千。虽然看起来好像不难学,但要是真自己实践起来问题却多多。这里是我写的一个简单的注册页面,只有“注册账号、密码、重输密码”三个文本框,还包含了原生JavaScript验证。(记一下,也希望能给有需要的人一点帮助。)
全栈程序员站长
2022/11/17
5.4K0
HTML简单注册界面——含表单验证
通过RestTemplate设置header&body,绕过证书验证,并获取返回的header&body
但是报缺少安全证书:unable to find valid certification path to requested target
chenchenchen
2021/09/06
1.5K0
Hyperf 初体验-验证器
Hyperf 1.1.0 更新内容比较多,但总的来说框架越来越完善。这次更新新增了 Validation 验证器 基于 Laravel,同时增加了大量的单侧。
hedeqiang
2019/12/18
1.9K0
Django-DRF | 验证器
Django REST框架构建Web API。Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
小团子
2020/02/20
1.7K0
Oauth2.0验证器
周末写的的小网站,功能是验证Oauth2.0授权服务器的可用性,帮助开发者调试Oauth2.0授权服务器,以便把服务器快速搭建出来。
巴法
2019/09/29
9210
Oauth2.0验证器
HTML5新增的表单验证功能
一、HTML5表单的特点: HTML5 表单增加了许多内置的控件和控件属性 XHTML 中需要放在 form 之中的诸如 input/button/select/textarea 等标签元素,在 HTML 5 中完全可以放在页面任何位置,并通过新增的 form 属性指向元素所属表单的 ID 值,即可关联起来。 二、HTML5新增的控件类型: email输入类型:<input type="email" name="email" /> 要求输入格式正确的 email 地址,否则浏览器不允许提交,同时会提示错
Leophen
2019/08/23
2.6K0
点击加载更多

相似问题

W3验证Html错误

14

HTML表单的W3验证

24

用于HTML5的W3验证器

20

Joomla w3验证器

11

w3验证器的HTML开始编码问题

216
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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