コード例 #1
0
ファイル: Hazard.cs プロジェクト: kimbrano04/Base
        public IList <Point <decimal, decimal> > GetCDF()
        {
            nelsonAalen = new KaplanMeier(observationsInternal);
            var result = new List <Point <decimal, decimal> >();
            var cnt    = 0;

            foreach (var set in observationsInternal)
            {
                var survival = nelsonAalen.GetSurvivalValueUpToPeriod(cnt + 1);
                var point    = new Point <decimal, decimal>(set.unitTime * cnt, (1 - survival));
                result.Add(point);
                cnt++;
            }
            return(result);
        }
コード例 #2
0
ファイル: Hazard.cs プロジェクト: kimbrano04/Base
        /// <summary>
        /// S(t) = 1-F(t) where F(t) =
        /// </summary>
        /// <returns></returns>
        public IList <Point <decimal, decimal> > SurvivalFunction()
        {
            MaximumSurvivalValue     = 0;
            MaximumSurvivalValueTime = 0;
            nelsonAalen = new KaplanMeier(observationsInternal);
            var result = new List <Point <decimal, decimal> >();
            var cnt    = 0;

            foreach (var set in observationsInternal)
            {
                var survival = nelsonAalen.GetSurvivalValueUpToPeriod(cnt + 1);

                SetMaximumSurvivalValue(survival, cnt);
                var point = new Point <decimal, decimal>(set.unitTime * cnt, (survival));
                result.Add(point);
                cnt++;
            }
            return(result);
        }
コード例 #3
0
ファイル: Hazard.cs プロジェクト: kimbrano04/Base
        public IList <Point <decimal, decimal> > GetHazardFunctionOverEachPeriod()
        {
            nelsonAalen = new KaplanMeier(observationsInternal);
            var result = new List <Point <decimal, decimal> >();
            var cnt    = 0;

            foreach (var set in observationsInternal)
            {
                var survival = nelsonAalen.GetSurvivalOverPeriod(cnt);
                var v1       = survival == 0?0:(-1) * Math.Log((double)survival);
                var v2       = (double)(set.unitTime);
                var div      = (decimal)((-1) * v1 / v2);

                var point = new Point <decimal, decimal>(set.unitTime * cnt, (div));
                result.Add(point);

                cnt++;
            }
            return(result);
        }