[問題] 畫累積分布函數(CDF)圖的問題

看板R_Language作者 (沒有妳的我)時間5年前 (2019/05/24 12:44), 編輯推噓3(3021)
留言24則, 2人參與, 5年前最新討論串1/1
[問題類型]: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) [軟體熟悉度]: 入門(寫過其他程式,只是對語法不熟悉) [問題敘述]: 想請教各位大大 目前我有一筆降雨資料(ncdf檔),資料的維度為經度41格,緯度77格,總天數為9862天, 現在我想要將所有網格所有天數(41x77x9862)的降雨值出來畫累積分布圖(CDF),我所用 的指令為ecdf(),但圖始終畫不出來,Console右上角的紅點出現了快半小時後消失且沒 有出現錯誤訊息,但畫圖區還是一片空白,不確定是不是要畫的值太多所導致還是另有 其他原因,所以想請教各位大大有什麼方法可以解決這個問題,謝謝。 降雨資料放置於此:http://0rz.tw/JI056 [程式範例]: library(ncdf4) library(data.table) library(tidyverse) memory.limit(size=50000) #讀取資料 HIRAM_WRF_file <- "C:\\Users\\TOM\\Desktop\\197901-200512_pr_axis_time_domain.nc" HIRAM_WRF_data <- nc_open(HIRAM_WRF_file) print(HIRAM_WRF_data) hiram_wrf_lon <- ncvar_get(HIRAM_WRF_data,"lon") hiram_wrf_lat <- ncvar_get(HIRAM_WRF_data,"lat") hiram_wrf_time <- ncvar_get(HIRAM_WRF_data,"time") hiram_wrf_pr <- ncvar_get(HIRAM_WRF_data,"pr") hiram_wrf_pr dim(hiram_wrf_pr) #畫CDF曲線 hiram_wrf_pr_cdf <- ecdf(hiram_wrf_pr[hiram_wrf_pr>=0]) summary(hiram_wrf_pr_cdf) plot(hiram_wrf_pr_cdf,col="black",lwd=2 ,xlim=c(0,2000),ylim=c(0,1),xlab="pr(mm)",ylab="CDF") [環境敘述]: https://imgur.com/psT3fMx
[關鍵字]: 累積分布函數 CDF ncdf檔 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.162.166.123 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1558673077.A.F67.html

05/24 14:16, 5年前 , 1F
可以貼一張你期待的圖嗎?外觀類似即可。
05/24 14:16, 1F

05/24 14:51, 5年前 , 2F

05/24 15:15, 5年前 , 3F
andrew大~我如果把範圍改成>=100就可以畫的出來(下圖
05/24 15:15, 3F

05/24 15:15, 5年前 , 4F
),我在想可能是值過多的問題,不知道有沒有什麼方法
05/24 15:15, 4F

05/24 15:15, 5年前 , 5F
可以解決
05/24 15:15, 5F

05/24 15:16, 5年前 , 6F

05/24 16:02, 5年前 , 7F
確實ram爆掉了。我覺得改成分組加權cdf來做應該就好了
05/24 16:02, 7F

05/24 16:04, 5年前 , 8F

05/24 18:08, 5年前 , 9F
感謝andrew大,不過想請教你用wtd.Ecdf()如果像這樣
05/24 18:08, 9F

05/24 18:08, 5年前 , 10F
不分配權重給它是不是畫出來就等於原本用ecdf()畫出
05/24 18:08, 10F

05/24 18:08, 5年前 , 11F
來是一樣的,只是把所有的值做分組再畫而已呢?!
05/24 18:08, 11F

05/24 18:58, 5年前 , 12F
對,只不過會有一點失真,但切夠細在圖上看不出來
05/24 18:58, 12F

05/24 20:17, 5年前 , 13F
等等,要權重才是喔
05/24 20:17, 13F

05/24 22:44, 5年前 , 14F
什麼意思??是要分配權重才會等於用ecdf畫出來的一樣
05/24 22:44, 14F

05/24 22:44, 5年前 , 15F
嗎?!
05/24 22:44, 15F

05/24 22:55, 5年前 , 16F
當然啊。把100個人按身高分成三類,每類幾個人你不理
05/24 22:55, 16F

05/24 22:56, 5年前 , 17F
的話怎麼逼cdf
05/24 22:56, 17F

05/24 22:58, 5年前 , 18F
於是你只有A/B/C三類,沒別的東西了,如何畫cdf?
05/24 22:58, 18F

05/24 23:21, 5年前 , 19F
了解,權重的分配就是依據看A.B.C這三類的人數多寡去
05/24 23:21, 19F

05/24 23:21, 5年前 , 20F
分配對吧?!
05/24 23:21, 20F

05/24 23:28, 5年前 , 21F
所以andrew大所寫的程式碼所分配的權重就是依據每個區
05/24 23:28, 21F

05/24 23:28, 5年前 , 22F
間(10為一區間)所發生的次數去給它囉?!
05/24 23:28, 22F

05/24 23:38, 5年前 , 23F
對。例如0-10切一份,這份的數都當成是5,取中間的意思
05/24 23:38, 23F

05/24 23:47, 5年前 , 24F
了解,非常感謝andrew大,又讓我學到了不少
05/24 23:47, 24F
文章代碼(AID): #1SvtQrzd (R_Language)
文章代碼(AID): #1SvtQrzd (R_Language)