首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法减少R中的向量所需的内存?

有没有办法减少R中的向量所需的内存?
EN

Stack Overflow用户
提问于 2016-10-13 07:30:07
回答 1查看 474关注 0票数 0

这是我上一篇文章here的扩展。

我在R工作。

总而言之,我的向量很大(13 be ),但它们不应该很大。原始csv文件是该大小的一小部分。正如您可以想象的那样,13 R.的内存比我的机器的内存要多一点,别管分配给R的是什么。

我目前正在编写的代码是:

代码语言:javascript
复制
data1<-read.csv("stackexample.csv") ##read in dummy data
data1C<- data1[,3:13] #cut off the ends
SvDvDis<-data1C[c(-3,-4,-6,-7,-9,-10,-11)] #drop individual columns
attach(ScDcDis) #attach for simplicity sake
sm.ancova(s,dt,dip,model="none") #non-parametric ANCOVA

可以在my dropbox上找到虚拟数据文件。

有没有办法减少这个函数使用的内存,或者有没有替代的编码/函数以较少的内存密集型方式执行相同的分析(非参数ANCOVA)?先说清楚,不是问统计数据。我想问的是如何以一种更高效的内存方式来做到这一点。

EN

回答 1

Stack Overflow用户

发布于 2016-10-13 07:54:46

这是我的建议,它在我不起眼的笔记本上运行得很好。你可以用均值检验来补充它,以确保样本能够充分反映总体。

代码语言:javascript
复制
data1   <- read.csv("stackexample.csv") ##read in dummy data

library(dplyr)
library(sm)

data2 <- sample_n(data1, 10000) # make statistics work for you -- sample the data
sm.ancova(x     = data2$s,
          y     = data2$dt,
          group = data2$dip,
          model = "none") #non-parametric ANCOVA

即使只有1000个样本,我也没有发现任何显着的均值差异。

代码语言:javascript
复制
t.test(data1$s, data2$s)

以5000个样本为例:

代码语言:javascript
复制
data2 <- sample_n(data1, 5000) # make statistics work for you -- sample the data
t.test(data1$s, data2$s)

两个样本t检验数据: data1$s和data2$s t= -1.0653,df = 5513.7,p值= 0.2868备选假设:均值的真实差异不等于0.95%置信区间:-14.736700 4.359704样本估计:y 125.3137 130.5022的x均值的均值

代码语言:javascript
复制
t.test(data1$dt, data2$dt)

代码语言:javascript
复制
t.test(data1$dip, data2$dip)

当然,您可以使用more/difference统计信息来验证您的样本,这取决于您想要将它带到什么程度。您还可以预先估计功率曲线,以确定样本大小。

对于10,000个样本,在我的笔记本电脑上大约需要3分钟才能完成。对于1000个样本,它立即完成。

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

https://stackoverflow.com/questions/40009965

复制
相关文章

相似问题

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