看板 R_Language 關於我們 聯絡資訊
[問題類型]: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) [軟體熟悉度]: 新手 [問題敘述]: 小弟現在有20筆data,假設叫T,和自己定義的函數surlikelihood(x,t), 其中x包含變數(x1,x2,x3),t是輸入的data, 把這20筆data代入surlikelihood(x,t),即surlikelihood(x,T) 整理成有3個變數的函數,即surlikelihood=f(x1,x2,x3),0<x1<1,0<x2,0<x3, 想對這個函數作圖,要在四度空間才辦的到,所以我想固定x3=5之下, 去畫surlikelihood=f(x1,x2,5)的三維度立體圖,該怎麼做? 固定x2=5,x3=5之下,去畫surlikelihood=f(x1,5,5)的二維度曲線,又該怎麼做? 範例附上20筆data和surlikelihood函數,還請版上高手和先進們給小弟指教, 謝謝~ [程式範例]: http://pastebin.com/EEgXsWHA [環境敘述]: R x64 3.3.1 [關鍵字]: 高維度 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.224.1.196 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1486659291.A.337.html
Edster: contour/image/persp就可以畫三維了,要四維就是persp 02/10 08:52
Edster: 設定每個網格的顏色成為第四維 02/10 08:53
Edster: 回到你的標題,你的資料存成array就可以處裡多維度的結構 02/10 08:54
Edster: 你的code看了有點難過 順手改了 02/10 10:55
Edster: http://pastebin.com/tTn7VNHM 02/10 10:55
Edster: 然後你自己把資料改成array,就可以省去t[t[,4]==i,2]這段 02/10 11:06
phil5566: 謝謝E大回答,您說的把資料改成array,是否就是 02/11 00:47
phil5566: array(T,c(20,9))?但我不太懂為何可以省去 02/11 00:48
phil5566: "t[t[,4]==i,2]這段"?還有我試了一下image好像是把data 02/11 00:50
phil5566: http://imgur.com/a/G7Q33變成這種效果,我想做的效果是 02/11 00:55
phil5566: 類似這種https://goo.gl/kwjQnV可以看出函數發生極值點 02/11 01:01
phil5566: 的立體圖形,不知是否有誤解您的意思,能否給個code範例? 02/11 01:03
Edster: 要看你丟進去的資料,例如你選到一個整列都是同一個數值 02/11 11:32
Edster: 的當然會畫成這樣,你要研究你自己的資料結構怎麼餵進去 02/11 11:32
Edster: 。 02/11 11:32
Edster: 你對array結構理解有誤,多看範例吧。 02/11 11:32
phil5566: 可是我想畫的是函數圖形,和data結構有什麼關係?不懂? 02/11 13:09
Edster: 不然你拿什麼畫圖? 不就是資料? 02/11 19:55
phil5566: 看了範例persp比較符合我的需求,但它是定出x,y和f 02/12 01:50
phil5566: 假設x1代表x,x2代表y,那他的f就相當於我的 02/12 01:53
phil5566: surlikelihood(a,T),a<-c(x1,x2,5) 02/12 01:55
phil5566: x1 <- seq(-10, 10, length= 30) 02/12 02:21
phil5566: x2 <- x1 02/12 02:22
phil5566: a<-c(x1,x2,5) 02/12 02:22
phil5566: 前面有說x1,x2範圍,但先假設沒範圍限制下來作圖 02/12 02:24
phil5566: f <-function(x,y) surlikelihood(a,T) 02/12 02:25
phil5566: wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww 02/12 02:28
phil5566: 上面這一行我只是想表示原本surlikelihood代入data T和 02/12 02:30
phil5566: 固定x3=5之下,只剩x(x1)和y(x2)兩個變數的函數 02/12 02:32
phil5566: 但這樣寫應該是錯的,不知道這一塊該怎麼處理才好? 02/12 02:33
phil5566: 之後再接z <- outer(x, y, f) 02/12 02:38
phil5566: z[is.na(z)] <- 1 02/12 02:38
phil5566: persp(x, y, z, theta = 30, phi = 30, expand = 0.5, c 02/12 02:39
phil5566: ol = "lightblue") 02/12 02:39
phil5566: 應該可以畫出立體圖......只是 02/12 02:40
phil5566: f <-function(x,y) surlikelihood(a,T)這行該怎麼改才對 02/12 02:41
phil5566: ? 02/12 02:41