【问题标题】:Calculating a correction factor计算校正因子
【发布时间】:2019-02-23 00:02:07
【问题描述】:

我有一个我怀疑受温度影响的变量,我想计算一个考虑温度影响的校正因子。

所以给出一个时间序列的温度数据:

Temp<-c(23.545, 23.475, 23.382, 23.328, 23.251, 23.247, 23.241, 23.227, 23.146,
 23.133, 23.127, 23.567, 23.561, 23.521, 23.496, 23.348, 23.274, 23.270,
 23.258, 23.244, 23.158, 23.152, 23.132, 23.123, 23.083, 23.025, 22.999,
 22.666, 22.330, 22.072, 21.794, 21.532, 21.063, 20.742, 19.183, 18.556,
 17.165, 15.233, 13.844, 12.818, 12.236, 11.914)

还有有问题的变量:

var<-c(0.080, -0.003, -0.018, -0.035,  0.005, -0.023,  0.080,  0.035,  0.065,
 -0.055, -0.030, -0.038,  0.010,  0.013,  0.018, -0.033, -0.028,  0.105,
 -0.085,  0.010,  0.018, -0.065, -0.048, -0.013, -0.103, -0.013,  0.002,
 0.053, -0.018,  0.080,  0.057,  0.083,  0.060,  0.085,  0.158,  0.155,
 0.232,  0.245,  0.390,  0.400,  0.568,  0.508)

我可以将两者绘制在一起,看看 temp 对 var 的影响

plot(Temp,var) 

我在 22.330 有一个温度观测值,我知道它是正确的。因此,我想根据某种校正因子调整 var 数据,方法是:

A - 所有的 var 值都接近相同的值,大部分的差异是由于温度造成的

B- 22.330 点是正确的,上下值应相应修正

【问题讨论】:

  • 如果您想将一条直线拟合到数据中并且让回归线穿过 22.330 点,请使用加权回归,其中所有权重均为 1.0 - 除了 - 在 22.330 点,你应该给它一个很大的权重,比如 10,000。这将有效地迫使回归通过这一点。

标签: r regression linear-regression correlation


【解决方案1】:

也许这里是一个起点。

让我们从拟合线性模型开始var ~ Temp

fit <- lm(var ~ Temp)

除了人为地强制模型通过一个/多个特定点之外,我没有看到使用加权线性模型的意义。数据就是它们的样子,var ~ Temp 形式的线性模型将表征varTemp 之间的一般线性相关性。

让我们合并data.frame 中的数据,并添加Time 列以及线性模型拟合的残差。

df <- cbind.data.frame(Time = 1:length(Temp), Temp, var, resid = fit$residuals)

我们展示了以下图表:

library(gridExtra)
gg1 <- ggplot(df, aes(Time, var)) + geom_point()
gg2 <- ggplot(df, aes(Temp, var)) + geom_point()
gg3 <- ggplot(df, aes(Time, resid)) + geom_point()
grid.arrange(gg1, gg2, gg3, nrow = 1)

  1. 左侧面板显示了varTime 的依赖关系。
  2. 中间的面板显示了varTemp 的依赖关系,您假设它存在。
  3. 右侧面板显示了在我们校正了varTemp 的线性相关性之后varTime 的残余影响。

换句话说,您可以将残差视为针对Temp 校正的var 值。它们描述了var 中没有被Temp 解释的可变性。

【讨论】:

    猜你喜欢
    • 2012-09-03
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 2015-04-14
    • 2021-03-23
    • 2010-12-01
    • 2013-06-25
    相关资源
    最近更新 更多