({{, (RefLink[FindProcessParameters, paclet:ref/FindProcessParameters])[data,proc] 
finds the parameter estimates for the process proc from data.}, {, (RefLink[FindProcessParameters, paclet:ref/FindProcessParameters])[data,proc,{{p,(Subscript[p, 0])},{q,(Subscript[q, 0])},…}]
finds the parameters p, q, … with starting values (Subscript[p, 0]), (Subscript[q, 0]), … .}})

OpenersNotesSection(Spacer1)Details and Options

(RefLink[FindProcessParameters, paclet:ref/FindProcessParameters]) returns a list of replacement rules for the parameters in proc.

The data can be given in the following forms:

The times (Subscript[t, i]) and states (Subscript[s, i]) must belong to the time and state domain of the process proc.

The process proc can be any parametric scalar- or vector-valued process.

The following options can be given:

The following basic settings can be used for (RefLink[ProcessEstimator, paclet:ref/ProcessEstimator]):

Special settings for (RefLink[ProcessEstimator, paclet:ref/ProcessEstimator]) are documented under the individual random process reference pages.

Additional settings for time series processes include "MaximumConditionalLikelihood" and "SpectralEstimator".

Additional settings for (RefLink[HiddenMarkovProcess, paclet:ref/HiddenMarkovProcess]) include "BaumWelch" and "ViterbiTraining".

OpenersPrimaryExamplesSection(Spacer1)Examples  (20)

OpenersExampleSection0(Spacer1)Basic Examples  (2)

Estimate the parameter of a (RefLink[PoissonProcess, paclet:ref/PoissonProcess]):

data=RandomFunction[PoissonProcess[.4],{0,10^2}];

procparam=FindProcessParameters[data,PoissonProcess[λ]]

Obtain the estimated process:

eproc=PoissonProcess[λ]/.procparam

Compare simulations of the estimated process to the original data:

sims=RandomFunction[eproc,{0,10^2},3];

ListLinePlot[Join[data["Paths"],sims["Paths"]],PlotStyle->{Thick,Dashed,Dashed,Dashed},PlotLegends->{"data","simulations"}]

Find the parameters for an (RefLink[ARProcess, paclet:ref/ARProcess]):

data=RandomFunction[ARProcess[{.2,.1,-.3},.1],{1,100}];

procparams=FindProcessParameters[data, ARProcess[{a,b,c},v]]

Obtain the estimated process:

eproc=ARProcess[{a,b,c},v]/.procparams

Compare correlation functions for data and the estimated process:

ρdata=CorrelationFunction[data,{25}];

ρproc=CorrelationFunction[eproc,{25}];

ListLinePlot[{ρdata,ρproc},DataRange->{0,25},PlotLegends->{"data","process"}]

OpenersExampleSection1(Spacer1)Scope  (9)

OpenersExampleSubsection0(Spacer1)Parametric Processes  (3)

Estimate the parameter for a (RefLink[RandomWalkProcess, paclet:ref/RandomWalkProcess]):

SeedRandom[1234];data=RandomFunction[RandomWalkProcess[0.3],{0,400}];

ListLinePlot[data]

FindProcessParameters[data,RandomWalkProcess[p]]

Estimate the parameters for a (RefLink[RenewalProcess, paclet:ref/RenewalProcess]):

data = RandomFunction[RenewalProcess[GammaDistribution[2,1]],{0,10^3}];

ListLinePlot[data]

FindProcessParameters[data,RenewalProcess[GammaDistribution[a,b]]]

Estimate the parameters for a Wiener process:

data=RandomFunction[WienerProcess[.4,.7],{0,100,0.01}];

FindProcessParameters[data,WienerProcess[μ,σ]]

OpenersExampleSubsection1(Spacer1)Time Series Processes   (3)

Estimate the parameters for an (RefLink[ARProcess, paclet:ref/ARProcess]):

proc=ARProcess[{-.2,.3,-.3},.1];

