如何在R散点图中扩展线性和非线性趋势线

如何在R散点图中扩展线性和非线性趋势线,r,linear-regression,scatter-plot,non-linear-regression,R,Linear Regression,Scatter Plot,Non Linear Regression,我有来自WDI的两个数据集,它们是2000年至2012年美国和中国的标准化GDP WDICHN$Year <- c(2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012) WDICHN$NormalizedGDP <- c(1.20,1.32,1.45,1.64,1.93,2.25,2.71,3.50,4.52,5.00,5.93,7.32,8.23) WDIUSA$Year <- c(2000,2

我有来自WDI的两个数据集,它们是2000年至2012年美国和中国的标准化GDP

WDICHN$Year <- c(2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012)
WDICHN$NormalizedGDP  <- c(1.20,1.32,1.45,1.64,1.93,2.25,2.71,3.50,4.52,5.00,5.93,7.32,8.23)

WDIUSA$Year <- c(2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012)
WDIUSA$NormalizedGDP  <- c(10.28,10.62,10.98,11.51,12.27,13.10,13.86,14.48,14.72,14.42,14.97,15.52,16.16)
此代码绘制所有点并绘制拟合线,但它没有延伸线,因此我无法看到它们何时会相遇。有人能帮我延长线路吗?这样我就能知道他们什么时候能大致会合。非常感谢


根据我的上述评论回答。查看
?car::scatterplot
的文档和底层文档,无法使用该函数自动扩展行。因此,这必须手动完成。我们可以通过以下5个步骤完成:

1:创建不带线的散点图 结果 请注意,在下面的结果中,
黄土
更平滑,因此不会预测数据范围之外的数据。我只是把它作为插图。

以下是一个关于瓷器的例子

WDICHN 4 2003 1.635012
#> 5  2004      1.899512
#> 6  2005      2.242152
#> 7  2006      2.796770
#> 8  2007      3.533362
#> 9  2008      4.301920
#> 10 2009      5.142493
#> 11 2010      6.094303
#> 12 2011      7.136082
#> 13 2012      8.281193
#> 14 2013      9.530239
#> 15 2014     10.880763
#> 16 2015     12.330610
#> 17 2016     13.877994
#> 18 2017     15.521507
#> 19 2018     17.260056
#> 20 2019     19.092792
#> 21 2020     21.019047
#> 22 2021     23.038296
#> 23 2022     25.150119
#> 24 2023     27.354177
#> 25 2024     29.650195
#> 26 2025     32.037947
#> 27 2026     34.517246
#> 28 2027     37.087937
#> 29 2028     39.749887
#> 30 2029     42.502987
#> 31 2030     45.347142
car::散点图(年),
箱线图=假,
ylim=范围(0,50),
xlim=范围(20002030),
数据=更多(中国)

这需要一些挖掘。该函数调用
car:::scatterplot.default
,它调用
loessLine
regLine
。使用数据中的值(基于此处的公式)调用这些函数中的每个函数。例如:没有明显的方法来更改对
car::scatterplot
的调用以扩展行。如果要延伸直线,则必须1)创建无直线的散点图,2)使用
黄土
lm
估计回归和平滑。3) 从要可视化的区域生成数据。4) 使用这些模型来预测这些数据。5) 使用预测将线添加到数据图中。
control=lucks.control(surface=“direct”)
将允许您进行外推。当然,这种推断的有效性有点可疑。这扩大了范围,但不包括现有数据。
scatterplot(NormalizedGDP~Year,smooth=FALSE, boxplots=FALSE,ylim=range(0,20),xlim=range(2000,2030),
   data=WDIUSA)
par(new=TRUE)
scatterplot(NormalizedGDP~Year,boxplots=FALSE,ylim=range(0,20),xlim=range(2000,2030),
   data=WDICHN)
library(car)
WDICHN <- data.frame(Year = c(2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012),
                     NormalizedGDP = c(1.20,1.32,1.45,1.64,1.93,2.25,2.71,3.50,4.52,5.00,5.93,7.32,8.23))
WDIUSA <- data.frame(Year = c(2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012),
                     NormalizedGDP = c(10.28,10.62,10.98,11.51,12.27,13.10,13.86,14.48,14.72,14.42,14.97,15.52,16.16))
scatterplot(NormalizedGDP ~ Year, 
            smooth = FALSE, 
            boxplots = FALSE,
            ylim = range(0, 20),
            xlim = range(2000, 2030),
            data = WDIUSA)
par(new=TRUE)
scatterplot(NormalizedGDP ~ Year,
            boxplots = FALSE,
            ylim = range(0, 20),
            xlim = range(2000, 2030),
            data = WDICHN)
smoothers <- lapply(list(WDICHN, WDIUSA), 
                    function(x)lm(NormalizedGDP ~ Year, data = x))
regLines <- lapply(list(WDICHN, WDIUSA), 
                   function(x)loess(NormalizedGDP ~ Year, data = x))
predData <- data.frame(Year = seq(2000, 2030))
predData$USA_smooth <- predict(smoothers[[2]], newdata = predData)
predData$USA_regLine <- predict(regLines[[2]], newdata = predData)
predData$CHN_smooth <- predict(smoothers[[1]], newdata = predData)
predData$CHN_regLine <- predict(regLines[[1]], newdata = predData)
with(predData, {
  lines(Year, USA_smooth, col = 'blue')
  lines(Year, CHN_smooth, col = 'blue')
  lines(Year, USA_regLine, col = 'blue')
  lines(Year, CHN_regLine, col = 'blue')
})