Presented below is a typical  concentration vs. time set of data for a tracer pulse experiment (see Example 11.1 in CRE^3).

<< Statistics`LinearRegression`

data1 = 
        List[{0, 0}, {5, 3}, {10, 5}, {15, 5}, {20, 4}, {25, 2}, {30, 
            1}, {35, 0}];
regressData1 = 
      Regress[data1, Table[t^i, {i, 0, 5}], 
        t, 
RegressionReport -> RSquared]
cCurve1 = ListPlot[data1, PlotStyle -> PointSize[0.02]]; 
    fittedCcurve1 = 
      Fit[data1, Table[t^i, {i, 0, 5}], t];
Plot[fittedCcurve1, {t, 0, 35}];
Show[%, cCurve1];

Integrate[fittedCcurve1, {t, 0, 35}]

eCurve1 = fittedCcurve1/%
Plot[eCurve1, {t, 0, 35}];

tAverage = Integrate[t*eCurve1, {t, 0, 35}]

Presented below are the results of a similar PULSE RESPONSE experiment in which 3.80 kg of an inert tracer were injected into a 1.9 m^3 reactor for which the volumetric flow rate was 3.1 L/s (see handout of 3/2). Here we calculate the RTD E(t), the mean residence time and the variance.

data2 = 
        List[{0. , 2.0}, {0.2, 1.96}, {0.4, 1.930}, {2.0, 1.642}, {4.0, 
            1.344}, {10.0, 0.736}, {20.0, 0.268}, {40.0, 0.034}, {60.0, 
            0.004}, {80, 0.0000}];
cCurve2 = 
        ListPlot[data2, 
          PlotStyle -> PointSize[0.02]];
fittedCcurve2 = 
      Fit[data2, Table[time^i, {i, 0, 6}], time]
regressData2 = 
      Regress[data2, Table[time^i, {i, 0, 6}], time, 
        RegressionReport -> RSquared]
Plot[fittedCcurve2, {time, 0, 80}, 
        PlotRange -> {0, 2}];
Show[%, cCurve2];

Integrate[fittedCcurve2, {time, 0, 80}]

eCurve2 = fittedCcurve2/%
Plot[eCurve2, {time, 0, 80}, 
        PlotRange -> {0, 0.1}];

tAverage2 = Integrate[time*eCurve2, {time, 0, 80}]

Note that the numerical values obtained may be quite sensitive to the selection of the integration procedure. The value reported in the original reference (Missen et al., op. cit., 1999), determined using trapezoidal rule, is 9.35 min. In both cases, as expected, the average residence time is lower than the value of space time (10.21 min). The discrepancies may be even larger when variance and standard deviation are calculated, as seen below. Use of several integration techniques is thus recommended before using these numerical values for reactor analysis or design.

var2 = Integrate[time^2*eCurve2, {time, 0, 80}]

variance2 = var2 - tAverage2^2

Presented below are the results of a STEP RESPONSE experiment in which the concentration of the tracer in a fluidized bed reactor was changed from 1.0 to 2.0 mmol/L (see Missen et al., 1999, op. cit., as well as handout of 3/2). Here we calculate the RTD as F(t) and E(t), as well as the mean residence time and the variance.

data3 = 
        List[{0, 1.000}, {5. , 1.005}, {10, 1.020}, {15, 1.060}, {20, 
            1.200}, {30, 1.410}, {45, 1.610}, {60, 1.770}, {90, 1.920}, {120, 
            1.960}, {150, 2.0}];
cCurve3 = 
        ListPlot[data3, PlotStyle -> PointSize[0.02], 
          PlotRange -> {1, 2}];
regressData3 = 
      Regress[data3, Table[time^i, {i, 0, 6}], time, 
        RegressionReport -> RSquared]
Plot[fittedCcurve3, {time, 0, 150}, 
        PlotRange -> {1, 2}];
Show[%, cCurve3];
fittedCcurve3 = Fit[data3, Table[time^i, {i, 0, 6}], time]

fittedCcurveBegin = 
        fittedCcurve3 /. time -> 0;
fittedCcurveEnd = fittedCcurve3 /. time -> 150;

fCurve3 = (fittedCcurve3 - 
              fittedCcurveBegin)/(fittedCcurveEnd - 
              fittedCcurveBegin);
Plot[fCurve3, {time, 0, 150}];

eCurve3 = D[fCurve3, time];
Plot[eCurve3, {time, 0, 135}, 
        PlotRange -> {0, 0.03}];

Integrate[eCurve3, {time, 0, 150}]

tAverage3 = Integrate[time*eCurve3, {time, 0, 150}]

var3 = Integrate[time^2*eCurve3, {time, 0, 150}]

variance3 = var3 - tAverage3^2

data4 = 
        List[{5. , 0.001}, {10, 0.0030}, {15, 0.0080}, {20, 0.0280}, {30, 
            0.0210}, {45, 0.0130}, {60, 0.0107}, {90, 0.0050}, {120, 
            0.0013}, {150, 0.0013}];
eCurve4 = 
        ListPlot[data4, PlotStyle -> PointSize[0.02], 
          PlotRange -> {0, 0.03}];
regressData4 = 
      Regress[data4, Table[time^i, {i, 0, 5}], time, 
        RegressionReport -> RSquared]
fittedEcurve4 = Fit[data4, Table[time^i, {i, 0, 5}], time]

Integrate[fittedEcurve4, {time, 0, 150}]

tAverage4 = Integrate[time*fittedEcurve4, {time, 0, 150}]

var4 = Integrate[time^2*fittedEcurve4, {time, 0, 150}]

variance4 = var4 - tAverage4^2

YOU MAY WANT TO COMPARE THESE RESULTS WITH YOUR SPREADSHEET (EXCEL) RESULTS...