You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用R语言通过给定y值求解线性回归对应x值及标准误差下界x值

在R语言线性回归中通过给定y值求解对应x值的方法

核心思路

线性回归模型的形式为 y = β₀ + β₁*x,已知y值求解x可通过变形得到 x = (y - β₀)/β₁。对于回归曲线的标准误差下界(置信区间下限)对应的x值,需要先定义拟合值下界的函数,再通过数值方法求解该下界等于目标y值时的x。

针对你的场景的实现步骤

1. 拟合线性回归模型

基于你的数据表,先拟合基础的线性回归模型:

library(tidyverse)

set.seed(114)
tableInput <- tibble(
  x = sample(60:270,100,replace = T) %>% sort(decreasing = F),
  y = rnorm(100,1,1) %>% abs(),
)

# 拟合线性回归模型
model <- lm(y ~ x, data = tableInput)

2. 计算回归曲线在y=1时的x值

直接利用回归系数计算:

# 提取截距β₀和斜率β₁
beta0 <- coef(model)[[1]]
beta1 <- coef(model)[[2]]

# 计算y=1对应的x值
x_reg <- (1 - beta0)/beta1
cat("回归曲线y=1对应的x值:", round(x_reg, 2), "\n")

3. 计算置信区间下界在y=1时的x值

通过定义拟合值下界的函数,使用uniroot函数数值求解根:

# 定义函数:计算给定x对应的拟合值置信区间下界与1的差值
lower_bound_diff <- function(x_val, model) {
  pred <- predict(model, newdata = data.frame(x = x_val), interval = "confidence")
  pred[,"lwr"] - 1
}

# 数值求解下界等于1时的x值(限定在数据x的范围内)
x_lwr_result <- uniroot(lower_bound_diff, interval = c(min(tableInput$x), max(tableInput$x)), model = model)
x_lwr <- x_lwr_result$root
cat("置信区间下界y=1对应的x值:", round(x_lwr, 2), "\n")

4. 可视化验证(可选)

将计算得到的两个x值标注在图上,验证结果:

ggplot(tableInput, aes(x,y)) + 
  geom_smooth(method = lm) + 
  geom_hline(yintercept = 1, linetype = "dashed", color = "red") +
  # 标注回归曲线对应的点
  geom_point(aes(x = x_reg, y = 1), color = "blue", size = 3) +
  # 标注置信区间下界对应的点
  geom_point(aes(x = x_lwr, y = 1), color = "green", size = 3) +
  scale_x_continuous(n.breaks = 10) +
  coord_cartesian(ylim = c(.5,2),xlim = c(50,280)) +
  theme_classic() +
  labs(caption = paste0("回归曲线x值: ", round(x_reg,2), " | 置信下界x值: ", round(x_lwr,2)))

注意事项

  • uniroot函数需要目标函数在区间端点处符号相反,因此要确保目标y值落在置信区间下界的取值范围内,否则会报错。
  • 如果你需要的是预测区间(针对新观测值的区间)而非置信区间,只需将predict函数中的interval = "confidence"改为interval = "prediction"即可。

内容的提问来源于stack exchange,提问作者tenjyo syu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 18:15:12