data=RandomFunction[proc,{0,10^3}];

params=FindProcessParameters[data,ARProcess[{a,b,c},v]]

Compare covariance functions:

eproc=ARProcess[{a,b,c},v]/.params

DiscretePlot[Evaluate@(CovarianceFunction[#,h]&/@{proc,eproc}),{h,0,10},ExtentSize->1/2]

Estimate an (RefLink[ARMAProcess, paclet:ref/ARMAProcess]):

proc=ARMAProcess[{.2,.3},{0.26},.1];

data=RandomFunction[proc,{0,1000}];

params=FindProcessParameters[data,ARMAProcess[{a,b},{c},v]]

Compare covariance functions:

eproc=ARMAProcess[{a,b},{c},v]/.params

DiscretePlot[Evaluate@(CorrelationFunction[#,h]&/@{proc,eproc}),{h,0,4},ExtentSize->1/2]

Provide initial values for the estimation of an (RefLink[ARProcess, paclet:ref/ARProcess]):

data=RandomFunction[ARProcess[{-.2,.3,-.3},.1],{0,10^3}];

FindProcessParameters[data, ARProcess[{a,b,c},v],{{a,.1},{b,.15},{c,-.2},{v,.2}}]

Solve for repeated parameters:

data=RandomFunction[ARProcess[{-.2,.3,-.3},.1],{0,10^3}];

FindProcessParameters[data, ARProcess[{a,b,a},v]]

OpenersExampleSubsection2(Spacer1)Queueing Processes  (2)

Estimate the arrival and service rates for an M/M/1 queue:

data=RandomFunction[QueueingProcess[4,7],{0,100}];

ListLinePlot[data]

FindProcessParameters[data,QueueingProcess[λ,μ]]

Use the corresponding random path for the data:

FindProcessParameters[data["Path"],QueueingProcess[λ,μ]]

Estimate the arrival rate for an M/M/1 queue:

data=RandomFunction[QueueingProcess[6,13],{0,500}];

FindProcessParameters[data,QueueingProcess[λ,13]]

Estimate the service rate:

data=RandomFunction[QueueingProcess[12,15],{0,500}];

FindProcessParameters[data,QueueingProcess[12,μ]]

OpenersExampleSubsection3(Spacer1)Finite Markov Processes  (1)

Estimate the parameters for a discrete Markov process:

𝒫=DiscreteMarkovProcess[3,{{1/2,1/2,0,0},{1/2,1/2,0,0},{1/4,1/4,1/4,1/4},{0,0,0,1}}];

data=RandomFunction[𝒫,{0,10^4},3];

FindProcessParameters[data,DiscreteMarkovProcess[s,Array[p,{4,4}]],WorkingPrecision->MachinePrecision]

OpenersExampleSection2(Spacer1)Options  (5)

OpenersExampleSubsection4(Spacer1)WorkingPrecision  (1)

Estimate process parameters using default machine precision:

data=RandomFunction[QueueingProcess[5,11],{0,150}];

FindProcessParameters[data,QueueingProcess[λ,μ]]

Use higher precision:

data=RandomFunction[QueueingProcess[5,11],{0,150},WorkingPrecision-> 20];

FindProcessParameters[data,QueueingProcess[λ,μ],WorkingPrecision->20]

OpenersExampleSubsection5(Spacer1)ProcessEstimator  (4)

Maximum likelihood for a parametric process:

data=RandomFunction[WienerProcess[0,1],{0,100,.1}];

FindProcessParameters[data,WienerProcess[a,b],ProcessEstimator->"MaximumLikelihood"]

Time series process:

data=RandomFunction[ARProcess[{.3,.2},1],{10^3}];

FindProcessParameters[data,ARProcess[{a,b},v],ProcessEstimator->"MaximumLikelihood"]

Method of moments for a parametric process:

data=RandomFunction[PoissonProcess[3],{0,10^4}];

FindProcessParameters[data,PoissonProcess[m],ProcessEstimator->"MethodOfMoments"]

Time series process:

data=RandomFunction[ARMAProcess[{.3,.2},{.5},1],{10^4}];

FindProcessParameters[data,ARMAProcess[c,{a1,a2},{b1},v],ProcessEstimator->"MethodOfMoments"]

Maximize conditional likelihood for a time series process:

data=RandomFunction[ARMAProcess[{.3,.2},{.5},1],{10^4}];

FindProcessParameters[data,ARMAProcess[c,{a1,a2},{b1},v],ProcessEstimator->"MaximumConditionalLikelihood"]

Spectral estimator for a time series process:

data=RandomFunction[ARProcess[{.3,.2,0,0,0,.4},1],{10^3}];

FindProcessParameters[data,ARProcess[c,Array[a,6],v],ProcessEstimator->"SpectralEstimator"]

OpenersExampleSection3(Spacer1)Applications  (2)

Model the mean daily temperature for Champaign in August 2012:

temp=TimeSeries[];

temp["Source"]

DateListPlot[temp,Joined->True,Filling->Axis]

Find process parameters:

params=FindProcessParameters[temp,ARProcess[c,Array[a,20],v]]

eproc=ARProcess[c,Array[a,20],v]/.params

Compare (RefLink[CorrelationFunction, paclet:ref/CorrelationFunction]) of the model and the data:

ListPlot[TemporalData[CorrelationFunction[#,{30}]&/@{eproc,temp}],Filling->{1->{2}},PlotStyle->PointSize[Medium],PlotLegends->{"Model","Data"}]

The daily exchange rates of the euro to the dollar from May 2012 through September 2012:

data=TimeSeries[];

data["Source"]

DateListPlot[data,Joined->True,Filling->Bottom]

Fit an AR process to the exchange rates:

params=FindProcessParameters[data,ARProcess[c,{a1,a2,a3},v]]

eproc=ARProcess[c,{a1,a2,a3},v]/.params

Forecast for 20 business days ahead:

forecast=TimeSeriesForecast[eproc,data,{20}]

Plot the forecast with original data:

DateListPlot[{data,forecast},Joined->True,Filling->Bottom]

OpenersExampleSection4(Spacer1)Properties & Relations  (2)

(RefLink[FindProcessParameters, paclet:ref/FindProcessParameters]) returns a list of parameter estimates for a process:

data=RandomFunction[PoissonProcess[3],{0,10^4}];

FindProcessParameters[data,PoissonProcess[m]]

(RefLink[EstimatedProcess, paclet:ref/EstimatedProcess]) estimates the parametric process:

EstimatedProcess[data,PoissonProcess[m]]

(RefLink[FindProcessParameters, paclet:ref/FindProcessParameters]) returns a list of parameter estimates for a process:

data=RandomFunction[BernoulliProcess[0.4],{0,10^5}];

FindProcessParameters[data,BernoulliProcess[p]]

(RefLink[FindDistributionParameters, paclet:ref/FindDistributionParameters]) returns a list of parameter estimates for a distribution:

data=RandomVariate[BernoulliDistribution[0.4],10^5];

FindDistributionParameters[data,BernoulliDistribution[p]]

({{DocumentationFooterIconsRelatedFunction.png, ({{See Also}, {(RefLink[TimeSeriesModelFit, paclet:ref/TimeSeriesModelFit])  ▪  (RefLink[EstimatedProcess, paclet:ref/EstimatedProcess])  ▪  (RefLink[FindDistributionParameters, paclet:ref/FindDistributionParameters])  ▪  (RefLink[TemporalData, paclet:ref/TemporalData])  ▪  (RefLink[RandomFunction, paclet:ref/RandomFunction])}})}})

({{DocumentationFooterIconsRelatedGuide.png, ({{Related Guides}, {▪(RefLinkPlain[Random Processes, paclet:guide/RandomProcesses])}, {▪(RefLinkPlain[Time Series Processes, paclet:guide/TimeSeriesProcesses])}})}})