2016-10-12 56 views
0

這是我之前發佈的here的擴展。有沒有一種方法可以減少R中向量所需的內存?

我在R.

總結工作,我的載體是巨大的(13GB),但他們不應該。原始的csv文件只是這個尺寸的一小部分。你可以想像,13GB是不是我的機器多一點記憶也,別提什麼分配給R.

我目前正在關閉的代碼:

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)?要清楚,不要詢問統計數據。我在問如何以更高效的方式做到這一點。

+0

謝謝你試圖提供你的數據。話雖如此,Dropbox和Google Drive(等等)鏈接不允許共享數據,因爲它們代表安全風險,並且它們往往會隨時間而破碎。 –

+1

fANCOVA via - https://cran.r-project.org/web/packages/fANCOVA/ - 也許? – thelatemail

+0

@ Hack-R感謝您的支持。有沒有更好的/首選的方式來共享虛擬數據以提供可重複的示例? @ thelatemail我會給它一個鏡頭並回報,謝謝 – Jesse001

回答

0

這是我的建議,它在我卑微的筆記本電腦上運行良好。你可以用手段測試來補充它,以確保樣本足夠反映人口。

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 

enter image description here

即使只有1000我沒有發現在裝置中的任何顯著差異的樣本

t.test(data1$s, data2$s) 
Welch Two Sample t-test 

data: data1$s and data2$s 
t = -1.4469, df = 1017.9, p-value = 0.1482 
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval: 
-37.657822 5.692622 
sample estimates: 
mean of x mean of y 
125.3137 141.2963 

5000樣品:

data2 <- sample_n(data1, 5000) # make statistics work for you -- sample the data 
t.test(data1$s, data2$s) 
Welch Two Sample t-test 

data: data1$s and data2$s 
t = -1.0653, df = 5513.7, p-value = 0.2868 
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval: 
-14.736700 4.359704 
sample estimates: 
mean of x mean of y 
125.3137 130.5022 
t.test(data1$dt, data2$dt) 
Welch Two Sample t-test 

data: data1$dt and data2$dt 
t = -0.069479, df = 5507.8, p-value = 0.9446 
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval: 
-18.39645 17.13709 
sample estimates: 
mean of x mean of y 
515.6206 516.2503 
t.test(data1$dip, data2$dip) 
Welch Two Sample t-test 

data: data1$dip and data2$dip 
t = 1.2044, df = 5536.3, p-value = 0.2285 
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval: 
-0.6268062 2.6241395 
sample estimates: 
mean of x mean of y 
126.6667 125.6680 

,當然還有,你可以使用更多的/差異的統計數據取決於你想要多遠,拿它來驗證您的樣品。您也可以預先估算功率曲線以確定樣本大小。

以10,000個樣本爲例,我的筆記本電腦花了大約3分鐘的時間完成。以1,000的樣品即時完成。

+0

這會減少R中向量所需的內存嗎? – user5359531

+0

@ user5359531絕對!至少10倍。這是通過抽樣使得每個細節的尺寸更小。我得到了與完整數據相同的錯誤,並且沒有任何合理的樣本大小錯誤。否則我不可能得到那個結果圖(反正它不太漂亮)。 –

+0

那不是減少了一個向量的內存需求,那只是做一個不同的較小的向量 – user5359531

相關問題