x 和 y 与 p 值的误差线性拟合

linear fit with error on x and y with p-value

我目前正在做一个项目,我想在其中找出两个变量 x 和 y 之间是否存在关系。对于这两个值,我也计算了误差。 df 如下所示。

x   y    x_error    y_error
5   1      0.5      0.2
6   2      0.5      0.15
7   1.75   0.5      0.3
7   0.5    0.5      0.1254
...

如您所见,x 上的错误是恒定的,但 y 上的错误不是。 我研究了在 R 中使用 lm() 函数,但似乎我只能使用权重在 y 轴上设置误差。我对这种统计分析很陌生,到目前为止我所做的研究并不多。我想绘制线性拟合并找到回归斜率统计显着性的 p 值。

有人知道怎么做吗? 最好在 R 中回答,但 python 也可以:)

提前感谢您的任何 answers/help

如评论中所建议(感谢 James),orthogonal distance regression 应该有效。 deming() package in R takes both x_error and y_error (post)。下面是一个示例 code:

# Import libraries
library(deming)

# Create sample data
x <- rnorm(100, mean=10, sd=.01)
y <- x * rnorm(100, mean=20, sd=.01)
x_error <- x * 0.01
y_error <- y * 0.01
df <- data.frame(x, y, x_error, y_error)
head(df)

# Fit lm()
lm.fit <- lm(y ~ x, data=df)
summary(lm.fit)

# Fit deming()
deming.fit = deming(y ~ x, data=df, xstd=x_error, ystd=y_error)
print(deming.fit)

# Plot fit
plot(df$x, df$y, xlab='x', ylab='y')
abline(lm.fit, col='red', lty=1)
abline(deming.fit, col='blue', lty=2)
legend('topleft',legend= c("lm()", "deming()"), lty=c(1,2), col=c('red','blue'))