为 S 形残差选择哪种非线性回归(正弦波曲线)

时间:2021-03-10 10:51:17

标签: r linear-regression non-linear-regression

我正在尝试对两个变量的时间序列数据进行统计分析(总共有 20 个变量我想用我的自变量回归)。一开始我尝试使用常规的 lm 函数:

lm_par1 <- lm(rm_SWI_010~Parrot_cal, data=wheat_new)
summary(lm_par1)

然而,我的残差看起来像正弦波曲线一样呈非线性模式的 S 形。 例如我几乎所有的残差看起来都是正弦曲线。

一个想法是在我的因变量的 2 到 7 天之间生成 rollmean,以减少正弦形状的噪音。 尽管如此,正弦曲线仍然同样可见。

n=7
wheat_new[, aux:=c(0, rep(1:(.N-1)%/%n))]
wheat_new[, rm_SWI_010:=mean(SWI_010, na.rm=T), by=.(aux)][, aux:=NULL]

由于 rollmean 无处可去,我正在考虑使用非线性回归来检查它是否解决了我的残余问题。 到目前为止,我有以下代码:

model <- drm(SWI_005 ~ Parrot_cal, fct = MM.2(),
             data = wheat_new)
summary(model)

yy <- nls(SWI_005~c*Parrot_cal^z, data=wheat_new,
       start= c(c=14, z=.27))
summary(yy)

两个代码都有效,但是我无法检查与 lm 函数一起使用的残差:

wheat_new[, res_par1:yy$residuals]

res_par1 <-ggplot(wheat_new, aes(x=date, y=res_par1))+
  geom_point(colour='blue', size=2.2, alpha=0.5)+
  theme_minimal() + 
  scale_x_date(labels = date_format('%b'), date_breaks = '1 month') +
  geom_hline(yintercept=c(0), size=0.75, color='black', linetype='dashed') +
  geom_smooth(method='lm', size=1, colour='black', linetype = 'dashed', alpha=0.2)+
  ylab('Residuals')+xlab('Date') +
  labs(title=('Residual Plot'))
res_par1 <- res_par1 + theme_bw(base_family='Playfair', base_size = 15, base_rect_size = 1) 
res_par1

现在我正在寻找有关正确选择非线性回归以及如何检查残差的想法。需要提及的一个重要事实是,自然界中没有低于萎蔫点的值,也没有高于田间容量的值(在我的情况下,WP = 9 vol % 和 FC = 23 vol %)。 数据具有不同的土壤水分传感器。

     Date        ASS_TOP SWI_001 SWI_005 SWI_010 B1_005 B1_015 Precip B2_005 B2_015 B3_005 B3_015  SMAP Parrot_cal
 1: 04.04.2019   12.21   13.02   13.42   13.96    9.0    9.6    0.0    9.0    9.6    8.5    9.5    NA       14.8
 2: 05.04.2019   12.99   14.77   13.76   14.08    8.7    9.6    1.9    8.7    9.6    9.8    9.5 14.89       14.7
 3: 06.04.2019   12.73   13.76   13.66   14.02    9.0    9.6    0.5    9.0    9.6    9.9    9.5    NA       14.8
 4: 07.04.2019   12.08   13.14   13.52   13.91    8.7    9.6    0.0    8.7    9.6    9.6    9.5    NA       14.7
 5: 08.04.2019   11.69   13.70   13.61   13.92    8.7    9.6    0.0    8.7    9.6    9.6    9.5 14.58       14.7
 6: 09.04.2019   11.17   12.72   13.30   13.72    8.7    9.6    0.0    8.7    9.6    9.6    9.5    NA       14.6
 7: 10.04.2019   12.99   13.72   13.50   13.78    9.7    9.6    2.4    9.7    9.6   10.6    9.5    NA       14.5
 8: 11.04.2019   12.34   13.22   13.41   13.71    9.5    9.6    0.0    9.5    9.6    9.5    9.5 14.32       14.5
 9: 12.04.2019   11.82   12.94   13.29   13.62    9.2    9.6    0.0    9.2    9.6    9.2    9.5    NA       14.4
