[問題] 多變數函數中如何固定某些變數做圖/畫線?

看板R_Language作者 (5566)時間7年前 (2017/02/10 00:54), 編輯推噓5(5032)
留言37則, 2人參與, 最新討論串1/1
[問題類型]: 程式諮詢(我想用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

02/10 08:52, , 1F
contour/image/persp就可以畫三維了,要四維就是persp
02/10 08:52, 1F

02/10 08:53, , 2F
設定每個網格的顏色成為第四維
02/10 08:53, 2F

02/10 08:54, , 3F
回到你的標題,你的資料存成array就可以處裡多維度的結構
02/10 08:54, 3F

02/10 10:55, , 4F
你的code看了有點難過 順手改了
02/10 10:55, 4F

02/10 10:55, , 5F

02/10 11:06, , 6F
然後你自己把資料改成array,就可以省去t[t[,4]==i,2]這段
02/10 11:06, 6F

02/11 00:47, , 7F
謝謝E大回答,您說的把資料改成array,是否就是
02/11 00:47, 7F

02/11 00:48, , 8F
array(T,c(20,9))?但我不太懂為何可以省去
02/11 00:48, 8F

02/11 00:50, , 9F
"t[t[,4]==i,2]這段"?還有我試了一下image好像是把data
02/11 00:50, 9F

02/11 00:55, , 10F
http://imgur.com/a/G7Q33變成這種效果,我想做的效果是
02/11 00:55, 10F

02/11 01:01, , 11F
類似這種https://goo.gl/kwjQnV可以看出函數發生極值點
02/11 01:01, 11F

02/11 01:03, , 12F
的立體圖形,不知是否有誤解您的意思,能否給個code範例?
02/11 01:03, 12F

02/11 11:32, , 13F
要看你丟進去的資料,例如你選到一個整列都是同一個數值
02/11 11:32, 13F

02/11 11:32, , 14F
的當然會畫成這樣,你要研究你自己的資料結構怎麼餵進去
02/11 11:32, 14F

02/11 11:32, , 15F
02/11 11:32, 15F

02/11 11:32, , 16F
你對array結構理解有誤,多看範例吧。
02/11 11:32, 16F

02/11 13:09, , 17F
可是我想畫的是函數圖形,和data結構有什麼關係?不懂?
02/11 13:09, 17F

02/11 19:55, , 18F
不然你拿什麼畫圖? 不就是資料?
02/11 19:55, 18F

02/12 01:50, , 19F
看了範例persp比較符合我的需求,但它是定出x,y和f
02/12 01:50, 19F

02/12 01:53, , 20F
假設x1代表x,x2代表y,那他的f就相當於我的
02/12 01:53, 20F

02/12 01:55, , 21F
surlikelihood(a,T),a<-c(x1,x2,5)
02/12 01:55, 21F

02/12 02:21, , 22F
x1 <- seq(-10, 10, length= 30)
02/12 02:21, 22F

02/12 02:22, , 23F
x2 <- x1
02/12 02:22, 23F

02/12 02:22, , 24F
a<-c(x1,x2,5)
02/12 02:22, 24F

02/12 02:24, , 25F
前面有說x1,x2範圍,但先假設沒範圍限制下來作圖
02/12 02:24, 25F

02/12 02:25, , 26F
f <-function(x,y) surlikelihood(a,T)
02/12 02:25, 26F

02/12 02:28, , 27F
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
02/12 02:28, 27F

02/12 02:30, , 28F
上面這一行我只是想表示原本surlikelihood代入data T和
02/12 02:30, 28F

02/12 02:32, , 29F
固定x3=5之下,只剩x(x1)和y(x2)兩個變數的函數
02/12 02:32, 29F

02/12 02:33, , 30F
但這樣寫應該是錯的,不知道這一塊該怎麼處理才好?
02/12 02:33, 30F

02/12 02:38, , 31F
之後再接z <- outer(x, y, f)
02/12 02:38, 31F

02/12 02:38, , 32F
z[is.na(z)] <- 1
02/12 02:38, 32F

02/12 02:39, , 33F
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, c
02/12 02:39, 33F

02/12 02:39, , 34F
ol = "lightblue")
02/12 02:39, 34F

02/12 02:40, , 35F
應該可以畫出立體圖......只是
02/12 02:40, 35F

02/12 02:41, , 36F
f <-function(x,y) surlikelihood(a,T)這行該怎麼改才對
02/12 02:41, 36F

02/12 02:41, , 37F
?
02/12 02:41, 37F
文章代碼(AID): #1Od9xRCt (R_Language)