Сгенерировать R временных рядов в C# для использования с RDotNet
У меня есть некоторые данные временных рядов в C#, т. Е. Измерения (двойной) и дата в виде DateTime, в настоящее время в виде List<DateTime, double>
, Я использую пакет RDotNet версии 1.5, установленный через NuGet.
Как получить временные ряды в R, чтобы создать некоторые графики и выполнить другие вычисления, используя доступные там инструменты.
Вот некоторый код из примеров RDotNet, с помощью которого я могу создать вектор без DateTimes:
using RDotNet;
using System;
using System.IO;
namespace RTimeSeries
{
class RTimeSeriesTest
{
public static void createVector(double[] doublearray)
{
var envPath = Environment.GetEnvironmentVariable("PATH");
var rBinPath = @"C:\Program Files\R\R-3.0.1\bin\i386";
Environment.SetEnvironmentVariable("PATH", envPath + Path.PathSeparator + rBinPath);
using (REngine engine = REngine.CreateInstance("RDotNet"))
{
engine.Initialize();
var myvector = engine.CreateNumericVector(doublearray);
engine.SetSymbol("myvector", myvector);
}
}
public static void test()
{
createVector(new[] { 1, 2, 3, 4, 5.0, 6, 7, 8, 9, 10 });
}
}
}
Каков наилучший способ преобразования моего временного ряда C# в временной ряд R? Я надеюсь на ts
объект, если это возможно.
-
Я использую R версии 3.0.1 на Windows 64 бит. Я установил это из двоичного установщика Windows.
-
Я хочу отправить данные из трендов Google, например, о "nfl", как в относительном поисковом запросе "NFL" в США. Google тренды предоставляют еженедельные данные за 2004 год. Затем я хочу каким-то образом преобразовать ряды с (более) постоянной дисперсией, а затем оценить сезонную часть отклонений и в результате получить сезонную часть и оставшуюся (включая тренд) часть.
В R непосредственно я попытался создать временной ряд, как это:
nfl.ts<-ts(data=searches$Searches, frequency=52.1775, start=c(2004,1))
таким образом игнорируя даты от Google и предполагая равномерное распределение наблюдений.
Одна проблема, которая, возможно, должна быть другим вопросом на другом сайте stackexchange, заключается в том, как обрабатывать дробные частоты, поскольку целое число недель не вписывается идеально в один год. Таким образом, частота недель в году будет немного различаться, особенно в високосные годы. Как мне справиться с этой проблемой?
Я тогда попробовал
plot(stl(nfl.ts,s.window="periodic"))
но результаты выглядят некорректно по крайней мере для нескольких временных рядов.