10: 13.04.2019   11.43   12.71   13.16   13.52    9.1    9.6    0.0    9.1    9.6    9.1    9.5    NA       14.4
11: 14.04.2019   11.30   12.80   13.11   13.46    8.9    9.6    0.0    8.9    9.6    8.9    9.5 13.98       14.3
12: 15.04.2019   11.04   12.73   13.03   13.39    8.7    9.6    0.0    8.7    9.6    8.6    9.5    NA       14.3
13: 16.04.2019   10.78   12.12   12.82   13.25    8.4    9.6    0.0    8.4    9.6    8.4    9.5    NA        9.9
14: 19.04.2019   10.26   12.73   12.75   13.10    7.7    9.6    0.0    7.7    9.6    7.5    9.5    NA       11.4
15: 20.04.2019   10.26   13.03   12.86   13.12    7.5    9.6    0.0    7.5    9.6    7.5    9.5 13.20       14.7
16: 21.04.2019   10.13   12.11   12.62   12.98    7.4    9.6    0.0    7.4    9.6    7.5    9.5    NA       14.6
17: 22.04.2019   10.13   12.63   12.67   12.96    7.4    9.6    0.0    7.4    9.6    7.5    9.5    NA       14.5
18: 23.04.2019   11.82   13.05   12.73   12.96    8.6    9.6    1.3    8.6    9.6    8.6    9.5 13.00       14.4
19: 24.04.2019   11.17   12.70   12.69   12.92    8.3    9.6    0.0    8.3    9.6    8.2    9.5    NA       14.4
20: 25.04.2019   10.78   12.87   12.73   12.92    7.9    9.6    0.0    8.0    9.6    7.8    9.5    NA       14.5
21: 26.04.2019   10.39   12.29   12.60   12.83    7.5    9.6    0.0    7.6    9.6    7.5    9.5 12.77       14.4
22: 27.04.2019   10.26   11.77   12.39   12.70    7.4    9.6    0.0    7.4    9.6    7.5    9.5    NA       14.2
23: 28.04.2019   10.13   11.47   12.20   12.57    7.4    9.6    0.0    7.4    9.6    7.5    9.5    NA       14.1
24: 29.04.2019   10.78   12.78   12.46   12.68    8.4    9.6    1.1    8.4    9.6    8.4    9.5 13.20       14.1
25: 30.04.2019   18.32   15.99   13.47   13.19   19.9    9.6   12.3   19.9    9.6   20.0    9.5    NA       17.2
26: 01.05.2019   16.63   14.49   13.53   13.25   15.7    9.6    0.0   15.7    9.6   15.8    9.5    NA       19.8
27: 02.05.2019   14.68   13.78   13.50   13.26   11.5    9.6    0.0   11.5    9.6   12.1    9.5 13.54       18.4
28: 03.05.2019   20.14   15.44   14.03   13.56   14.4    9.6    4.7   14.3    9.6   15.0    9.5    NA       20.1
29: 04.05.2019   21.44   15.68   14.33   13.76   16.2    9.6    3.2   16.2    9.6   16.8    9.5    NA       20.5
30: 05.05.2019   23.00   16.83   14.70   13.97   21.0    9.6    5.0   20.9    9.6   21.6    9.5 14.41       23.0
31: 06.05.2019   22.09   15.67   14.80   14.09   20.1    9.6    0.2   20.0    9.6   20.7    9.5    NA       22.7
32: 07.05.2019   20.79   14.22   14.56   14.04   18.0    9.6    0.0   18.0    9.6   18.7    9.5    NA       21.9
33: 08.05.2019   19.10   13.19   14.21   13.91   15.4    9.6    0.0   15.3    9.6   16.2    9.5 14.52       21.1
34: 09.05.2019   21.18   15.05   14.64   14.17   17.7    9.6    4.0   17.6    9.6   18.5    9.5    NA       21.2
35: 10.05.2019   19.36   14.28   14.52   14.15   14.7    9.6    0.8   14.6    9.6   15.6    9.5    NA       21.2
36: 11.05.2019   23.00   15.32   14.72   14.29   21.4    9.6    9.5   21.3    9.6   22.3    9.5 15.07       21.0
37: 12.05.2019   23.00   16.47   15.13   14.55   21.8    9.6    1.6   21.7    9.6   22.7    9.5    NA       22.8
38: 13.05.2019   22.22   15.53   15.18   14.66   20.1    9.6    0.3   20.0    9.6   21.1    9.5    NA       22.5
39: 14.05.2019   23.00   16.02   15.31   14.77   20.9    9.6    1.9   20.8    9.6   21.8    9.5 15.66       22.1
40: 15.05.2019   23.00   17.05   15.66   15.00   23.8    9.6    3.3   23.7    9.6   24.7    9.5    NA       22.9
41: 16.05.2019   23.00   17.03   15.91   15.20   26.3   11.3    5.7   26.3   11.2   28.9    9.5    NA       23.2
42: 17.05.2019   21.44   15.46   15.68   15.14   19.4   15.3    0.0   19.4   15.2   26.1    9.5 16.08       22.3
43: 18.05.2019   20.01   14.60   15.40   15.05   16.4   15.3    0.0   16.4   15.2   23.1    9.5    NA       21.7
44: 19.05.2019   18.71   14.20   15.15   14.95   13.7   15.3    0.0   13.7   15.2   20.4    9.5    NA       21.1
45: 20.05.2019   22.87   15.73   15.45   15.13   18.4   15.3    7.4   18.4   15.2   25.1    9.5 16.54       22.0
46: 21.05.2019   22.74   15.13   15.36   15.11   17.4   15.3    0.8   17.4   15.2   24.1    9.5    NA       22.0
47: 22.05.2019   23.00   17.64   16.00   15.47   19.4   15.3    3.3   19.3   15.2   26.1    9.5    NA       22.5
48: 23.05.2019   21.70   16.31   15.93   15.49   17.2   15.3    0.0   17.2   15.2   24.0    9.5 17.36       22.6
49: 24.05.2019   19.75   14.77   15.59   15.35   12.7   15.3    0.0   12.6   15.2   19.5    9.5    NA       21.9
50: 25.05.2019   17.93   13.98   15.23   15.18    9.5   15.3    0.0    8.9   15.2   15.4    9.5    NA       21.1
51: 26.05.2019   16.24   13.05   14.76   14.94    9.3   12.6    0.0    8.7   12.0   11.9    9.5 17.06       20.3
52: 27.05.2019   16.37   14.59   14.83   14.96    9.1   12.6    1.5    9.5   10.7   11.8    9.5    NA       19.8
53: 28.05.2019   21.96   17.32   15.60   15.35   19.9   12.6   12.0   20.4   10.7   22.7    9.5    NA       21.7
54: 29.05.2019   22.87   16.79   15.80   15.48   20.4   12.6    1.5   20.9   10.7   23.2    9.5 18.49       22.5
55: 30.05.2019   23.00   16.19   15.82   15.53   22.6   12.6    3.4   23.0   10.7   25.3    9.5    NA       22.8
56: 31.05.2019   21.18   15.06   15.61   15.45   18.0   13.1    0.0   18.0   11.6   21.3    9.5    NA       22.3
57: 01.06.2019   18.97   14.10   15.24   15.27   13.6   13.1    0.0   13.6   11.6   16.9    9.5 18.19       21.5
58: 02.06.2019   16.76   13.56   14.89   15.08    9.6   13.1    0.0    9.5   11.6   12.0    9.5    NA       20.5
59: 03.06.2019   14.81   12.97   14.49   14.86    9.3   10.4    0.0    9.3    8.4    9.4    9.5    NA       19.6
60: 04.06.2019   12.86   12.83   14.19   14.66    9.1    9.3    0.0    9.1    8.4    9.1    9.5 17.27       18.6
61: 05.06.2019   11.69   12.88   13.97   14.51    8.9    9.3    0.0    8.9    8.4    8.8    9.5    NA       17.6
62: 06.06.2019   11.17   12.43   13.62   14.27    8.7    9.3    0.0    8.8    8.4    8.6    9.5    NA       17.1
63: 07.06.2019   16.24   13.25   13.66   14.23   12.3    9.3    7.7   12.3    8.4   12.3    9.5 17.22       18.1
64: 08.06.2019   13.77   13.10   13.58   14.14    9.8    9.3    0.0    9.7    8.4   10.0    9.5    NA       17.5
65: 09.06.2019   12.08   12.78   13.40   13.99    9.6    9.3    0.0    9.4    8.4    9.7    9.5    NA       16.7
66: 10.06.2019   11.17   12.88   13.32   13.89    9.3    9.3    0.0    9.2    8.4    9.4    9.5 16.37       16.1
67: 11.06.2019   10.65   13.04   13.27   13.79    9.0    9.3    0.0    8.9    8.4    9.0    9.5    NA       15.6
68: 12.06.2019   10.26   13.38   13.35   13.78    8.6    9.3    0.0    8.6    8.4    8.6    9.5    NA       15.1
69: 13.06.2019   10.13   12.98   13.25   13.69    8.3    9.3    0.0    8.3    8.4    8.3    9.5 15.64       14.9
70: 14.06.2019   10.13   13.17   13.24   13.65    8.0    9.3    0.0    8.0    8.4    7.9    9.5    NA       14.7
71: 15.06.2019   10.00   13.45   13.30   13.64    7.6    9.3    0.0    7.7    8.4    7.5    9.5    NA       14.5
72: 16.06.2019   10.00   13.01   13.24   13.58    8.5    9.3    1.2    8.6    8.4    8.2    9.5 14.99       14.4
73: 17.06.2019   10.00   13.24   13.27   13.57    8.2    9.3    0.0    8.3    8.4    7.9    9.5    NA       14.3
74: 18.06.2019   10.00   12.71   13.12   13.46    7.8    9.3    0.0    7.9    8.4    7.5    9.5    NA       14.2
75: 19.06.2019   10.65   13.28   13.21   13.48    8.4    9.3    1.0    8.6    8.4    8.0    9.5 14.50       14.1
76: 20.06.2019   10.39   13.13   13.19   13.44    8.4    9.3    0.2    8.6    8.4    8.0    9.5    NA       14.0
77: 21.06.2019   10.26   12.94   13.13   13.39    8.4    9.3    0.1    8.6    8.4    8.0    9.5    NA       13.9
78: 22.06.2019   10.13   14.04   13.40   13.50    8.6    9.3    0.5    8.8    8.4    8.1    9.5 14.64       13.8
79: 23.06.2019   13.38   15.80   14.03   13.82   11.8    9.3    4.9   11.9    8.4   12.0    9.5    NA       13.9
80: 24.06.2019   11.82   14.83   14.08   13.87   10.1    9.3    0.0   10.1    8.4   10.7    9.5    NA       14.0
81: 25.06.2019   11.04   13.72   13.90   13.79    9.6    9.3    0.0    9.6    8.4   10.0    9.5 14.33       13.9
82: 26.06.2019   10.52   13.44   13.80   13.75    8.9    9.3    0.0    9.0    8.4    9.1    9.5    NA       13.8
83: 27.06.2019   10.26   13.51   13.76   13.74    8.2    9.3    0.0    8.3    8.4    8.2    9.5    NA       13.7
84: 28.06.2019   10.13   12.45   13.42   13.56    7.5    9.3    0.0    7.6    8.4    7.4    9.5 13.82       13.5
85: 29.06.2019   10.13   12.19   13.18   13.43    6.8    9.3    0.0    7.0    8.4    6.7    9.5    NA       13.4
86: 30.06.2019   10.00   12.08   12.96   13.29    6.0    9.3    0.0    6.2    8.4    6.7    9.5    NA       13.3
87: 01.07.2019   13.51   13.86   13.62   13.61    8.0    9.3    2.8    8.2    8.4    8.5    9.5 13.54       13.2
88: 02.07.2019   12.47   13.51   13.53   13.55    8.0    9.3    0.1    8.2    8.4    8.5    9.5    NA       13.1
89: 03.07.2019   11.56   12.96   13.38   13.46    7.9    9.3    0.0    8.2    8.4    8.4    9.5    NA       13.1
90: 04.07.2019   11.04   12.82   13.29   13.41    7.9    9.3    0.0    8.2    8.4    8.4    9.5 13.20       13.1
91: 05.07.2019   10.65   12.43   13.13   13.31    7.9    9.3    0.0    8.1    8.4    8.4    9.5    NA       12.7

