r中的趋势函数

时间:2017-08-30 03:04:31

标签: r rstudio

我正在研究关于年度作物产量和天气参数之间关系的回归模型。作物产量数据从1960年到现在,显然呈上升趋势。许多研究表明这可能是由于技术的改进。为了使回归模型更可靠,可以采用去趋势方法。

任何从事相同主题工作的人都知道如何降低作物产量?我已经尝试了 pracma 包中的detrend函数,它似乎无法正常工作。

作为一个例子,玉米子集如何从1960年到1980年产生两个县的数据,

>view(corn) 
year   county1   county2    
1960    50        52 
1961    69        79
1962    75        84
1963    77        87
1964    60        81
1965    81        99
1966    67        83
1967    96        103
1968    81        104
1969    81        84
1970    51        82
1971    91        115
1972    100       118
1973    102       106
1974    69        96
1975    96        107
1976    103       95
1977    98        62
1978    106       105
1979    111       136
1980    95        97

任何人都知道如何做这种去趋势? 非常感谢!

1 个答案:

答案 0 :(得分:1)

这是使用pracma的detrend函数的解决方案。 它以特定方式调整数据格式后工作。

require(pracma)

#Create data frame with country data:
df <- data.frame(
  "country1"=c(50,69,75,77,60,81,67,96,81,81,51,91,100,102,69,96,
               103,98,106,111,95),
  "country2"=c(52,79,84,87,81,99,83,103,104,84,82,115,118,106,96,
               107,95,62,105,136,97))

#Transpose data frame, making a matrix in the process:
df <- t(df)

#Add dates as column names:
colnames(df) <- c(1960,1961,1962,1963,1964,1965,1966,1967,1968,1969,
                  1970,1971,1972,1973,1974,1975,1976,1977,1978,1979,1980)

#Apply detrend:
data.detrend <- detrend(df, tt = 'linear')

#Apply time series:
data.detrend <- ts(as.numeric(data.detrend),
                   start=c(1960,1), frequency=2)
str(data.detrend) #check date range

#Plot:
plot.ts(data.detrend)

enter image description here