作者phil5566 (5566)
看板R_Language
標題[問題] 多變數函數中如何固定某些變數做圖/畫線?
時間Fri Feb 10 00:54:48 2017
[問題類型]:
程式諮詢(我想用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://webptt.com/m.aspx?n=bbs/R_Language/M.1486659291.A.337.html
1F:推 Edster: contour/image/persp就可以畫三維了,要四維就是persp 02/10 08:52
2F:→ Edster: 設定每個網格的顏色成為第四維 02/10 08:53
3F:→ Edster: 回到你的標題,你的資料存成array就可以處裡多維度的結構 02/10 08:54
4F:推 Edster: 你的code看了有點難過 順手改了 02/10 10:55
6F:推 Edster: 然後你自己把資料改成array,就可以省去t[t[,4]==i,2]這段 02/10 11:06
7F:→ phil5566: 謝謝E大回答,您說的把資料改成array,是否就是 02/11 00:47
8F:→ phil5566: array(T,c(20,9))?但我不太懂為何可以省去 02/11 00:48
9F:→ phil5566: "t[t[,4]==i,2]這段"?還有我試了一下image好像是把data 02/11 00:50
12F:→ phil5566: 的立體圖形,不知是否有誤解您的意思,能否給個code範例? 02/11 01:03
13F:推 Edster: 要看你丟進去的資料,例如你選到一個整列都是同一個數值 02/11 11:32
14F:→ Edster: 的當然會畫成這樣,你要研究你自己的資料結構怎麼餵進去 02/11 11:32
15F:→ Edster: 。 02/11 11:32
16F:→ Edster: 你對array結構理解有誤,多看範例吧。 02/11 11:32
17F:→ phil5566: 可是我想畫的是函數圖形,和data結構有什麼關係?不懂? 02/11 13:09
18F:推 Edster: 不然你拿什麼畫圖? 不就是資料? 02/11 19:55
19F:→ phil5566: 看了範例persp比較符合我的需求,但它是定出x,y和f 02/12 01:50
20F:→ phil5566: 假設x1代表x,x2代表y,那他的f就相當於我的 02/12 01:53
21F:→ phil5566: surlikelihood(a,T),a<-c(x1,x2,5) 02/12 01:55
22F:→ phil5566: x1 <- seq(-10, 10, length= 30) 02/12 02:21
23F:→ phil5566: x2 <- x1 02/12 02:22
24F:→ phil5566: a<-c(x1,x2,5) 02/12 02:22
25F:→ phil5566: 前面有說x1,x2範圍,但先假設沒範圍限制下來作圖 02/12 02:24
26F:→ phil5566: f <-function(x,y) surlikelihood(a,T) 02/12 02:25
27F:→ phil5566: wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww 02/12 02:28
28F:→ phil5566: 上面這一行我只是想表示原本surlikelihood代入data T和 02/12 02:30
29F:→ phil5566: 固定x3=5之下,只剩x(x1)和y(x2)兩個變數的函數 02/12 02:32
30F:→ phil5566: 但這樣寫應該是錯的,不知道這一塊該怎麼處理才好? 02/12 02:33
31F:→ phil5566: 之後再接z <- outer(x, y, f) 02/12 02:38
32F:→ phil5566: z[is.na(z)] <- 1 02/12 02:38
33F:→ phil5566: persp(x, y, z, theta = 30, phi = 30, expand = 0.5, c 02/12 02:39
34F:→ phil5566: ol = "lightblue") 02/12 02:39
35F:→ phil5566: 應該可以畫出立體圖......只是 02/12 02:40
36F:→ phil5566: f <-function(x,y) surlikelihood(a,T)這行該怎麼改才對 02/12 02:41
37F:→ phil5566: ? 02/12 02:41