【问题标题】:lines() function in base R plot giving several lines instead of smooth line基本R图中的lines()函数给出了几条线而不是平滑线
【发布时间】:2021-12-16 08:24:06
【问题描述】:

我正在尝试在我拥有的回归模型图中添加一个平滑器。我只是使用 base R 来绘制我的 X 和 Y 向量,并使用 plot() 然后lines() 添加平滑器。我以前做过这个,它有效,但今天我得到了一个图,其中有多条线连接点,而不是一条穿过所有数据的平滑线。我不知道我写的这段代码有什么不同,所以我希望这里有人能帮助我找出问题所在。

这是我的代码。我正在使用我随机生成的数据来练习其他东西:

X 和随机变量向量创建'Y':

X <- rnorm(100, mean = 10, sd = 1)
epsilon <- rnorm(100, 0, 1)

是的:

b0 <- 0.27
b1 <- 0.49
b2 <- 0.62
b3 <- 0.8

Y <- b0 + b1*X + b2*2^2 + b3*X^3 + epsilon

创建 df 和 reg 模型/Yhat:

df = data.frame(Y,X,epsilon)
reg <- lm(Y ~ I(X^3), data = df)
Yhat <- fitted.values(reg)
cbind(df, Yhat) -> df

情节:

plot(X, Y)
lines(X, Yhat, col = "blue", lwd = 0.5)

【问题讨论】:

    标签: r plot regression


    【解决方案1】:

    为此,X 值必须进行排序,Y 值必须根据其对应的X 值进行排序:

    X <- rnorm(100, mean = 10, sd = 1)
    epsilon <- rnorm(100, 0, 1)
    
    b0 <- 0.27
    b1 <- 0.49
    b2 <- 0.62
    b3 <- 0.8
    
    Y <- b0 + b1*X + b2*2^2 + b3*X^3 + epsilon
    
    df = data.frame(Y,X,epsilon)
    reg <- lm(Y ~ I(X^3), data = df)
    Yhat <- fitted.values(reg)
    cbind(df, Yhat) -> df
    
    plot(X, Y)
    lines(X[order(X)], Yhat[order(X)], col = "blue", lwd = 0.5)
    

    【讨论】:

      猜你喜欢
      • 2017-01-24
      • 1970-01-01
      • 2020-02-28
      • 1970-01-01
      • 2020-02-16
      • 1970-01-01
      • 1970-01-01
      • 2022-10-12
      • 1970-01-01
      相关资源
      最近更新 更多