gpt4 book ai didi

r - 从多个数据的线性回归中获取 y 轴截距和斜率,并将截距和斜率值传递给数据框

转载 作者:行者123 更新时间:2023-12-04 20:08:53 29 4
gpt4 key购买 nike

我有一个数据框 x1 ,这是用以下代码生成的,

x <- c(1:10)
y <- x^3
z <- y-20
s <- z/3
t <- s*6
q <- s*y
x1 <- cbind(x,y,z,s,t,q)
x1 <- data.frame(x1)

我想提取数据的 y 轴截距和线性回归拟合的斜率,
    x    y   z          s    t             q
1 1 1 -19 -6.333333 -38 -6.333333
2 2 8 -12 -4.000000 -24 -32.000000
3 3 27 7 2.333333 14 63.000000
4 4 64 44 14.666667 88 938.666667
5 5 125 105 35.000000 210 4375.000000
6 6 216 196 65.333333 392 14112.000000
7 7 343 323 107.666667 646 36929.666667
8 8 512 492 164.000000 984 83968.000000
9 9 729 709 236.333333 1418 172287.000000
10 10 1000 980 326.666667 1960 326666.666667

我使用以下代码来融化和绘制三列数据,
xm <- melt(x1, id=names(x1)[1], measure=names(x1)[c(2, 4, 5)], variable = "cols")
plt <- ggplot(xm) +
geom_point(aes(x=x,y= value, color=cols), size=3) +
labs(x = "x", y = "y")

enter image description here

现在我需要的是分别获得适合所有数据的线性最小二乘法,并将得到的截距和斜率存储在新的数据框中。

我用 plt + geom_abline()但我没有得到想要的结果。有人可以让我知道如何解决这个问题。

最佳答案

我想您正在寻找 geom_smooth .如果您使用参数 method = "lm" 调用此函数,它将计算所有组的线性拟合:

ggplot(xm, aes(x = x, y = value, color = cols)) +
geom_point(size = 3) +
labs(x = "x", y = "y") +
geom_smooth(method = "lm", se = FALSE)

enter image description here

您还可以使用 poly 指定二次拟合函数和 formula争论:
ggplot(xm, aes(x = x, y = value, color=cols)) +
geom_point(size = 3) +
labs(x = "x", y = "y") +
geom_smooth(method = "lm", se = FALSE, formula = y ~ poly(x, 2))

enter image description here

要提取相应的回归系数,可以使用以下方法:
# create a list of coefficients
fits <- by(xm[-2], xm$cols, function(i) coef(lm(value ~ x, i)))

# create a data frame
data.frame(cols = names(fits), do.call(rbind, fits))

# cols X.Intercept. x
# y y -277.20000 105.40000
# s s -99.06667 35.13333
# t t -594.40000 210.80000

如果你想要二次拟合,只需替换 value ~ xvalue ~ poly(x, 2) .

关于r - 从多个数据的线性回归中获取 y 轴截距和斜率,并将截距和斜率值传递给数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21335625/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com