1 个答案:

答案 0 :(得分:1)

使用最后注释中可重复显示的小麦,如果添加滞后,残差与时间的关系看起来更随机(见最后的图)。请注意,滞后项在 0.1% 的水平上显着,即非常显着。

关于代码,dyn 将确保系列对齐。确保 dplyr 没有加载,因为 dplyr 破坏了 R 的滞后泛型。

关于从 nls 拟合中绘制残差,可以按照与 lm 相同的方式完成: plot(resid(nls(...))) 。

library(dyn)

wheat.z <- zoo(wheat)
fm <- dyn$lm(SWI_010 ~ Parrot_cal + lag(SWI_010, -1), wheat.z)
plot(resid(fm), type = "p")
anova(fm)

给予:

Analysis of Variance Table

Response: SWI_010
                 Df Sum Sq Mean Sq F value    Pr(>F)    
Parrot_cal        1 35.315  35.315  2157.1 < 2.2e-16 ***
lag(SWI_010, -1)  1 18.052  18.052  1102.6 < 2.2e-16 ***
Residuals        87  1.424   0.016                      
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

screenshot

注意

wheat <- structure(list(Parrot_cal = c(14.8, 14.7, 14.8, 14.7, 14.7, 14.6, 
14.5, 14.5, 14.4, 14.4, 14.3, 14.3, 9.9, 11.4, 14.7, 14.6, 14.5, 
14.4, 14.4, 14.5, 14.4, 14.2, 14.1, 14.1, 17.2, 19.8, 18.4, 20.1, 
20.5, 23, 22.7, 21.9, 21.1, 21.2, 21.2, 21, 22.8, 22.5, 22.1, 
22.9, 23.2, 22.3, 21.7, 21.1, 22, 22, 22.5, 22.6, 21.9, 21.1, 
20.3, 19.8, 21.7, 22.5, 22.8, 22.3, 21.5, 20.5, 19.6, 18.6, 17.6, 
17.1, 18.1, 17.5, 16.7, 16.1, 15.6, 15.1, 14.9, 14.7, 14.5, 14.4, 
14.3, 14.2, 14.1, 14, 13.9, 13.8, 13.9, 14, 13.9, 13.8, 13.7, 
13.5, 13.4, 13.3, 13.2, 13.1, 13.1, 13.1, 12.7), SWI_010 = c(13.96, 
14.08, 14.02, 13.91, 13.92, 13.72, 13.78, 13.71, 13.62, 13.52, 
13.46, 13.39, 13.25, 13.1, 13.12, 12.98, 12.96, 12.96, 12.92, 
12.92, 12.83, 12.7, 12.57, 12.68, 13.19, 13.25, 13.26, 13.56, 
13.76, 13.97, 14.09, 14.04, 13.91, 14.17, 14.15, 14.29, 14.55, 
14.66, 14.77, 15, 15.2, 15.14, 15.05, 14.95, 15.13, 15.11, 15.47, 
15.49, 15.35, 15.18, 14.94, 14.96, 15.35, 15.48, 15.53, 15.45, 
15.27, 15.08, 14.86, 14.66, 14.51, 14.27, 14.23, 14.14, 13.99, 
13.89, 13.79, 13.78, 13.69, 13.65, 13.64, 13.58, 13.57, 13.46, 
13.48, 13.44, 13.39, 13.5, 13.82, 13.87, 13.79, 13.75, 13.74, 
13.56, 13.43, 13.29, 13.61, 13.55, 13.46, 13.41, 13.31)), class = "data.frame", row.names = c(NA, 
-91L))
相关问题