响应变量中具有预定义误差的线性拟合

linear fit with predefined error in response variable

我有以下数据集(复制):

ordinal_var    fraction    error_on_fraction
1              1.2         0.1
2              0.87        0.23
4              1.12        0.11
5              0.75        0.06
5              0.66        0.15
6              0.98        0.08
7              1.34        0.05
7              2.86        0.12

现在我想做线性回归分析(最好在 R 中,但 python 也可以),如果我为公式中的每个点传递 y 中的误差。所以在 R 中这会是这样的(为了更好地理解这个问题):

lm(fraction +-error_on_fraction ~ ordinal_var, data = dataset)

当然,我首先尝试自己寻找如何做,但我找不到答案。 对于之前在 x 和 y 上出现错误的分析,我只是 scipy.odr 库,但我找不到如何在 y(response) 变量中仅出现错误的情况下执行此操作。

如有任何帮助,我们将不胜感激!

我们可以使用简单的加权最小二乘模型。

示例数据

让我们读入您的样本数据。

df <- read.table(text =
    "ordinal_var    fraction    error_on_fraction
1              1.2         0.1
2              0.87        0.23
4              1.12        0.11
5              0.75        0.06
5              0.66        0.15
6              0.98        0.08
7              1.34        0.05
7              2.86        0.12", header = T)

加权最小二乘模型

我们拟合 fraction ~ ordered(ordinal_var) 形式的加权线性模型,其中 weights1 / error_on_fraction 给出。

fit <- lm(
    fraction ~ ordered(ordinal_var),
    weights = 1 / error_on_fraction,
    data = df)
summary(fit)
#    
#Call:
#lm(formula = fraction ~ ordered(ordinal_var), data = df, weights = 1/error_on_fraction)
#
#Weighted Residuals:
#         1          2          3          4          5          6          7
# 2.220e-16 -1.851e-16 -1.753e-17  1.050e-01 -1.660e-01  1.810e-17 -1.999e+00
#         8
# 3.097e+00
#
#Coefficients:
#                       Estimate Std. Error t value Pr(>|t|)
#(Intercept)              1.1136     0.3365   3.309   0.0804 .
#ordered(ordinal_var).L   0.3430     0.7847   0.437   0.7047
#ordered(ordinal_var).Q   0.6228     0.7057   0.883   0.4706
#ordered(ordinal_var).C   0.2794     0.8920   0.313   0.7838
#ordered(ordinal_var)^4   0.2127     0.9278   0.229   0.8400
#ordered(ordinal_var)^5  -0.2469     0.7916  -0.312   0.7846
#---
#Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
#Residual standard error: 2.61 on 2 degrees of freedom
#Multiple R-squared:  0.5427,   Adjusted R-squared:  -0.6004
#F-statistic: 0.4748 on 5 and 2 DF,  p-value: 0.783