首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >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

复制
相关文章
eclipse引入jar包_eclipse导入maven项目
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/03
1.8K0
如何在Eclipse中添加Tomcat的jar包
右键项目工程,点击Java Build Path 点击Add Library,选择Server Runtime 选择Tomcat版本 此时就看到拥有了Tomcat的jar包了
用户1154259
2018/01/17
3.2K0
如何在Eclipse中添加Tomcat的jar包
Eclipse 使用fatjar打包jar文档
发现eclipse打包jar无法连带打包第三方lib,于是选择安装插件fatjar,现在说明fatjar安装过程: 1、安装方法:    1)下载安装:    https://sourceforge.net/projects/fjep/files/    解压下载的ZIP包,将里面的Jar解压到Eclipse安装路径下的plugins文件夹中;    重启eclipse没安装成功,删除eclipse下\configuration\org.eclipse.update\platform.xml重启也无效;    2)在线安装:    eclipse菜单栏 help->install new software...->work with    新增:fatjar - http://kurucz-grafika.de/fatjar    安装失败提示:Failed to prepare partial IU: [R]net.sf.fjep.fatjar 0.0.31. 2、网上说,目前fatjar版本只支持eclipse 3.4前,我的elipse版本是:Version: Mars.1 Release (4.5.1)    CSDN和OSChina上都有人提供Fatjar_0.0.32.zip下载,说可以解决该问题,不过未试验; 3、采用下面这个方法解决eclipse和fatjar版本不兼容的问题:    进入Help -> Install New Software...,    选择Work with列表下的The Eclipse Project Updates - http://download.eclipse.org/eclipse/updates/4.5    在弹出的可安装组件中选择:    Eclipse Tests, Examples, and Extras     打开下拉选择:Eclipse 2.0 Style Plugin Support安装; 4、重新启动eclipse后再通过在线安装fatjar成功,重启eclipse,右键项目,通过Build Fat Jar打包;       或者右键项目选择Export->other->Fat Jar Exporter打包项目。 5、Fatjar打包项目过程,命名jar以及选择Main-class,勾选One-JAR,next后可以看到要打包的第三方lib,finish即可。
Java学习123
2019/03/12
1.8K0
Eclipse将Maven项目打成jar包[通俗易懂]
1:在eclipse中选中项目,右键,Run As,Run Configurations,输入package,然后点击run执行。
全栈程序员站长
2022/06/24
2.3K0
Eclipse将Maven项目打成jar包[通俗易懂]
Eclipse中执行Hbase所需jar包
Eclipse中执行Hbase程序需要导入的jar包如下: 1 Hadoop全部jar包 2 Hbase部分jar包     Hbasejar包不能多也不能少,多了会冲突,少了会提醒找不到相应类,Hb
闵开慧
2018/03/30
1.6K0
Eclipse中执行Hbase所需jar包
eclipse中将java文件打成jar包
软件开发的最后一步就是软件的打包与发布,这也是很重要的一步。这几天在Eclipse中做了一个小软件,准备将其打成可运行的jar包进行发布,在网上搜了好多关于在Eclipse中如何打jar包的方法,大致有以下三种方法: 1、Eclipse export:利用Elicpse中的export将项目导出为一个jar包,这种方法我感觉比较麻烦,得手动写一个清单文件(manifest.mf),而且我在用这种方法打包时并没有成功,试了好多次都没弄好,打成的jar包就是不能运行,所以我放弃使用这种方法。 2、用jar打包命
闵开慧
2018/03/30
1.6K0
eclipse中将java文件打成jar包
eclipse 打包 jar 到 Linux上运行
1、选择需要打包的项目,右键 Export 2、选择Runnable JAR file,然后点击 Next 3、选择jar包运行的main类,以及定义jar包的名字,保存的地方 4、将 导出来的 ja
IT可乐
2018/01/04
4.2K0
eclipse 打包 jar 到 Linux上运行
eclipse打包spring boot项目成jar包的问题
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project
余生大大
2022/10/25
9470
怎么打印当前ClassLoader 加载了哪些Jar
具体代码如下: public static void main(String[] args) { URL[] urLs = Launcher.getBootstrapClassPath().getURLs(); System.out.println("启动类加载器加载的jar:"); for (URL urL : urLs) { System.out.println("==> " + urL.toExternalForm());
共饮一杯无
2022/11/28
6150
怎么打印当前ClassLoader 加载了哪些Jar
eclipse Java项目 动态Java项目 导入MySQL驱动jar包[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/143807.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/26
2.4K0
eclipse Java项目 动态Java项目 导入MySQL驱动jar包[通俗易懂]
maven项目 ,通过cmd加载jar
一:复制项目根路径 二:进入cmd窗口,进入到项目根目录,执行mvn install.
爱明依
2019/03/12
6850
Springboot项目使用java -jar 启动jar包参数详解
nohup java -Xms500m -Xmx500m -Xmn250m -Xss256k -server -XX:+HeapDumpOnOutOfMemoryError -jar $JAR_PATH/test-0.0.1-SNAPSHOT.jar --spring.profiles.active=daily -verbose:class &
IT工作者
2022/05/17
5.8K0
Jython动态加载Jar
用Jython做单元测试Java项目的时候,需要能动态的从Jar包里load类。 以下是一个简单的方法: import sys sys.path+=["./extlibs/servlet-api-2.5.jar"] from javax.servlet.http import * 第二行是关键,只要你能找到Jar的位置,就不愁加载不起来哈。
Linker
2018/04/13
1.3K0
如何替换jar中的jar配置
spring boot项目,使用jar方式打包部署;有时候我们需要替换项目中某个引用jar,又不想将整个项目重新打包。
summerking
2022/09/19
2.8K0
eclipse或者idea的jar包如何找到并下载?
所有的jar包都在一个mvn库里! 点击下面的地址即可:https://mvnrepository.com/ 步骤图解: 想在web项目导入jar包下载第一个,想在mvn项目中引入复制粘贴第二个
阮键
2020/05/08
1.5K0
Java Source Attacher插件(Eclipse自动下载jar包源码)
Java Source Attacher插件(Eclipse自动下载jar包源码)         当你还在使用Eclipse开发,时常需要查看源码(大神都是喜欢看源代码的**),无意中发现Eclipse下有一款插件Java Source Attacher可以实现下载源码功能,分享给大家使用,安装操作十分简单,如下是安装步骤: 1.     在安装之前首先下载这个jar。 下载地址:http://download.csdn.net/detail/qq_26334813/9904742 2.     将这个下
秋日芒草
2018/05/15
1.7K0
Jar 命令打包 jar包
jar -cvfm hello.jar manifest5.mf -C src/ .
用户1591129
2019/07/01
5.8K0
springBoot导入本地jar并且要求通过maven打包到项目的jar中|Unable to open nested jar file 'BOOT-INF/lib/xxxxxx.jar'
今天做项目的时候,需要用到第三方写的jar包,我们知道,maven项目是在pom.xml文件中,引入jar包的maven地址,这样是可以直接import的,eg
小小鱼儿小小林
2020/06/24
4.5K0
springBoot导入本地jar并且要求通过maven打包到项目的jar中|Unable to open nested jar file 'BOOT-INF/lib/xxxxxx.jar'
jar中没有主清单属性啥意思啊_eclipse 找不到或无法加载主类
今天新写的SpringBoot项目打jar包部署的时候遇到一个问题,xxx.jar包中没有主清单属性。如下图所示:
全栈程序员站长
2022/10/03
2.2K0
jar中没有主清单属性啥意思啊_eclipse 找不到或无法加载主类
点击加载更多

相似问题

Eclipse JAR在运行时

12

如何在eclipse插件ClassLoader中加载额外的jar

23

jar到eclipse项目

10

如何在eclipse中添加非maven项目jar文件?

17

使用外部JAR构建Eclipse项目

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