Re: [問題] 如何畫abline於特定的區間上

看板R_Language作者 (討厭有好心推文後刪文者)時間9年前 (2015/07/24 23:37), 編輯推噓1(103)
留言4則, 2人參與, 最新討論串2/3 (看更多)
按你的例子,幫你改寫一下。 # 建立資料 set.seed(1) dt <- data.frame( x = runif(30), y = c(rnorm(10,1,0.2), rnorm(10,2,0.2), rnorm(10,3,0.2)) ) # 建三個迴歸式 lm.1 <- lm(y ~ x, data = dt[ 1:10, ]) lm.2 <- lm(y ~ x, data = dt[11:20, ]) lm.3 <- lm(y ~ x, data = dt[21:30, ]) # 1. 我希望迴歸線的 x 在 [0.2, 0.8] # 2. 如果迴歸線是直線,predict 二個點即可; # 如果是曲線,就 predict 很多點讓它看起來像曲線 dt.pd <- data.frame(x = c(0.2, 0.8)) y.pred.1 <- predict(lm.1, dt.pd) y.pred.2 <- predict(lm.2, dt.pd) y.pred.3 <- predict(lm.3, dt.pd) # 畫圖 plot(NULL, xlim = c(0,1), ylim = c(0,4), xlab="x", ylab="y") # 畫點 points(dt$x[ 1:10], dt$y[ 1:10], pch = 2) points(dt$x[11:20], dt$y[11:20], pch = 3) points(dt$x[21:30], dt$y[21:30], pch = 4) # 畫迴歸線,可以用 segments() 或 lines() # 以下我用 lines() lines(c(0.2, 0.8), y.pred.1, lty = 2) lines(c(0.2, 0.8), y.pred.2, lty = 3) lines(c(0.2, 0.8), y.pred.3, lty = 4) # 圖示 legend( x = 0, y = 4, legend = c("Gropu 1", "Gropu 2", "Gropu 3"), lty=c(2,3,4), pch=c(2,3,4) ) ※ 引述《sinclairJ (SunnyGymBoy)》之銘言: : 如題 abline畫出的線都是占整個版面 如下圖 : ppt.cc/Nivoy : 我要如何只畫特定的區間? 如下圖 : ppt.cc/9HpS6 : 目前的程式碼如下 : #產生資料 : x=runif(50) : y=runif(50) : #得知區間 : library(ifultools) : x <- seq(0,2*pi,length=50) : y <- as.numeric(y) : z <- linearSegmentation(x,y,n.fit = 10,angle.tolerance=15) : plot(x,y,type="o", col="blue") : abline(v=x[z], lty=2) : #>z [1]14 36 表示1-13個資料點做一次迴歸 14~35 36~50以此類推 : #產生三個區間之資料 : data=t(rbind(x,y)) : data1=as.data.frame(data[c(1:13),]) : data2=as.data.frame(data[c(14:35),]) : data3=as.data.frame(data[c(36:50),]) : #分別對三個區間做回歸 : model1=lm(y~x,data1) #intercept=0.5041,slope=-0.00728 : model2=lm(y~x,data2) #intercept=0.41374 ,slope=0.03807 : model3=lm(y~x,data3) #intercept=1.6148 ,slope=-0.2295 : #畫abline : abline(a=0.5041,b=-0.00728,col="red",lwd=2) : abline(a=0.41374,b=0.003807,col="green",lwd=2) : abline(a=1.6148,b=-0.2295,col="blue",lwd=2) : 有請各位先進教導小弟一下~感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.117.37.172 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1437752254.A.987.html

07/25 16:36, , 1F
謝謝A大 我目前用segments再試試 不過segments要加入
07/25 16:36, 1F

07/25 16:36, , 2F
座標軸(x0,y0,x1,y1) 不知道這些座標能不能用迴歸式中
07/25 16:36, 2F

07/25 16:37, , 3F
的intercept和slope計算出來~
07/25 16:37, 3F

07/25 19:23, , 4F
這就是例子中predict在做的是。
07/25 19:23, 4F
文章代碼(AID): #1Libk-c7 (R_Language)
文章代碼(AID): #1Libk-c7 (R_Language)