在R中的线性回归图中插入图形表示

时间:2017-10-06 11:01:35

标签: r plot linear-regression

嘿,我是R的新手并且有一个小问题

我有以下数据集由12个不同的债券组成:

dput(Synthetic_bond_creation)
structure(list(`Days to maturity` = c(1419, 202, 1565, 1182, 
2080, 1036, 811, 2436, 1296, 609, 1792, 986), `Yield to maturity` = c(2.699, 

0.487, 4.019, 1.421, 2.394, 1.366, 1.107, 2.717, 1.592, 0.988, 
2.151, 2.278)), .Names = c("Days to maturity", "Yield to maturity"
), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-12L))

到目前为止,我得到了以下内容:

library(readxl)
Synthetic_bond_creation <- read_excel("~/UZH/Bachelorarbeit/Synthetic bond 
creation.xlsx")
View(Synthetic_bond_creation)
plot(Synthetic_bond_creation$`Days to maturity`, 
Synthetic_bond_creation$`Yield to maturity`, xlab = "Days to maturity", ylab 
= "Yield to maturity in %", main = "Bonds of 'Societe Generale SA' on 
13.03.2013")
abline(lm (Synthetic_bond_creation$`Yield to maturity` ~ 
Synthetic_bond_creation$`Days to maturity`))

rplotsynthetic

现在我想构建一个合成的5年期债券,这意味着我需要在回归线上的值为x = 1300,以达到成熟日和相应的y值。

我试图通过以下方式“画出”我的目标:

syntheticbond

虚线应为黑色。

1 个答案:

答案 0 :(得分:1)

以下是一个示例(使用线性回归的预测值和一些可以适应您案例的阈值)。

# data and model
df <- mtcars
model <- lm(disp ~ mpg, data = df)
summary(model)
# plot model
plot(df$mpg, df$disp, xlab = "mpg", ylab = "disp")
pred.val <- predict(model)
lines(df$mpg, pred.val, lty = 1, col = "black")
# set thresholds
xmin <- 0
ymin <-  0
xmax <-  25 # suppose x = 25
ymax <-  as.numeric(predict(model, data.frame(mpg = xmax ))) # use x to get f(x)
# add segments
segments(x0 = xmax, y0 = ymin, x1 = xmax, y1 = ymax,
         lty = 2, col = "black") # vertical segment
segments(x0 = xmin, y0 = ymax, x1 = xmax, y1 = ymax,
         lty = 2, col = "black") # horizontal segment

enter image description here

# using ggplot
library(ggplot2)
ggplot(mtcars, aes(x = mpg, y = disp))+
        geom_point() +
        geom_line(aes(y = fitted(model))) + 
        geom_segment(aes(x = xmax, # vertical segment
                         xend = xmax,
                         yend = ymax),
                     y = 0,
                     linetype = "dashed") + 
        geom_segment(aes(y = ymax, # horizontal segment
                         xend = xmax,
                         yend = ymax),
                     x = 0,
                     linetype = "dashed") 

enter image description here