【问题标题】:linear fit with predefined error in response variable响应变量中具有预定义误差的线性拟合
【发布时间】:2018-07-16 11:57:40
【问题描述】:

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

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) 变量中仅出现错误的情况下执行此操作。

任何帮助将不胜感激!

【问题讨论】:

  • 对于第 1 步,您必须使用 factor(ordinal_var,order=T)
  • lm(ordinal_var ~ fraction + error_on_fraction , data = dataset) ?

标签: python r statistics linear-regression data-fitting


【解决方案1】:

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

样本数据

让我们读入您的示例数据。

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

【讨论】:

  • 感谢您的评论!我很清楚你在做什么。我唯一的问题是为什么你将权重除以错误?
  • @Jonas 权重应该与误差(或误差平方)成反比,以便更小误差的测量能够携带更多重量。您是否考虑1 / error_on_fraction1 / error_on_fraction^2 取决于您是否将逆标准误差或方差视为加权因子。我想说使用方差实际上是更受欢迎的选择,即1 / error_on_fraction^2
  • 啊,有道理!非常感谢您的回复。我会接受这个作为答案:)
猜你喜欢
  • 2012-07-29
  • 1970-01-01
  • 2014-11-17
  • 2021-08-09
  • 2018-01-03
  • 1970-01-01
  • 1970-01-01
  • 2017-12-18
  • 1970-01-01
相关资源
最近更新 更多