R語言代寫給散點圖添加Polynomial regression 擬合曲線和公式


這篇文章本來是要寫進我上一篇關於Polynomial regression實現的文章里的,但一方面由於這個給散點圖里添加擬合曲線和公式偏向畫圖,里面細節較多,相對上一節內容獨立;另一方面,為了使篇幅不致過長,讀者看起來辛苦,所以就分開成兩篇文章。本篇銜接上一篇,所以數據以及模型都是跟上一篇里一樣的,這里不再贅述,讀者可閱讀我上一篇的內容,所以,這里只會涉及到如何在散點圖里添加擬合的曲線以及公式。

先來看看我們最終的效果圖:

image.png

(我直接截圖的,坐標橫軸是x,縱軸是y,這里被截掉了)

畫圖的代碼:

#下面這個函數定義我們后面要添加的公式 [1] lm_eqn = function(df){ [2] m=lm(Num_complex ~ poly(k_value, 2), df) # 2rd degree polynomial [3] eq <- substitute(italic(y) == a + b %.% italic(x) + c %.% italic(x)^2*","~~italic(r)^2~"="~r2, [4] list(a = format(coef(m)[1], digits = 3), [5] b = format(coef(m)[2], digits = 3), [6] c = format(coef(m)[3], digits = 3), [7] r2 = format(summary(m)$r.squared, digits = 3))) [8] as.character(as.expression(eq)) [9] } # 先創建一個散點圖 [10] p <- ggplot(dat,aes(x=x,y=y)) + geom_point() # [11] p + stat_smooth(method='lm',formula = y~poly(x,2),colour='red') + [12] scale_x_continuous(limits = c(1,19), breaks = c(seq(1,19,b=2))) + [13] theme(axis.text=element_text(colour = 'black',size = 12), axis.title=element_text(size = 14)) + [14] annotate("text", x=2, y=100, label=lm_eqn(dat), hjust=0, size=6,family="Times",parse=TRUE)

 

為了方便解釋,我給上面代碼加了行號。首先,1-9 行這里定義了一個函數,函數最終返回的是一個強制字符轉換的expression對象(eq)。而 eq則是由substitute函數產生的結果,是一個call類型(調用類型,或者叫未求值表達式類型),這里的概念都比較復雜,我暫時也搞不清楚,還是直接看看是怎么編輯這個表達式的吧。主要在第3行,%.% 這個符號是表示 “點乘”,italic(x) 表示斜體的 x平方,2 后面的星號是必需的,並不被解釋,可能是用來分割字符和表達式的,“~”符號表示空格,一個代表一個空格。然后是4~7行,這里是一個 list,里面列出了第三行表達式中要被替換的變量的值(比如a, b, c,等)。第10行,畫一個散點圖,所有都是默認設置;第11行,這里是為散點圖根據二次多項式模型擬合一條平滑的曲線;第12-13行是調節坐標軸及坐標軸文字的,這里就不多說了,比較簡單,可以查看ggplot2 cookbook;第14行,是添加公式的語句,"text" 表示添加的元素類型(這里是添加text),x 和 y 設定添加text到什么位置(坐標);label則是要添加的公式內容,這里調用前面(1-9行定義的表達式)定義的函數;parse這個設置我不知道怎么說,因為不太懂底層原理,但我測試了,必需加上,不然不會解析 前面定義的表達式。

 

相關推薦:

標題
使用R語言隨機波動模型SV處理時間序列中的隨機波動率   (2020-04-15 14:49)
R語言用WinBUGS 軟件對學術能力測驗(SAT)建立分層模型   (2020-04-14 16:27)
R語言使用隨機技術差分進化算法優化的Nelson-Siegel-Svensson模型   (2020-04-12 18:52)
已遷離北京外來人口的數據畫像    (2020-04-11 20:55)
R語言用神經網絡改進Nelson-Siegel模型擬合收益率曲線分析   (2020-04-10 15:51)
用R語言用Nelson Siegel和線性插值模型對債券價格和收益率建模   (2020-04-06 11:16)
R語言LME4混合效應模型研究教師的受歡迎程度   (2020-03-27 15:18)
R語言Black Scholes和Cox-Ross-Rubinstein期權定價模型案例   (2020-03-25 14:36)
R語言中的Nelson-Siegel模型在匯率預測的應用   (2020-03-25 14:07)
R語言中的block Gibbs吉布斯采樣貝葉斯多元線性回歸   (2020-03-06 16:20)

 

如果您有任何疑問,請在下面發表評論。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM