模拟多个时期(Python 或 R)的天气数据的方法?

数据挖掘 Python r 数据 麻木的 模拟
2022-02-25 07:49:49

我有一个时间序列数据集,其中包含固定时间段内的州/省的多个变量。那是状态 A,有 2017 年 4 月到 2019 年 7 月的样本。当然,我认为添加降水和温度变量会是一个好主意。我试图找到一些相关的外部数据,但其中大部分是抽象的并且分散的。考虑到每个月的平均温度/降水量,如何在 Python 中以不同的方式模拟动态数据,比如每天六个月的高点和低点?

因此,如果我的状态 A 的平均温度 (C) 如下所示:

year    Jan   Feb   Mar   Apr   May   Jun
2017    5.5   6.0   12.0  15.0  20.0  25.0

我希望数据模拟如下,而不需要真正为每个月做,因为这会使整个任务非常乏味:

Duration     Temp
2017-01-01   5.0
2017-01-02   5.1
2017-01-03   4.9
.
2017-03-01   7.8
2017-03-02   9.0
2017-03-03   9.5
.
2017-06-30   26.7

有没有办法在 Python(或 R)中实现这一点?

2个回答

如何创建一个 Pandas DataFrame 并添加一个新列,例如“Temp_simulated”并模拟温度?

在此处输入图像描述

我不确定这是不是最好的方法r,但是您可以通过执行以下操作,使用具有少量温度的参考向量为一年中的每一天创建一个向量模拟温度:

1)您设置了一个包含少量温度的数据框作为每个月的参考(这里,我使用lubridate包来操作日期):

library(lubridate)
Date = seq(ymd('2019-01-01'),ymd('2020-01-01'),by='months')
Temp_ref = c(5.5,6.0,12,15,20, 25, 25, 20,15,12,6,5.5,5.5)
df_ref <- data.frame(Date,Temp_ref)

         Date Temp_ref
1  2019-01-01      5.5
2  2019-02-01      6.0
3  2019-03-01     12.0
4  2019-04-01     15.0
5  2019-05-01     20.0
6  2019-06-01     25.0
7  2019-07-01     25.0
8  2019-08-01     20.0
9  2019-09-01     15.0
10 2019-10-01     12.0
11 2019-11-01      6.0
12 2019-12-01      5.5
13 2020-01-01      5.5

如果你使用它绘制它ggplot2并传递函数geom_smooth,你可以每天模拟这个数据:

library(ggplot2)
ggplot(df_ref, aes(x = Date, y = Temp_ref))+
  geom_point()+
  geom_smooth()

在此处输入图像描述

2)我们可以使用loess函数重新创建这个模拟:

model <- loess(Temp_ref~as.numeric(Date), data = df_ref)

3)现在,我们使用predict函数来使用这个模型来定义一年中每一天的温度:

library(lubridate)
date <- seq(ymd('2019-01-01'),ymd('2019-12-30'),by='days')
df <- data.frame(date)
df$yfitted <- predict(model2, newdata = as.numeric(df$date))

4)我们可以通过使用以下方式绘制它来确认我们的适合度ggplot2

ggplot(df, aes(x = date, y = yfitted))+
  geom_point(size = 1)+
  geom_point(inherit.aes = FALSE, data = df_ref, aes(x = Date, y = Temp_ref), color = "red")

在此处输入图像描述

我不确定这是不是完美的方法,但我认为它可以根据您的参考向量为您提供一年中温度演变的良好近似值。

希望它可以帮助您找出问题的解决方案。