diff --git a/Project.toml b/Project.toml index 3b3416b..ca46f6e 100644 --- a/Project.toml +++ b/Project.toml @@ -5,14 +5,30 @@ version = "0.1.0" [deps] DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" +Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f" +ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" +LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +LogExpFunctions = "2ab3a3ac-af41-5b50-aa03-7779005ae688" +Optim = "429524aa-4258-5aef-a3af-852621145aeb" +Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" +SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" StatsAPI = "82ae8749-77ed-4fe6-ae5f-f523153014b0" StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" StatsModels = "3eaba693-59b7-5ba5-a881-562e759f1c8d" SurvivalBase = "9cb6079b-e021-4662-8a75-9f65bfa286f2" +SurvivalDistributions = "7121986e-ae89-4673-ae4e-1cb822919a18" [compat] Aqua = "0.8" DataFrames = "1" +Distributions = "0.25" +LinearAlgebra = "1" +LogExpFunctions = "0.3" +Optim = "1" +RDatasets = "0.7" +Random = "1.6" +SpecialFunctions = "2" +StableRNGs = "1" StatsAPI = "1" StatsBase = "0.34" StatsModels = "0.7" @@ -23,8 +39,11 @@ julia = "1.6.7" [extras] Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595" +RDatasets = "ce6b1742-4840-55fa-b093-852dadbb1d8b" +Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" +StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" TestItemRunner = "f8b46487-2199-4994-9208-9a1283c18c0a" [targets] -test = ["Aqua", "Test", "TestItemRunner"] +test = ["Aqua", "RDatasets", "Random", "Test", "TestItemRunner", "StableRNGs"] diff --git a/docs/Project.toml b/docs/Project.toml index 5b0eb8a..9a9ceb6 100644 --- a/docs/Project.toml +++ b/docs/Project.toml @@ -1,3 +1,5 @@ [deps] Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4" +DocumenterCitations = "daee34ce-89f3-4625-b898-19384cb65244" +LiveServer = "16fef848-5104-11e9-1b77-fb7a48bbb589" SurvivalModels = "230d35e3-bb2c-48f4-adfc-0b42c4b39395" diff --git a/docs/make.jl b/docs/make.jl index 6500e32..4bad77e 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -1,10 +1,18 @@ using SurvivalModels using Documenter +using DocumenterCitations DocMeta.setdocmeta!(SurvivalModels, :DocTestSetup, :(using SurvivalModels); recursive=true) +bib = CitationBibliography( + joinpath(@__DIR__,"src","assets","references.bib"), + style=:numeric +) + + makedocs(; modules=[SurvivalModels], + plugins=[bib], authors="Oskar Laverny and contributors", sitename="SurvivalModels.jl", format=Documenter.HTML(; @@ -14,6 +22,8 @@ makedocs(; ), pages=[ "Home" => "index.md", + "GeneralHazard.md", + "references.md", ], ) diff --git a/docs/src/GeneralHazard.md b/docs/src/GeneralHazard.md new file mode 100644 index 0000000..268cf41 --- /dev/null +++ b/docs/src/GeneralHazard.md @@ -0,0 +1,408 @@ +# Some hazard functions in Julia + +# Hazard and cumulative hazard functions + +The hazard and the cumulative hazard functions play a crucial role in survival analysis. These functions define the likelihood function in the presence of censored observations. Thus, they are important in many context. For more information about these functions, see [Short course on Parametric Survival Analysis +](https://github.com/FJRubio67/ShortCourseParamSurvival). + +This tutorial contains the implementation of the hazard and cumulative hazard functions for some popular distributions using the Julia package `HazReg.jl`, such as the LogNormal, LogLogistic, Weibull, and Gamma distributions. + +The Julia implementation of other, less common, distributions that are of interest in survival analysis can be found in the Julia package `HazReg.jl`: [`HazReg.jl`](https://github.com/FJRubio67/HazReg.jl). + +See also: + +- [HazReg.jl Julia Package](https://github.com/FJRubio67/HazReg.jl) + +# Required packages +```@example 1 +using Distributions +using Plots +using StatsBase +using HazReg +``` + +# Examples + +## LogNormal + +```@example 1 +#= Hazard function =# +plot(t -> hazard(LogNormal(0.5, 1), t), + xlabel = "x", ylabel = "Hazard", title = "LogNormal distribution", + xlims = (0,10), xticks = 0:1:10, label = "", + xtickfont = font(16, "Courier"), ytickfont = font(16, "Courier"), + xguidefontsize=18, yguidefontsize=18, linewidth=3, + linecolor = "blue") +``` + +```@example 1 +#= Cumulative Hazard function =# +plot(t -> cumhazard(LogNormal(0.5, 1),t), + xlabel = "x", ylabel = "Cumulative Hazard", title = "LogNormal distribution", + xlims = (0,10), xticks = 0:1:10, label = "", + xtickfont = font(16, "Courier"), ytickfont = font(16, "Courier"), + xguidefontsize=18, yguidefontsize=18, linewidth=3, + linecolor = "blue") +``` + + +## LogLogistic + +```@example 1 +#= Hazard function =# +plot(t -> hazard(LogLogistic(1, 0.5),t), + xlabel = "x", ylabel = "Hazard", title = "LogLogistic distribution", + xlims = (0,10), xticks = 0:1:10, label = "", + xtickfont = font(16, "Courier"), ytickfont = font(16, "Courier"), + xguidefontsize=18, yguidefontsize=18, linewidth=3, + linecolor = "blue") +``` + +```@example 1 +#= Cumulative Hazard function =# +plot(t -> cumhazard(LogLogistic(1, 0.5),t), + xlabel = "x", ylabel = "Cumulative Hazard", title = "LogLogistic distribution", + xlims = (0,10), xticks = 0:1:10, label = "", + xtickfont = font(16, "Courier"), ytickfont = font(16, "Courier"), + xguidefontsize=18, yguidefontsize=18, linewidth=3, + linecolor = "blue") +``` + +## Weibull + +```@example 1 +#= Weibull function =# +plot(t -> hazard(Weibull(3, 0.5),t), + xlabel = "x", ylabel = "Hazard", title = "Weibull distribution", + xlims = (0,10), xticks = 0:1:10, label = "", + xtickfont = font(16, "Courier"), ytickfont = font(16, "Courier"), + xguidefontsize=18, yguidefontsize=18, linewidth=3, + linecolor = "blue") +``` + +```@example 1 +#= Cumulative Hazard function =# +plot(t -> cumhazard(Weibull(3, 0.5),t), + xlabel = "x", ylabel = "Cumulative Hazard", title = "Weibull distribution", + xlims = (0,10), xticks = 0:1:10, label = "", + xtickfont = font(16, "Courier"), ytickfont = font(16, "Courier"), + xguidefontsize=18, yguidefontsize=18, linewidth=3, + linecolor = "blue") +``` + + +## Gamma + +```@example 1 +#= Weibull function =# +plot(t -> hazard(Gamma(3, 0.5),t), + xlabel = "x", ylabel = "Hazard", title = "Gamma distribution", + xlims = (0,10), xticks = 0:1:10, label = "", + xtickfont = font(16, "Courier"), ytickfont = font(16, "Courier"), + xguidefontsize=18, yguidefontsize=18, linewidth=3, + linecolor = "blue") +``` + +```@example 1 +#= Cumulative Hazard function =# +plot(t -> cumhazard(Gamma(3, 0.5),t), + xlabel = "x", ylabel = "Cumulative Hazard", title = "Gamma distribution", + xlims = (0,10), xticks = 0:1:10, label = "", + xtickfont = font(16, "Courier"), ytickfont = font(16, "Courier"), + xguidefontsize=18, yguidefontsize=18, linewidth=3, + linecolor = "blue") +``` + + + +# Julia simGH: simulating times to event from a general hazard structure + +# The `simGH` command. +The simGH command from the `HazReg.jl` Julia package allows one to simulate times to event from the following models: + +- General Hazard (GH) model [chen:2001](@cite) [rubio:2019](@cite). + +- Accelerated Failure Time (AFT) model [kalbfleisch:2011](@cite). + +- Proportional Hazards (PH) model [cox:1972](@cite). + +- Accelerated Hazards (AH) model [chen:2000](@cite). + + +A description of these hazard models is presented below as well as the available baseline hazards. + +## General Hazard model +The GH model is formulated in terms of the hazard structure + +$$h(t; \alpha, \beta, \theta, {\bf x}) = h_0\left(t \exp\{\tilde{\bf x}^{\top}\alpha\}; \theta\right) \exp\{{\bf x}^{\top}\beta\}.$$ + +where ${\bf x}\in{\mathbb R}^p$ are the covariates that affect the hazard level; $\tilde{\bf x} \in {\mathbb R}^q$ are the covariates the affect the time level (typically $\tilde{\bf x} \subset {\bf x}$); $\alpha \in {\mathbb R}^q$ and $\beta \in {\mathbb R}^p$ are the regression coefficients; and $\theta \in \Theta$ is the vector of parameters of the baseline hazard $h_0(\cdot)$. + +This hazard structure leads to an identifiable model as long as the baseline hazard is not a hazard associated to a member of the Weibull family of distributions [chen:2001](@cite). + +## Accelerated Failure Time (AFT) model +The AFT model is formulated in terms of the hazard structure + +$$h(t; \beta, \theta, {\bf x}) = h_0\left(t \exp\{{\bf x}^{\top}\beta\}; \theta\right) \exp\{{\bf x}^{\top}\beta\}.$$ + +where ${\bf x}\in{\mathbb R}^p$ are the available covariates; $\beta \in {\mathbb R}^p$ are the regression coefficients; and $\theta \in \Theta$ is the vector of parameters of the baseline hazard $h_0(\cdot)$. + +## Proportional Hazards (PH) model +The PH model is formulated in terms of the hazard structure + +$$h(t; \beta, \theta, {\bf x}) = h_0\left(t ; \theta\right) \exp\{{\bf x}^{\top}\beta\}.$$ + +where ${\bf x}\in{\mathbb R}^p$ are the available covariates; $\beta \in {\mathbb R}^p$ are the regression coefficients; and $\theta \in \Theta$ is the vector of parameters of the baseline hazard $h_0(\cdot)$. + +## Accelerated Hazards (AH) model +The AH model is formulated in terms of the hazard structure + +$$h(t; \alpha, \theta, \tilde{\bf x}) = h_0\left(t \exp\{\tilde{\bf x}^{\top}\alpha\}; \theta\right) .$$ + +where $\tilde{\bf x}\in{\mathbb R}^q$ are the available covariates; $\alpha \in {\mathbb R}^q$ are the regression coefficients; and $\theta \in \Theta$ is the vector of parameters of the baseline hazard $h_0(\cdot)$. + +# Available baseline hazards +The current version of the `simGH` command implements the following parametric baseline hazards for the models discussed in the previous section. + +- [Power Generalised Weibull](http://rpubs.com/FJRubio/PGW) (PGW) distribution. + +- [Exponentiated Weibull](http://rpubs.com/FJRubio/EWD) (EW) distribution. + +- [Generalised Gamma](http://rpubs.com/FJRubio/GG) (GenGamma) distribuiton. + +- [Gamma](https://en.wikipedia.org/wiki/Gamma_distribution) (Gamma) distribution. + +- [Lognormal](https://en.wikipedia.org/wiki/Log-normal_distribution) (LogNormal) distribution. + +- [Log-logistic](https://en.wikipedia.org/wiki/Log-logistic_distribution) (LogLogistic) distribution. + +- [Weibull](https://en.wikipedia.org/wiki/Weibull_distribution) (Weibull) distribution. (only for AFT, PH, and AH models) + + +# Illustrative example: Julia code +In this example, we simulate $n=1,000$ times to event from the GH, PH, AFT, and AH models with PGW baseline hazards, using the Julia `simGH` command from the `HazReg` package. We censor these samples at a fixed value, and fit the corresponding models using the Julia package `HazReg`. + +See also: + +- [HazReg.jl Julia Package](https://github.com/FJRubio67/HazReg.jl) + +## PGW-GH model + +```@example 1 +# Required packages +using HazReg +using Distributions +using Random +using DataFrames +using Optim + +# Sample size +n = 10000 + +# Simulated design matrices +Random.seed!(123) +dist = Normal() +des = hcat(rand(dist, n), rand(dist, n)) +des_t = rand(dist, n) + + +#---------------------------- +# PGW-GH simulation +#---------------------------- + +# True parameters +theta0 = [0.1,2.0,5.0] +alpha0 = 0.5 +beta0 = [-0.5,0.75] + +# censoring +cens = 10 + +# Data simulation +simdat = simGH(seed = 1234, n = n, des = des, des_t = des_t, + alpha = alpha0, beta = beta0, + hstr = "GH", dist = PowerGeneralizedWeibull(theta0...)) + +# status variable +status = collect(Bool,(simdat .< cens)) + +# Inducing censoring +simdat = min.(simdat, cens) + +# Model fit +OPTPGWGH = GHMLE(init = fill(0.0, 3 + 1 + size(des)[2]), times = simdat, + status = status, hstr = "GH", dist = PowerGeneralizedWeibull, + des = des, des_t = des_t, method = NelderMead(), maxit = 1000) + +MLEPGWGH = [exp(OPTPGWGH[1].minimizer[j]) for j in 1:3] +append!(MLEPGWGH, OPTPGWGH[1].minimizer[4:end]) + +# True parameter values vs. MLE +COMP = hcat(vcat(theta0,alpha0,beta0),MLEPGWGH); +COMP = DataFrame(COMP, :auto); + +rename!( COMP, ["True", "MLE"] ); +println(COMP) +``` + + + +## PGW-PH model + +```@example 1 + +# Sample size +n = 10000 + +# Simulated design matrices +Random.seed!(123) +dist = Normal() +des = hcat(rand(dist, n), rand(dist, n)) + + +#---------------------------- +# PGW-PH simulation +#---------------------------- + +# True parameters +theta0 = [0.1,2.0,5.0] +beta0 = [-0.5,0.75] + +# censoring +cens = 10 + +# Data simulation +simdat = simGH(seed = 1234, n = n, des = des, des_t = nothing, + alpha = nothing, beta = beta0, + hstr = "PH", dist = PowerGeneralizedWeibull(theta0...)) + +# status variable +status = collect(Bool,(simdat .< cens)) + +# Inducing censoring +simdat = min.(simdat, cens) + +# Model fit +OPTPGWPH = GHMLE(init = fill(0.0, 3 + size(des)[2]), times = simdat, + status = status, hstr = "PH", dist = PowerGeneralizedWeibull, + des = des, des_t = nothing, method = NelderMead(), maxit = 1000) + +MLEPGWPH = [exp(OPTPGWPH[1].minimizer[j]) for j in 1:3] +append!(MLEPGWPH, OPTPGWPH[1].minimizer[4:end]) + +# True parameter values vs. MLE +COMP = hcat(vcat(theta0,beta0),MLEPGWPH); +COMP = DataFrame(COMP, :auto); + +rename!( COMP, ["True", "MLE"] ); +println(COMP) +``` + + +## PGW-AFT model + +```@example 1 +# Sample size +n = 10000 + +# Simulated design matrices +Random.seed!(123) +dist = Normal() +des = hcat(rand(dist, n), rand(dist, n)) + + +#---------------------------- +# PGW-AFT simulation +#---------------------------- + +# True parameters +theta0 = [0.1,2.0,5.0] +beta0 = [-0.5,0.75] + +# censoring +cens = 10 + +# Data simulation +simdat = simGH(seed = 1234, n = n, des = des, des_t = nothing, + alpha = nothing, beta = beta0, + hstr = "AFT", dist = PowerGeneralizedWeibull(theta0...)) + +# status variable +status = collect(Bool,(simdat .< cens)) + +# Inducing censoring +simdat = min.(simdat, cens) + +# Model fit +OPTPGWAFT = GHMLE(init = fill(0.0, 3 + size(des)[2]), times = simdat, + status = status, hstr = "AFT", dist = PowerGeneralizedWeibull, + des = des, des_t = nothing, method = NelderMead(), maxit = 1000) + +MLEPGWAFT = [exp(OPTPGWAFT[1].minimizer[j]) for j in 1:3] +append!(MLEPGWAFT, OPTPGWAFT[1].minimizer[4:end]) + +# True parameter values vs. MLE +COMP = hcat(vcat(theta0,beta0),MLEPGWAFT); +COMP = DataFrame(COMP, :auto); + +rename!( COMP, ["True", "MLE"] ); +println(COMP) +``` + + + +## PGW-AH model + +```@example 1 + +# Sample size +n = 10000 + +# Simulated design matrices +Random.seed!(123) +dist = Normal() +des_t = hcat(rand(dist, n), rand(dist, n)) + + +#---------------------------- +# PGW-AH simulation +#---------------------------- + +# True parameters +theta0 = [0.1,2.0,5.0] +alpha0 = [-0.5,0.75] + +# censoring +cens = 10 + +# Data simulation +simdat = simGH(seed = 1234, n = n, des = nothing, des_t = des_t, + alpha = alpha0, beta = nothing, + hstr = "AH", dist = PowerGeneralizedWeibull(theta0...)) + +# status variable +status = collect(Bool,(simdat .< cens)) + +# Inducing censoring +simdat = min.(simdat, cens) + +# Model fit +OPTPGWAH = GHMLE(init = fill(0.0, 3 + size(des)[2]), times = simdat, + status = status, hstr = "AH", dist = PowerGeneralizedWeibull, + des = nothing, des_t = des_t, method = NelderMead(), maxit = 1000) + +MLEPGWAH = [exp(OPTPGWAH[1].minimizer[j]) for j in 1:3] +append!(MLEPGWAH, OPTPGWAH[1].minimizer[4:end]) + +# True parameter values vs. MLE +COMP = hcat(vcat(theta0,beta0),MLEPGWAH); +COMP = DataFrame(COMP, :auto); + +rename!( COMP, ["True", "MLE"] ); +println(COMP) +``` + +```@bibliography +Pages = ["simGHJulia.md"] +Canonical = false +``` \ No newline at end of file diff --git a/docs/src/assets/LeukSurv.csv b/docs/src/assets/LeukSurv.csv new file mode 100644 index 0000000..cd93f62 --- /dev/null +++ b/docs/src/assets/LeukSurv.csv @@ -0,0 +1,1044 @@ +"","time","cens","xcoord","ycoord","age","sex","wbc","tpi","district" +"1",1,1,0.205071664829107,0.497243660418964,61,0,13.3,-1.96,9 +"2",1,1,0.285556780595369,0.848952590959206,76,0,450,-3.39,7 +"3",1,1,0.176405733186329,0.736493936052922,74,0,154,-4.95,7 +"4",1,1,0.244762954796031,0.21058434399118,79,1,500,-1.4,24 +"5",1,1,0.327453142227122,0.907386990077177,83,1,160,-2.59,7 +"6",1,1,0.638368246968026,0.362734288864388,81,1,30.4,0.03,11 +"7",1,1,0.589856670341786,0.0782800441014333,76,0,41.3,3.95,17 +"8",1,1,0.639470782800441,0.101433296582139,87,0,280,1.91,21 +"9",1,1,0.662624035281147,0.180815876515987,66,0,201,-3.5,18 +"10",1,1,0.152149944873208,0.873208379272326,78,1,3.9,0.38,7 +"11",1,1,0.589856670341786,0.127894156560088,57,0,0,6.7,17 +"12",1,1,0.235942668136714,0.549062844542448,87,1,1.4,-3.47,9 +"13",1,1,0.585446527012128,0.200661521499449,79,1,27.1,0.07,17 +"14",1,1,0.277839029768467,0.318632855567806,84,0,10.7,-2.06,4 +"15",1,1,0.117971334068357,0.831312017640573,77,0,291,3.17,7 +"16",1,1,0.656008820286659,0.30981256890849,69,1,181,4.87,19 +"17",1,1,0.625137816979052,0.0264608599779493,64,0,36.6,1.12,21 +"18",1,1,0.552370452039691,0.109151047409041,67,1,149,3.19,23 +"19",1,1,0.267916207276736,0.482910694597574,60,0,0,4.44,9 +"20",1,1,0.320837927232635,0.218302094818082,53,0,1.3,4.9,24 +"21",1,1,0.302094818081588,0.244762954796031,55,0,159,-4.05,24 +"22",1,1,0.463065049614112,0.208379272326351,88,1,350,1.78,20 +"23",1,1,0.213891951488423,0.502756339581036,78,1,0,3.1,9 +"24",1,1,0.412348401323043,0.423373759647189,44,1,281,4.87,1 +"25",1,1,0.299889746416759,0.240352811466373,46,1,26.4,-1.63,24 +"26",1,1,0.721058434399118,0.0441014332965821,74,1,147,-1.33,21 +"27",2,1,0.467475192943771,0.499448732083793,67,1,27.6,1.85,6 +"28",2,1,0.0760749724366042,0.470782800441014,73,0,147,-2.74,5 +"29",2,1,0.632855567805954,0.191841234840132,78,0,500,2.78,17 +"30",2,1,0.565600882028666,0.240352811466373,84,1,91.7,-1.45,16 +"31",2,1,0.120176405733186,0.525909592061742,74,1,3.7,-3.53,5 +"32",2,1,0.572216097023153,0.15986769570011,77,0,150,7.86,20 +"33",2,1,0.229327453142227,0.479603087100331,42,0,3.2,-3.38,12 +"34",2,1,0.482910694597574,0.622932745314223,79,1,0,0.51,10 +"35",2,1,0.384785005512679,0.502756339581036,31,0,0,-2.2,10 +"36",2,1,0.0242557883131202,0.682469680264609,60,1,500,3.26,14 +"37",2,1,0.532524807056229,0.0606394707828004,57,0,38.1,-3.34,23 +"38",2,1,0.151047409040794,0.879823594266814,89,1,0,1.69,7 +"39",2,1,0.525909592061742,0.189636163175303,79,1,4.8,5.82,20 +"40",2,1,0.275633958103638,0.229327453142227,76,1,189,8.5,24 +"41",2,1,0.326350606394708,0.134509371554576,81,0,0,1.32,24 +"42",2,1,0.489525909592062,0.181918412348401,84,1,106.4,-2.75,20 +"43",2,1,0.0132304299889746,0.549062844542448,83,0,0,0.72,2 +"44",2,1,0.140022050716648,0.274531422271224,75,0,500,-1.77,13 +"45",2,1,0.0639470782800441,0.691289966923925,90,0,0,-0.84,14 +"46",2,1,0.241455347298787,0.521499448732084,79,0,0.9,-3.63,9 +"47",2,1,0.647188533627343,0.507166482910695,87,0,165.7,-4.17,3 +"48",2,1,0.652701212789416,0.298787210584344,61,0,366.9,4.39,19 +"49",3,1,0.529217199558986,0.148842337375965,64,1,17.6,3.19,20 +"50",3,1,0.286659316427784,0.235942668136714,68,1,25.1,-1.29,24 +"51",3,1,0.0110253583241455,0.543550165380375,89,0,47.1,0.46,2 +"52",3,1,0.461962513781698,0.205071664829107,71,1,42.6,2.67,20 +"53",3,1,0.351708930540243,0.402425578831312,72,0,340,-3.52,4 +"54",3,1,0.0407938257993385,0.596471885336273,82,1,325,-2.84,14 +"55",3,1,0.611907386990077,0.244762954796031,58,0,0,7.11,19 +"56",3,1,0.270121278941566,0.205071664829107,68,0,112,-2.92,24 +"57",3,1,0.106945975744212,0.663726571113561,85,1,16.3,-4.53,14 +"58",3,1,0.0165380374862183,0.487320837927233,85,1,9.9,-1.06,5 +"59",3,1,0.43109151047409,0.280044101433297,74,0,117,-1.96,15 +"60",3,1,0.603087100330761,0.565600882028666,80,1,0,-1.4,8 +"61",3,1,0.126791620727674,0.857772877618523,81,1,42.9,0.18,7 +"62",3,1,0.392502756339581,0.453142227122382,72,1,0,7.1,1 +"63",3,1,0.582138919514884,0.12348401323043,57,0,94.1,6.21,17 +"64",3,1,0.0253583241455347,0.682469680264609,83,0,0,3.26,14 +"65",3,1,0.221609702315325,0.383682469680265,75,0,0,-3.41,4 +"66",4,1,0.464167585446527,0.500551267916207,74,0,87.6,-0.7,6 +"67",4,1,0.541345093715546,0.168687982359427,55,1,390,-0.16,20 +"68",4,1,0.416758544652701,0.452039691289967,68,0,0,5.12,1 +"69",4,1,0.223814773980154,0.510474090407938,67,1,0,3.67,9 +"70",4,1,0.00771775082690187,0.579933847850055,71,0,0,-0.09,2 +"71",4,1,0.611907386990077,0.081587651598677,73,1,58.7,6.14,17 +"72",4,1,0.573318632855568,0.187431091510474,14,0,129,-0.72,20 +"73",4,1,0.00882028665931643,0.546857772877618,88,0,0,1.28,2 +"74",4,1,0.304299889746417,0.232635060639471,78,0,245,1.54,24 +"75",4,1,0.567805953693495,0.213891951488423,88,1,23.5,-2.36,16 +"76",4,1,0.160970231532525,0.863285556780595,74,1,130,-2.42,7 +"77",4,1,0.396912899669239,0.169790518191841,90,0,106.4,-3.56,24 +"78",5,1,0.00330760749724366,0.529217199558986,85,1,3,1.51,2 +"79",5,1,0.459757442116869,0.211686879823594,63,0,6.8,2.02,20 +"80",5,1,0.601984564498346,0.546857772877618,32,1,65.3,0.15,3 +"81",5,1,0.305402425578831,0.233737596471885,85,0,1.2,-0.8,24 +"82",5,1,0.560088202866593,0.41896361631753,84,0,0,2.02,11 +"83",5,1,0.576626240352812,0.195148842337376,82,1,153,-3.32,16 +"84",5,1,0.590959206174201,0.101433296582139,59,1,0,7.06,17 +"85",5,1,0.557883131201764,0.0562293274531422,57,0,120,4.69,17 +"86",5,1,0.00220507166482911,0.5303197353914,72,0,0,0.76,2 +"87",5,1,0.609702315325248,0.574421168687982,59,0,162,0.87,8 +"88",5,1,0.61742006615215,0.515986769570011,67,0,123.3,-3.52,3 +"89",6,1,0.61742006615215,0.595369349503859,68,0,0.9,6.28,8 +"90",6,1,0.552370452039691,0.308710033076075,75,1,1.4,-3.27,16 +"91",6,1,0.0176405733186329,0.540242557883131,78,1,2.2,0.12,2 +"92",6,1,0.672546857772878,0.211686879823594,50,0,89,6.35,18 +"93",6,1,0.659316427783903,0.315325248070562,63,1,197,7.66,19 +"94",6,1,0.267916207276736,0.882028665931643,89,1,84,-4.29,7 +"95",6,1,0.643880926130099,0.041896361631753,72,1,39.9,-1.02,21 +"96",6,1,0.281146637265711,0.272326350606395,37,1,106,-3.98,24 +"97",6,1,0.515986769570011,0.544652701212789,72,0,2,-2.73,10 +"98",6,1,0.643880926130099,0.115766262403528,66,0,0,5.53,17 +"99",6,1,0.508269018743109,0.109151047409041,69,0,35,1.84,23 +"100",6,1,0.019845644983462,0.625137816979052,78,1,0,-0.02,2 +"101",6,1,0.181918412348401,0.826901874310915,70,1,0,-4.56,7 +"102",7,1,0.254685777287762,0.522601984564498,54,0,101,-5.2,9 +"103",7,1,0.544652701212789,0.533627342888644,87,0,182,-3.98,3 +"104",7,1,0.127894156560088,0.517089305402426,76,1,5.4,-0.77,5 +"105",7,1,0.294377067254686,0.229327453142227,88,0,12.6,1.73,24 +"106",7,1,0.657111356119074,0.00220507166482911,52,0,35,-3.97,21 +"107",7,1,0.567805953693495,0.205071664829107,91,1,1.5,-1.58,16 +"108",7,1,0.284454244762955,0.449834619625138,61,1,0,0.66,12 +"109",7,1,0.639470782800441,0.166482910694598,75,0,2.1,2.78,17 +"110",7,1,0.56890848952591,0.0121278941565601,78,0,10.1,4.35,17 +"111",7,1,0.12348401323043,0.839029768467475,70,1,3.7,-2.47,7 +"112",7,1,0.123403313456846,0.83909896198987,70,1,0,-2.47,7 +"113",7,1,0.609702315325248,0.140022050716648,88,0,61.5,7.47,17 +"114",7,1,0.286659316427784,0.27122381477398,61,1,49,-1.25,24 +"115",7,1,0.539140022050717,0.529217199558986,72,0,3.3,2.51,3 +"116",8,1,0.486218302094818,0.163175303197354,61,1,17.1,-4.45,20 +"117",8,1,0.555678059536935,0.187431091510474,69,0,2.1,2.72,16 +"118",8,1,0.509371554575524,0.0694597574421169,65,1,170,-4.24,23 +"119",8,1,0.603087100330761,0.524807056229327,65,0,1.8,1.08,3 +"120",8,1,0.610804851157663,0.248070562293275,54,0,4.1,6.86,19 +"121",8,1,0.12348401323043,0.844542447629548,81,1,99.4,-3.2,7 +"122",8,1,0.267846332685277,0.881980727076789,89,0,0,-4.29,7 +"123",8,1,0.150980934026096,0.879716153405623,85,1,108,1.69,7 +"124",9,1,0.664829106945976,0.324145534729879,75,0,87.6,4.67,19 +"125",9,1,0.670341786108049,0.310915104740904,83,1,12.9,3.19,19 +"126",9,1,0.595369349503859,0.561190738699008,92,1,0,3.09,8 +"127",9,1,0.644983461962514,0.287761852260198,81,0,5.1,5.53,19 +"128",9,1,0.424476295479603,0.412348401323043,61,1,0,2.9,1 +"129",9,1,0.414553472987872,0.452039691289967,26,1,0,6.72,1 +"130",9,1,0.609702315325248,0.121278941565601,82,0,1,7.8,17 +"131",10,1,0.305402425578831,0.238147739801544,39,1,4.8,-2.43,24 +"132",10,1,0.592061742006615,0.289966923925028,74,0,2,-3.27,19 +"133",10,1,0.228224917309813,0.497243660418964,74,0,94.3,-2.48,9 +"134",10,1,0.69239250275634,0.266813671444322,78,1,25.8,-3,18 +"135",10,1,0.609702315325248,0.28335170893054,85,0,24.2,0.81,19 +"136",10,1,0.442116868798236,0.0661521499448732,68,1,75.2,2.89,23 +"137",10,1,0.15986769570011,0.875413450937156,40,0,2.4,-3.6,7 +"138",10,1,0.477398015435502,0.221609702315325,59,0,0.8,-1.97,15 +"139",10,1,0.416758544652701,0.284454244762955,42,0,57,6.53,15 +"140",10,1,0.0110253583241455,0.637265711135612,88,1,0,2.22,14 +"141",10,1,0.577728776185226,0.0231532524807056,85,1,29.3,4.08,17 +"142",11,1,0.596471885336273,0.525909592061742,76,0,0,3.78,3 +"143",11,1,0.428886438809261,0.276736493936053,76,1,491,-2.51,15 +"144",11,1,0.12348401323043,0.525909592061742,80,0,121,-2.08,5 +"145",11,1,0.656008820286659,0.19845644983462,81,1,208,1.72,18 +"146",11,1,0.177508269018743,0.84013230429989,73,0,55.8,-3.09,7 +"147",11,1,0.151047409040794,0.877618522601985,74,1,133,2.51,7 +"148",11,1,0.535832414553473,0.0826901874310915,82,0,13.7,-1.12,23 +"149",11,1,0.615214994487321,0.286659316427784,48,1,2.2,-0.12,19 +"150",12,1,0.555782614939188,0.187470228760421,76,0,9.7,2.72,16 +"151",12,1,0.368246968026461,0.195148842337376,22,1,115.5,0.11,24 +"152",13,1,0.648291069459757,0.286659316427784,73,0,9.2,5.53,19 +"153",13,1,0.0154355016538037,0.55678059536935,80,0,108,-0.87,2 +"154",13,1,0.191841234840132,0.863285556780595,70,0,9,-0.6,7 +"155",13,1,0.422271223814774,0.197353914002205,83,0,37.7,7.55,24 +"156",14,1,0.359426681367144,0.21058434399118,81,0,2.3,-2.8,24 +"157",14,1,0.601984564498346,0.525909592061742,79,1,300,4.66,3 +"158",14,1,0.191735799991933,0.863138323454413,47,1,207,-0.6,7 +"159",14,1,0.308710033076075,0.347298787210584,71,1,0,2.17,4 +"160",14,1,0.30981256890849,0.22271223814774,71,1,89,4.35,24 +"161",14,1,0.480705622932745,0.628445424476295,83,0,0.6,-0.69,10 +"162",15,1,0.0231532524807056,0.495038588754135,56,0,145,-2.76,5 +"163",15,1,0.401323042998897,0.478500551267916,67,1,27.9,1.5,1 +"164",15,1,0.00551267916207277,0.607497243660419,76,0,40.7,-0.61,2 +"165",15,1,0.643880926130099,0.137816979051819,88,1,5.3,5.25,17 +"166",15,1,0.571113561190739,0.110253583241455,76,1,5.8,7.27,17 +"167",15,1,0.0231532524807056,0.474090407938258,76,1,0,0.97,5 +"168",16,1,0.600882028665932,0.0650496141124587,88,1,6.5,-0.24,17 +"169",16,1,0.32194046306505,0.22271223814774,76,1,12.1,2.77,24 +"170",16,1,0.610804851157663,0.578831312017641,82,0,0,5.83,8 +"171",16,1,0.0385887541345094,0.48180815876516,67,0,1.7,1.48,5 +"172",16,1,0.178610804851158,0.861080485115766,66,1,228,-2.68,7 +"173",16,1,0.332965821389195,0.224917309812569,64,1,164,5.75,24 +"174",17,1,0.338478500551268,0.140022050716648,73,1,0,0.75,24 +"175",17,1,0.65380374862183,0.330760749724366,75,1,0.7,4.67,19 +"176",17,1,0.599779492833517,0.127894156560088,71,1,18.8,6.06,17 +"177",17,1,0.403528114663727,0.195148842337376,79,0,18.6,-1.32,24 +"178",18,1,0.398015435501654,0.471885336273429,68,0,0,-0.3,1 +"179",19,1,0.0319735391400221,0.575523704520397,71,1,59.9,-3.5,14 +"180",19,1,0.2348401323043,0.40683572216097,68,1,0,0.91,12 +"181",19,1,0.486218302094818,0.474090407938258,81,0,0,1.73,6 +"182",19,1,0.648291069459757,0.00441014332965821,69,0,133,-3.36,21 +"183",20,1,0.293274531422271,0.180815876515987,77,0,26.8,3.43,24 +"184",20,1,0.619625137816979,0.106945975744212,47,0,2.6,6.69,17 +"185",20,1,0.691289966923925,0.112458654906284,57,1,2.7,5.31,22 +"186",21,1,0.0165380374862183,0.642778390297685,76,1,3.5,-1.75,14 +"187",22,1,0.583241455347299,0.528114663726571,77,1,41.5,7.87,3 +"188",22,1,0.381477398015436,0.15986769570011,77,1,12.2,3.18,24 +"189",23,1,0.592061742006615,0.540242557883131,63,1,0,5.82,3 +"190",23,1,0.412382389467762,0.423251415054156,61,0,25.2,4.87,1 +"191",23,1,0.480705622932745,0.463065049614112,68,1,0,-3.48,6 +"192",23,1,0.120176405733186,0.257993384785005,67,0,27.4,1.7,13 +"193",24,1,0.15986769570011,0.86438809261301,72,0,1.6,-2.42,7 +"194",24,1,0.555678059536935,0.0374862183020948,71,1,17,6.23,17 +"195",24,1,0,0.525909592061742,50,1,1,-0.61,2 +"196",24,1,0.00992282249173098,0.65380374862183,81,0,7.1,-3.49,14 +"197",24,1,0.447629547960309,0.0848952590959206,61,1,1.7,0.52,20 +"198",24,1,0.531422271223815,0.188533627342889,73,1,3.7,5.77,20 +"199",24,1,0.120126488379257,0.257980372767098,67,0,16.3,1.7,13 +"200",24,1,0.194046306504961,0.848952590959206,58,1,217,-0.23,7 +"201",25,1,0.601984564498346,0.519294377067255,66,0,0,-1.74,3 +"202",25,1,0.160970231532525,0.879823594266814,86,1,5,0.03,7 +"203",26,1,0.703417861080485,0.200661521499449,71,0,17.2,7.44,18 +"204",26,1,0.224917309812569,0.514884233737597,76,0,0,4.06,9 +"205",26,1,0.598676957001103,0.209481808158765,82,0,18,2.65,17 +"206",26,1,0.672546857772878,0.143329658213892,65,0,29.9,-1.64,22 +"207",27,1,0.589856670341786,0.0297684674751929,71,0,2.2,-4.46,21 +"208",27,1,0.0584343991179713,0.467475192943771,80,0,77.2,-4.48,5 +"209",27,0,0.190738699007718,0.82800441014333,69,1,15.5,-0.55,7 +"210",28,1,0.683572216097023,0.22271223814774,72,0,14.1,5.05,18 +"211",28,1,0.640573318632856,0.0496141124586549,63,0,21.2,-2.14,21 +"212",28,1,0.464167585446527,0.274531422271224,66,1,7.1,3.25,15 +"213",28,1,0.0165380374862183,0.64167585446527,66,1,1,-1.75,14 +"214",28,1,0.0176405733186329,0.55457552370452,85,1,0,-1.63,2 +"215",29,1,0.670341786108049,0.336273428886439,60,1,1,2.84,19 +"216",30,1,0.55678059536935,0.296582138919515,42,1,2,0.00393328123139014,16 +"217",30,1,0.558985667034179,0.254685777287762,67,1,1.3,-3.14,16 +"218",30,1,0.276736493936053,0.452039691289967,62,0,0,-1.54,12 +"219",30,1,0.577728776185226,0.17199558985667,73,0,2.2,7,20 +"220",31,1,0.661521499448732,0.113561190738699,70,0,0,-0.49,22 +"221",31,1,0.711135611907387,0.117971334068357,66,1,1.5,3.73,22 +"222",31,1,0.312017640573319,0.227122381477398,70,1,53.1,4.9,24 +"223",31,1,0.567805953693495,0.0915104740904079,73,1,25.5,-2.26,17 +"224",31,1,0.423373759647189,0.410143329658214,71,1,0,2.9,1 +"225",31,1,0.626240352811466,0.0209481808158765,58,1,109,-1.95,21 +"226",31,1,0.323107790005394,0.206239699702942,42,0,0.8,5.6,24 +"227",31,1,0.00992282249173098,0.62954796030871,81,0,0,-1.49,2 +"228",31,1,0.607497243660419,0.603087100330761,85,0,3.4,-3.68,8 +"229",31,1,0.586549062844542,0.106945975744212,72,0,63.5,7.22,17 +"230",32,1,0.67805953693495,0.0429988974641676,74,0,0.9,-1.54,21 +"231",32,1,0.178610804851158,0.230429988974642,67,1,11.2,2.02,13 +"232",33,1,0.603087100330761,0.153252480705623,78,0,0,8.68,17 +"233",33,1,0.176408986613616,0.845596498923845,74,1,8.2,6.65,7 +"234",33,1,0.292171995589857,0.237045203969129,83,0,21.1,0.5,24 +"235",34,1,0.644983461962514,0.179713340683572,52,0,150,1.21,18 +"236",34,1,0.427783902976847,0.467475192943771,72,1,39.2,3.86,1 +"237",34,1,0.523704520396913,0.325248070562293,38,0,43,-4.42,16 +"238",34,1,0.652701212789416,0.203969128996692,62,1,10,0.42,18 +"239",35,1,0.590959206174201,0.534729878721058,69,1,2.8,5.87,3 +"240",35,1,0.218302094818082,0.495038588754135,74,1,2.5,2.12,9 +"241",36,1,0.562293274531422,0.0959206174200661,66,0,0.8,4.49,17 +"242",36,1,0.625137816979052,0.113561190738699,91,0,47.2,5.63,17 +"243",37,1,0.402425578831312,0.156560088202867,40,0,6,4,24 +"244",37,1,0.694597574421169,0.232635060639471,88,0,27,3.21,18 +"245",37,1,0.332965821389195,0.179713340683572,67,1,58.3,0.61,24 +"246",37,1,0.120147178437655,0.257860458327148,65,0,75,1.7,13 +"247",37,1,0.543550165380375,0.219404630650496,85,1,11.8,-3.03,16 +"248",37,0,0.647188533627343,0.288864388092613,59,1,3.1,5.53,19 +"249",38,1,0.254685777287762,0.278941565600882,64,1,19.5,-4.71,24 +"250",38,1,0.448732083792723,0.209481808158765,81,0,1.6,3.5,20 +"251",38,1,0.604189636163175,0.326350606394708,86,0,2,-2.26,19 +"252",39,1,0.291069459757442,0.2348401323043,73,1,1.5,0.5,24 +"253",39,1,0.446527012127894,0.260198456449835,70,1,0,7.41,15 +"254",39,1,0.00882028665931643,0.491730981256891,56,1,1,-4.18,5 +"255",39,1,0.631753031973539,0.223814773980154,83,1,12.4,-3.45,19 +"256",40,1,0.0187431091510474,0.558985667034179,66,1,1.9,-1.08,2 +"257",40,1,0.00882028665931643,0.529217199558986,74,0,5.9,-1.03,2 +"258",40,1,0.0496141124586549,0.694597574421169,67,1,1.7,-0.67,14 +"259",40,1,0.578831312017641,0.578831312017641,71,1,2.1,-4.62,8 +"260",41,1,0.669239250275634,0.081587651598677,56,1,96.8,6.13,21 +"261",41,1,0.384785005512679,0.181918412348401,87,0,126,6.04,24 +"262",41,1,0.616317530319735,0.513781697905182,78,1,0,-4.37,3 +"263",42,1,0.0463065049614112,0.696802646085998,75,1,8.1,-0.67,14 +"264",43,1,0.412348401323043,0.188533627342889,61,1,45.2,1.21,24 +"265",43,1,0.0760749724366042,0.467475192943771,85,1,13.8,-2.06,5 +"266",43,1,0.2954796030871,0.352811466372657,83,0,0,-3.16,4 +"267",43,1,0.0165380374862183,0.546857772877618,61,1,2.5,-1.5,2 +"268",44,1,0.00441014332965821,0.524807056229327,73,0,0,1.17,2 +"269",45,1,0.647188533627343,0.0463065049614112,35,1,43.1,1.46,21 +"270",45,1,0.579933847850055,0.183020948180816,75,0,0.9,1.58,20 +"271",45,1,0.523704520396913,0.324145534729879,67,0,19.7,-5.13,16 +"272",46,1,0.126791620727674,0.855567805953694,41,1,2.6,-2.4,7 +"273",46,1,0.136714443219405,0.863285556780595,66,1,84,-1.48,7 +"274",46,1,0.673649393605292,0.249173098125689,63,0,86.5,1.73,18 +"275",47,1,0.475192943770673,0.461962513781698,72,1,0,2.66,6 +"276",47,1,0.277839029768467,0.411245865490628,67,1,1.4,-1.89,4 +"277",48,1,0.240352811466373,0.498346196251378,88,0,1.5,-0.77,9 +"278",48,1,0.243660418963616,0.200661521499449,84,0,5.6,0.8,24 +"279",48,1,0.579933847850055,0.124586549062845,68,1,45.3,8.37,17 +"280",49,1,0.181918412348401,0.86438809261301,69,1,29.1,6.13,7 +"281",49,1,0.7045203969129,0.2348401323043,72,1,16.4,0.39,18 +"282",49,1,0.252480705622933,0.218302094818082,70,0,29.6,0.97,24 +"283",49,1,0.59316427783903,0.219404630650496,71,0,24.1,-1.57,16 +"284",51,1,0.547960308710033,0.314222712238148,44,0,177,-4.68,16 +"285",51,1,0.553472987872106,0.0474090407938258,71,1,79.4,3.64,17 +"286",52,1,0.24696802646086,0.211686879823594,70,1,26,-1.4,24 +"287",53,1,0.596471885336273,0.106945975744212,72,0,6.9,1.03,17 +"288",53,1,0.489525909592062,0.248070562293275,60,1,1.7,5.11,15 +"289",53,1,0.603087100330761,0.0694597574421169,55,1,5.4,-1.18,17 +"290",54,1,0.633958103638368,0.325248070562293,57,0,19.1,7.68,19 +"291",54,1,0.266813671444322,0.275633958103638,73,1,2.6,-3.4,24 +"292",55,1,0.712238147739802,0.200661521499449,31,0,4,7.89,18 +"293",55,1,0.140022050716648,0.863285556780595,70,1,13.3,1.84,7 +"294",55,1,0.66593164277839,0.0826901874310915,65,1,0.5,5.31,21 +"295",55,1,0.167585446527012,0.871003307607497,66,1,1.5,-3.36,7 +"296",55,1,0.335170893054024,0.285556780595369,79,1,0.6,-2.98,15 +"297",56,1,0.276736493936053,0.458654906284454,79,1,0,-3.68,12 +"298",57,1,0.393605292171996,0.2348401323043,74,0,2,-2.92,15 +"299",57,1,0.547960308710033,0.27122381477398,62,0,2.8,-0.27,16 +"300",57,1,0.0429988974641676,0.540242557883131,56,0,12.1,5.02,2 +"301",57,1,0.511576626240353,0.0672546857772878,59,0,185,-3.63,23 +"302",57,1,0.251378169790518,0.412348401323043,57,0,0,2.45,12 +"303",57,1,0.663726571113561,0.0463065049614112,62,1,0,-1.04,21 +"304",59,1,0.0264608599779493,0.551267916207277,85,1,0,-1.95,2 +"305",60,1,0.0231532524807056,0.647188533627343,84,0,86.5,-2.56,14 +"306",60,1,0.579933847850055,0.503858875413451,70,0,31,-3.89,3 +"307",60,1,0.0187431091510474,0.584343991179713,61,1,0.3,-1.75,2 +"308",60,1,0.565600882028666,0.0848952590959206,64,1,1.9,5.14,17 +"309",61,1,0.647188533627343,0.607497243660419,77,0,138,1.01,8 +"310",62,1,0.12348401323043,0.841234840132304,77,1,2.5,-3.2,7 +"311",63,1,0.572216097023153,0.163175303197354,26,1,241,8.16,20 +"312",64,1,0.0319735391400221,0.578831312017641,81,0,0,7.34,2 +"313",64,1,0.567805953693495,0.471885336273429,92,0,0,-1.49,3 +"314",64,1,0.525909592061742,0.410143329658214,73,1,186,-1.27,11 +"315",64,1,0.0143329658213892,0.56670341786108,71,0,5.9,0.21,2 +"316",65,1,0.594266813671444,0.539140022050717,61,0,3.8,4.35,3 +"317",65,1,0.274531422271224,0.212789415656009,72,1,3.8,1.05,24 +"318",65,1,0.400220507166483,0.162072767364939,68,1,8.71,-1.11,24 +"319",66,1,0.00330760749724366,0.540242557883131,67,0,58,4.6,2 +"320",66,1,0.27122381477398,0.515986769570011,59,1,126,-4.02,9 +"321",66,1,0.598676957001103,0.281146637265711,75,0,1.2,1.79,19 +"322",67,1,0.456449834619625,0.224917309812569,79,1,99,4.37,15 +"323",67,1,0.639470782800441,0.604189636163175,83,1,0,0.69,8 +"324",68,1,0.291069459757442,0.200661521499449,88,0,2.2,-0.99,24 +"325",68,1,0.486218302094818,0.165380374862183,73,1,5.6,-2.91,20 +"326",68,1,0.583241455347299,0.504961411245865,26,1,16.4,2.16,3 +"327",68,1,0.664829106945976,0.0407938257993385,59,1,0.7,0.76,21 +"328",69,1,0.562293274531422,0.179713340683572,67,0,51.6,3.28,20 +"329",70,1,0.662624035281147,0.216097023153252,47,1,104,4.79,18 +"330",70,1,0.0209481808158765,0.640573318632856,72,0,94.9,-2.16,14 +"331",70,1,0.539140022050717,0.367144432194046,51,0,0.9,-3.21,11 +"332",70,1,0.596471885336273,0.560088202866593,81,0,0,3.09,8 +"333",71,1,0.437706725468578,0.241455347298787,56,1,24.2,-1.04,15 +"334",71,1,0.613009922822492,0.589856670341786,72,0,0,3.91,8 +"335",72,1,0.661521499448732,0.166482910694598,43,1,1.3,-2.75,18 +"336",72,1,0.214754024461742,0.974757690080065,78,1,21.3,-0.03,7 +"337",73,1,0.657111356119074,0.106945975744212,77,1,96.1,-0.99,22 +"338",73,1,0.504961411245865,0.277839029768467,72,1,1.37,-3.5,16 +"339",74,1,0.669239250275634,0.331863285556781,56,0,6.1,1.18,19 +"340",74,1,0.051819184123484,0.696802646085998,48,0,1.4,-1.7,14 +"341",75,1,0.476295479603087,0.232635060639471,67,0,84,1.86,15 +"342",75,1,0.366041896361632,0.19845644983462,78,0,0,0.11,24 +"343",75,1,0.205071664829107,0.957001102535832,73,1,101.8,-4.25,7 +"344",76,1,0.439911797133407,0.25909592061742,73,0,34.5,7.47,15 +"345",76,1,0.400249334549456,0.162212781386692,71,1,49.5,-1.11,24 +"346",76,1,0.0187431091510474,0.638368246968026,74,0,0.8,-3.66,14 +"347",76,1,0.0209481808158765,0.69239250275634,51,1,1.5,1.29,14 +"348",76,1,0.661521499448732,0.607497243660419,46,0,7.5,-1.29,8 +"349",76,1,0.536934950385888,0.0374862183020948,81,0,28.1,3.7,23 +"350",77,1,0.181918412348401,0.890848952590959,85,0,2,-4.23,7 +"351",77,1,0.465270121278942,0.120176405733186,79,0,3.9,5.31,20 +"352",79,1,0.508269018743109,0.114663726571114,75,0,18.6,-1.82,23 +"353",80,1,0.598676957001103,0.538037486218302,63,1,4.7,-0.47,3 +"354",80,1,0.50606394707828,0.148842337375965,80,1,7.4,2.25,20 +"355",80,1,0.237045203969129,0.404630650496141,71,0,500,-3.19,12 +"356",81,1,0.0308710033076075,0.592061742006615,75,1,11.3,-2.35,14 +"357",81,1,0.509371554575524,0.188533627342889,74,1,42,1.33,20 +"358",81,1,0.651598676957001,0.0992282249173098,71,1,0,0.48,21 +"359",81,1,0.654906284454245,0.300992282249173,85,0,8.9,5.52,19 +"360",81,1,0.56890848952591,0.00882028665931643,84,1,30.5,4.35,17 +"361",81,1,0.396912899669239,0.4696802646086,80,1,51.1,-3.25,1 +"362",82,1,0.0529217199558986,0.467475192943771,85,1,9.2,-4.01,5 +"363",82,1,0.276736493936053,0.45755237045204,69,1,0,-3.68,12 +"364",82,1,0.529217199558986,0.28335170893054,71,1,13.7,-4.7,16 +"365",82,1,0.00882028665931643,0.659316427783903,64,1,0,-3.49,14 +"366",84,1,0.562293274531422,0.289966923925028,61,0,297,1.11,16 +"367",84,1,0.281146637265711,0.320837927232635,74,0,22.1,1.11,4 +"368",85,1,0.196251378169791,0.830209481808159,85,0,3.1,-1.3,7 +"369",85,1,0.0187431091510474,0.487320837927233,74,1,1.9,2.35,5 +"370",85,1,0.01107325456131,0.53146868790266,90,0,0,-1.5,2 +"371",86,1,0.64167585446527,0.121278941565601,73,1,0.8,2.21,17 +"372",86,1,0.527012127894157,0.422271223814774,73,1,52.6,1.5,11 +"373",86,1,0.497243660418964,0.485115766262404,54,1,170,-1.68,6 +"374",86,1,0.2954796030871,0.195148842337376,78,1,0.8,-1.48,24 +"375",87,1,0.689084895259096,0.154355016538037,48,0,4.1,4.24,22 +"376",87,1,0.0132304299889746,0.67805953693495,25,1,80,5.63,14 +"377",87,1,0.565600882028666,0.217199558985667,57,1,4,0.84,16 +"378",87,1,0.61742006615215,0.120176405733186,59,0,34.3,8.77,17 +"379",88,1,0.67805953693495,0.30981256890849,69,0,5.6,2.18,19 +"380",89,1,0.527012127894157,0.174200661521499,80,0,22.3,-1.29,20 +"381",89,1,0.212789415656009,0.209481808158765,75,1,59.7,3.91,13 +"382",89,1,0.596471885336273,0.284454244762955,78,0,116.8,2.98,19 +"383",90,1,0.71664829106946,0.121278941565601,60,0,37.6,1.45,22 +"384",90,1,0.0275633958103638,0.484013230429989,58,1,0.7,-2.28,5 +"385",90,1,0.598676957001103,0.519294377067255,70,1,1.9,0.3,3 +"386",90,1,0.0496141124586549,0.590959206174201,88,1,97,-4.87,14 +"387",90,1,0.0286659316427784,0.471885336273429,63,1,51.9,-4.95,5 +"388",90,1,0.501653803748622,0.484013230429989,42,0,17.4,2.49,6 +"389",90,1,0.608599779492834,0.188533627342889,43,1,0.7,0.44,17 +"390",90,1,0.630650496141125,0.0992282249173098,72,0,18.9,2.11,17 +"391",90,1,0.0143329658213892,0.485115766262404,80,0,13.1,1.82,5 +"392",90,1,0.668136714443219,0.230429988974642,52,0,2.9,0.8,18 +"393",90,1,0.38257993384785,0.178610804851158,51,1,15,2.85,24 +"394",90,1,0.293274531422271,0.211686879823594,80,0,140,7.49,24 +"395",90,1,0.686879823594267,0.342888643880926,39,1,31.9,-1.27,19 +"396",91,1,0.62954796030871,0.308710033076075,74,1,159,-4.47,19 +"397",91,1,0.297684674751929,0.231532524807056,77,0,27.2,-1.32,24 +"398",92,1,0.477398015435502,0.280044101433297,68,1,5.6,9.42,15 +"399",92,1,0.296582138919515,0.164277839029768,71,1,53.7,-2.54,24 +"400",93,1,0.708930540242558,0.103638368246968,61,1,2,3.25,22 +"401",93,1,0.293207450625094,0.211524875257415,64,1,33.6,7.49,24 +"402",93,1,0.520396912899669,0.177508269018743,68,1,117,4.61,20 +"403",93,1,0.679162072767365,0.00661521499448732,72,1,14.1,-4.38,21 +"404",94,1,0.55457552370452,0.153252480705623,75,1,0,8.43,20 +"405",94,1,0.0705622932745314,0.467475192943771,80,1,2.4,-2.09,5 +"406",94,1,0.654906284454245,0.284454244762955,58,1,6.6,7.12,19 +"407",95,1,0.0165380374862183,0.610804851157663,78,1,316,-0.000167983906400826,2 +"408",96,1,0.0683572216097023,0.466372657111356,86,0,5.6,-0.31,5 +"409",96,1,0.619625137816979,0.551267916207277,78,1,0,-1.43,3 +"410",96,1,0.689084895259096,0.0981256890848953,48,1,22,2.76,22 +"411",97,1,0.675854465270121,0.212789415656009,76,1,0.7,8.4,18 +"412",97,1,0.590959206174201,0.194046306504961,75,1,1.7,-0.2,17 +"413",98,1,0.031909982795492,0.578814881244116,68,1,8.3,7.34,2 +"414",98,1,0.689246802695065,0.154206676321231,59,0,5.1,4.24,22 +"415",98,1,0.051819184123484,0.607497243660419,76,1,1.5,-4,14 +"416",98,1,0.00888375884384754,0.555601214606412,80,1,4.7,1.68,2 +"417",98,1,0.630650496141125,0.0981256890848953,32,0,7,2.59,17 +"418",99,1,0.32194046306505,0.223814773980154,74,0,48,2.77,24 +"419",99,1,0.552370452039691,0.317530319735391,49,0,6.2,0.11,16 +"420",101,1,0.252480705622933,0.233737596471885,83,0,2.1,-3.82,24 +"421",102,1,0.0242557883131202,0.551267916207277,65,1,6.3,-2.23,2 +"422",103,0,0.702315325248071,0.0639470782800441,63,1,69.7,-3.29,21 +"423",104,1,0.128996692392503,0.846747519294377,72,1,18,4.93,7 +"424",104,1,0.414553472987872,0.487320837927233,72,1,5.1,8.32,1 +"425",105,1,0.576626240352812,0.511576626240353,76,0,2.2,-4.05,3 +"426",105,1,0.351708930540243,0.211686879823594,74,0,1.8,3.87,24 +"427",105,1,0.594266813671444,0.565600882028666,68,1,8.6,5.98,8 +"428",106,1,0.66593164277839,0.299889746416759,75,1,7.3,0.9,19 +"429",106,1,0.00330760749724366,0.56890848952591,60,1,20,4.96,2 +"430",106,1,0.609702315325248,0.576626240352812,83,0,15.3,2.96,8 +"431",107,0,0.647188533627343,0.00441014332965821,83,1,16.4,-4.79,21 +"432",108,1,0.12348401323043,0.855567805953694,46,1,49.3,0.9,7 +"433",109,1,0.424476295479603,0.40683572216097,46,0,10.2,-0.79,1 +"434",109,1,0.428886438809261,0.489525909592062,67,0,26.76,3.52,1 +"435",112,1,0.585446527012128,0.5303197353914,50,1,13.6,7.87,3 +"436",112,1,0.59316427783903,0.0771775082690187,80,0,10.2,3.18,17 +"437",113,1,0.0330760749724366,0.639470782800441,67,1,6.8,-1.97,14 +"438",113,1,0.442116868798236,0.329658213891951,66,0,42,-3.13,15 +"439",114,1,0.62954796030871,0.190738699007718,75,0,1,-1.61,17 +"440",115,1,0.48180815876516,0.191841234840132,80,0,6.8,2.5,20 +"441",117,1,0.194046306504961,0.825799338478501,17,1,62,-1.36,7 +"442",118,1,0.700110253583241,0.266813671444322,31,1,120,0.93,18 +"443",118,1,0.130099228224917,0.863285556780595,88,1,2.5,3.28,7 +"444",118,0,0.420066152149945,0.421168687982359,78,0,1.1,0.35,1 +"445",120,1,0.388092613009923,0.179713340683572,30,1,2.6,-2.05,24 +"446",120,1,0.631753031973539,0,66,1,3.1,-4.21,21 +"447",120,1,0.684674751929438,0.27122381477398,59,1,0,-1.55,18 +"448",121,1,0.0385887541345094,0.543550165380375,66,1,27.2,0.98,2 +"449",122,1,0.374862183020948,0.281146637265711,27,1,23.1,-2.3,15 +"450",123,1,0.00882028665931643,0.621830209481808,84,1,0,-3.19,2 +"451",123,0,0.328555678059537,0.196251378169791,53,0,45,1.6,24 +"452",124,1,0.466372657111356,0.208379272326351,36,0,31.7,4.47,20 +"453",124,0,0.637265711135612,0.146637265711136,91,0,50.2,4.1,17 +"454",125,1,0.0407938257993385,0.595369349503859,75,0,23.3,-2.84,14 +"455",127,1,0.604189636163175,0.158765159867696,67,1,4.4,8.05,17 +"456",128,1,0.441014332965821,0.478500551267916,62,0,13,4.46,1 +"457",129,1,0.67805953693495,0.108048511576626,59,1,182,0.63,22 +"458",130,1,0.0275633958103638,0.482910694597574,72,0,8.5,-2.28,5 +"459",131,1,0.41896361631753,0.226019845644983,37,1,29,-2.85,15 +"460",132,1,0.0319735391400221,0.638368246968026,74,1,168,-0.51,14 +"461",132,1,0.538037486218302,0.0496141124586549,82,0,0.9,-1.92,17 +"462",132,1,0.0738699007717751,0.663726571113561,69,1,3.3,-3.81,14 +"463",133,1,0.551267916207277,0.229327453142227,70,0,6.7,-3.32,16 +"464",134,1,0.700110253583241,0.265711135611907,64,1,68.9,0.93,18 +"465",135,1,0.0253583241455347,0.625137816979052,71,0,1.1,-2.59,2 +"466",135,1,0.684674751929438,0.356119073869901,54,1,11.8,1.57,19 +"467",137,1,0.651598676957001,0.0937155457552371,77,1,389,-1.96,21 +"468",138,1,0.0231532524807056,0.477398015435502,82,0,6.1,0.39,5 +"469",141,1,0.270121278941566,0.422271223814774,16,0,4.2,-2.47,12 +"470",141,1,0.541345093715546,0.101433296582139,83,1,1.2,5.26,23 +"471",142,1,0.639470782800441,0.0474090407938258,28,0,112,-2.14,21 +"472",142,1,0.195100857819301,0.824726591291749,87,0,10.2,-3.07,7 +"473",142,0,0.588754134509372,0.112458654906284,41,0,2.7,4.46,17 +"474",144,1,0.0727673649393605,0.4696802646086,73,0,42.9,-2.09,5 +"475",144,1,0.585446527012128,0.514884233737597,73,1,2,-2.18,3 +"476",144,1,0.315325248070562,0.351708930540243,80,1,0,-0.32,4 +"477",145,1,0.639470782800441,0.146637265711136,75,1,16.2,3.57,17 +"478",146,1,0.0407938257993385,0.625137816979052,88,0,2.2,-3.56,14 +"479",148,1,0.533627342888644,0.0540242557883131,28,0,14.8,-1.33,17 +"480",148,1,0.320837927232635,0.14773980154355,77,1,1.1,0.77,24 +"481",148,0,0.203969128996692,0.497243660418964,41,1,0,-1.96,9 +"482",151,1,0.643880926130099,0.101433296582139,74,0,1.6,2.08,21 +"483",151,1,0.211686879823594,0.877618522601985,26,1,147.7,-2.79,7 +"484",152,1,0.339581036383682,0.284454244762955,61,0,11.4,2.78,15 +"485",154,1,0.596471885336273,0.0749724366041896,73,0,2.4,0.88,17 +"486",154,1,0.670341786108049,0.0363836824696803,66,0,2.1,-2.39,21 +"487",154,1,0.312017640573319,0.229327453142227,62,1,1.8,5.88,24 +"488",156,1,0.697905181918412,0.175303197353914,54,1,7.4,-3.77,22 +"489",157,1,0.592061742006615,0.170893054024256,72,0,0,6.69,17 +"490",159,1,0.476295479603087,0.523704520396913,24,0,1.8,-3.03,6 +"491",159,1,0.643880926130099,0.169790518191841,79,1,1.4,-0.75,18 +"492",161,1,0.285556780595369,0.203969128996692,62,0,20.6,2.44,24 +"493",161,1,0.417861080485116,0.422271223814774,65,0,102,0.31,1 +"494",161,1,0.443219404630651,0.0782800441014333,67,1,3.3,4.37,20 +"495",161,1,0.44542447629548,0.188533627342889,50,1,1.1,-1.94,24 +"496",162,1,0.32194046306505,0.125689084895259,54,0,55,1.32,24 +"497",163,1,0.276736493936053,0.567805953693495,34,0,4.3,-3.54,9 +"498",163,0,0.152149944873208,0.41896361631753,21,1,0.6,-3.26,13 +"499",164,0,0.30981256890849,0.244762954796031,74,0,36.6,-3.88,24 +"500",165,1,0.662624035281147,0.0286659316427784,67,0,29.2,-2.43,21 +"501",165,1,0.278941565600882,0.458654906284454,62,0,2.2,-3.69,12 +"502",165,1,0.543550165380375,0.349503858875413,29,1,5.8,-1.9,16 +"503",168,1,0.299889746416759,0.239250275633958,76,0,1.6,-1.14,24 +"504",169,1,0.658213891951488,0.0363836824696803,77,0,32,1.04,21 +"505",170,1,0.37045203969129,0.209481808158765,45,1,7,-0.46,15 +"506",171,1,0.552370452039691,0.11135611907387,59,0,1,1.89,23 +"507",171,1,0.585446527012128,0.533627342888644,63,0,0,8.02,3 +"508",172,1,0.630650496141125,0.243660418963616,73,1,115.7,-1.85,19 +"509",174,1,0.389195148842337,0.21058434399118,75,1,140.1,-1.5,24 +"510",175,1,0.719955898566703,0.119073869900772,46,1,3.5,-3.34,22 +"511",176,1,0.272326350606395,0.287761852260198,60,0,383,-3.23,24 +"512",177,1,0.114663726571114,0.252480705622933,75,0,207,-2.53,13 +"513",177,1,0.529217199558986,0.298787210584344,43,0,29.5,-4.54,16 +"514",178,1,0.511576626240353,0.103638368246968,61,0,17.6,0.74,23 +"515",179,1,0.0253583241455347,0.635060639470783,67,1,4.3,-4.23,14 +"516",180,1,0.578831312017641,0.201764057331863,69,1,12.8,-0.17,16 +"517",181,1,0.56670341786108,0.13561190738699,58,0,186,9.55,20 +"518",182,1,0.60321439471277,0.565646348479569,21,0,5.4,-1.4,8 +"519",182,1,0.604189636163175,0.564498346196251,73,0,22.1,-1.4,8 +"520",183,1,0.0231532524807056,0.500551267916207,65,1,10.5,1.35,5 +"521",184,1,0.0286659316427784,0.639470782800441,77,1,55,-2.93,14 +"522",185,0,0.564498346196251,0.249173098125689,57,1,4.1,0.99,16 +"523",186,1,0.497243660418964,0.00882028665931643,59,1,0.8,-0.84,23 +"524",186,0,0.447629547960309,0.292171995589857,54,1,2.3,-0.33,15 +"525",188,1,0.254752401962106,0.278903486926499,79,1,8.8,-4.71,24 +"526",188,1,0.0253583241455347,0.622932745314223,74,1,27.1,-2.59,2 +"527",189,1,0.632855567805954,0.0727673649393605,36,0,122,-0.75,21 +"528",189,1,0.0231532524807056,0.69018743109151,68,1,4,-2.2,14 +"529",190,1,0.571113561190739,0.11135611907387,84,1,8.3,7.27,17 +"530",190,1,0.620727673649394,0.552370452039691,74,1,2.8,-2.22,3 +"531",193,1,0.607497243660419,0.0882028665931643,20,1,1.9,-1.85,17 +"532",194,1,0.177508269018743,0.893054024255788,57,1,6,-3.23,7 +"533",194,1,0.291069459757442,0.220507166482911,26,0,85,1.7,24 +"534",194,0,0.262403528114664,0.25909592061742,81,1,1.7,4,24 +"535",195,1,0.54244762954796,0.0727673649393605,57,1,1.1,0.00601846332764289,23 +"536",196,1,0.00992282249173098,0.626240352811466,71,1,12,-3.17,2 +"537",196,1,0.443219404630651,0.18632855567806,59,0,5.3,-1.94,24 +"538",196,1,0.202866593164278,0.231532524807056,64,0,124,4.28,13 +"539",196,1,0.0165380374862183,0.476295479603087,82,1,0,-0.54,5 +"540",196,1,0.291035272265899,0.220599616597134,74,0,4.4,1.7,24 +"541",198,1,0.601984564498346,0.128996692392503,63,0,2.4,8.67,17 +"542",201,1,0.0110253583241455,0.642778390297685,53,1,128,-0.15,14 +"543",205,1,0.019845644983462,0.54244762954796,22,1,166,-0.06,2 +"544",205,1,0.664967882312956,0.324002761656881,73,0,5.52,4.67,19 +"545",205,1,0.0110253583241455,0.672546857772878,79,0,20.7,-3.44,14 +"546",206,0,0.648291069459757,0.126791620727674,63,0,15.5,3.13,17 +"547",207,1,0.195148842337376,0.841234840132304,77,0,3.9,-1.23,7 +"548",207,1,0.586549062844542,0.0363836824696803,80,0,4.7,0.7,17 +"549",207,1,0.520396912899669,0.0804851157662624,87,0,5.8,-3.01,23 +"550",209,0,0.649393605292172,0.0385887541345094,72,0,1.3,2.38,21 +"551",210,1,0.536644018165535,0.0373414401635543,49,1,3.2,3.7,23 +"552",210,1,0.590959206174201,0.538037486218302,66,1,8.3,8.07,3 +"553",211,1,0.758544652701213,0.218302094818082,72,0,277,1.11,18 +"554",211,1,0.631753031973539,0.0981256890848953,73,1,9.3,2.59,17 +"555",212,0,0.144432194046307,0.862183020948181,91,0,5.5,-1.46,7 +"556",213,1,0.691289966923925,0.350606394707828,59,0,133,2.6,19 +"557",213,1,0.154355016538037,0.862183020948181,66,0,1.4,-2.14,7 +"558",214,1,0.0319735391400221,0.49393605292172,89,1,2.6,-2.94,5 +"559",215,1,0.138919514884234,0.857772877618523,54,1,5.2,-3.92,7 +"560",215,1,0.0352811466372657,0.694597574421169,53,1,0,0.8,14 +"561",215,1,0.55678059536935,0.208379272326351,74,1,2.9,3.86,16 +"562",216,1,0.660418963616318,0.231532524807056,37,1,14.6,2.9,18 +"563",218,1,0.0507166482910695,0.585446527012128,81,1,8,-3.71,14 +"564",219,1,0.56670341786108,0.217199558985667,70,0,95.1,0.84,16 +"565",219,0,0.041896361631753,0.544652701212789,74,1,0,1.13,2 +"566",220,1,0.616317530319735,0.0882028665931643,69,0,500,-0.54,17 +"567",223,1,0.681367144432194,0.121278941565601,66,1,44.3,1.47,22 +"568",223,1,0.639470782800441,0.597574421168688,76,1,15.9,0.69,8 +"569",224,1,0.612091967464396,0.244786951629575,67,0,3.4,7.11,19 +"570",224,1,0.203969128996692,0.218302094818082,35,1,104,4.12,13 +"571",224,0,0.69239250275634,0.216097023153252,21,1,8.8,9.39,18 +"572",225,1,0.561190738699008,0.524807056229327,60,1,33.8,-1.8,3 +"573",225,1,0.484013230429989,0.621830209481808,63,0,72.3,0.51,10 +"574",232,1,0.535832414553473,0.0429988974641676,66,0,3.2,-3.32,23 +"575",232,1,0.545755237045204,0.0727673649393605,72,1,4.9,-0.32,23 +"576",232,1,0.658213891951488,0.0165380374862183,66,1,9.64,-5.56,21 +"577",234,1,0.571113561190739,0.196251378169791,72,1,0,-0.45,16 +"578",234,1,0.452039691289967,0.175303197353914,66,1,0.9,-4.27,24 +"579",235,1,0.132304299889746,0.517089305402426,50,0,222,2.02,5 +"580",236,1,0.578831312017641,0.155457552370452,61,1,6.7,8.49,20 +"581",236,1,0.664782379286397,0.324373284292302,18,1,118,4.67,19 +"582",237,1,0.450937155457552,0.410143329658214,25,0,9.8,-4.76,1 +"583",239,1,0.689084895259096,0.214994487320838,78,0,13.7,8.89,18 +"584",240,0,0.28335170893054,0.199558985667034,26,1,21,-1.89,24 +"585",241,1,0.24696802646086,0.219404630650496,50,1,97.9,-3.42,24 +"586",243,1,0.595369349503859,0.0385887541345094,71,0,24.6,-3.24,21 +"587",246,1,0.495038588754135,0.313120176405733,28,0,24.3,-3.05,15 +"588",247,1,0.540242557883131,0.0551267916207277,76,1,4,0.67,17 +"589",247,1,0.513781697905182,0.143329658213892,47,1,2.2,-0.3,20 +"590",247,1,0.245865490628445,0.480705622932745,51,1,300,0.27,9 +"591",248,0,0.120176405733186,0.842337375964719,58,1,6.4,-1.9,7 +"592",249,1,0.648291069459757,0.133406835722161,76,1,11.7,5.1,17 +"593",249,1,0.639470782800441,0.33406835722161,16,1,40.8,-2.75,19 +"594",250,1,0.624035281146637,0.214994487320838,43,1,142,-2.79,19 +"595",251,1,0.308710033076075,0.508269018743109,39,0,0,8.06,9 +"596",254,1,0.191841234840132,0.221609702315325,52,0,10.1,4.06,13 +"597",255,1,0.27122381477398,0.41896361631753,69,0,1,-3.79,12 +"598",256,1,0.640573318632856,0.0893054024255788,25,1,4.2,6.3,21 +"599",257,1,0.545755237045204,0.0683572216097023,77,0,1.3,-2.27,23 +"600",261,1,0.173098125689085,0.859977949283352,65,0,33.9,-2.93,7 +"601",261,1,0.192943770672547,0.814773980154355,70,1,44.2,-2.74,7 +"602",261,1,0.18412348401323,0.252480705622933,16,0,7,-1.37,13 +"603",263,1,0.654906284454245,0.281146637265711,74,1,45,6.86,19 +"604",264,1,0.588754134509372,0.285556780595369,49,0,83.2,-1.75,19 +"605",269,1,0.639470782800441,0.278941565600882,67,1,3.2,-0.35,19 +"606",270,0,0.545755237045204,0.415656008820287,54,1,3.5,-4.33,11 +"607",272,1,0.64167585446527,0.611907386990077,47,0,62,8.27,8 +"608",272,0,0.303197353914002,0.359426681367144,59,1,2,-3.42,4 +"609",277,1,0.153252480705623,0.871003307607497,64,1,2.4,-2.11,7 +"610",279,1,0.00992282249173098,0.489525909592062,75,1,19.4,-4.18,5 +"611",280,1,0.00220507166482911,0.541345093715546,70,1,2.3,2.31,2 +"612",281,1,0.604189636163175,0.543550165380375,36,0,0,-0.85,3 +"613",285,1,0.251378169790518,0.217199558985667,67,1,3.6,0.78,24 +"614",286,1,0.538064795886357,0.291072522429665,70,1,14.6,-0.68,16 +"615",286,1,0.0385887541345094,0.468577728776185,74,1,87,-3.1,5 +"616",293,0,0.646085997794928,0.316427783902977,44,1,11,3.07,19 +"617",294,1,0.474090407938258,0.200661521499449,43,1,4.1,3.34,20 +"618",294,1,0.632855567805954,0.0253583241455347,71,1,51.5,-4.1,21 +"619",296,1,0.461962513781698,0.264608599779493,25,0,3.1,4.24,15 +"620",297,1,0.0264608599779493,0.487320837927233,82,0,42,0.98,5 +"621",298,1,0.428886438809261,0.414553472987872,41,1,18,0.02,1 +"622",300,1,0.0253583241455347,0.691289966923925,73,0,1.4,-1.44,14 +"623",300,1,0.185226019845645,0.858875413450937,77,1,127,-2.21,7 +"624",300,1,0.609702315325248,0.00992282249173098,60,1,24.6,-2.06,21 +"625",302,1,0.0176405733186329,0.545755237045204,77,1,43.1,-1.57,2 +"626",303,1,0.528114663726571,0.114663726571114,70,0,4.4,-0.29,23 +"627",303,1,0.357221609702315,0.205071664829107,53,1,0.7,2.71,24 +"628",310,1,0.170893054024256,1,68,0,27.6,-3.55,7 +"629",311,1,0.0176405733186329,0.608599779492834,72,1,0,-2.27,2 +"630",312,1,0.64167585446527,0.113561190738699,23,0,172,5.67,17 +"631",313,1,0.0485115766262404,0.466372657111356,69,1,0,-1.6,5 +"632",313,0,0.633958103638368,0.101433296582139,45,1,8.3,-0.41,17 +"633",314,1,0.573318632855568,0.173098125689085,52,1,3.1,2.85,20 +"634",317,1,0.414553472987872,0.175303197353914,29,0,0,6.17,24 +"635",317,1,0.540242557883131,0.524807056229327,83,1,2.2,7.91,3 +"636",318,1,0.533627342888644,0.0374862183020948,41,0,45.3,-5.04,23 +"637",318,1,0.315325248070562,0.468577728776185,63,0,59.2,-5.35,12 +"638",320,1,0.564498346196251,0.206174200661522,65,0,232,-0.75,16 +"639",324,1,0.0606394707828004,0.463065049614112,74,1,1.9,-2.75,5 +"640",324,1,0.0143329658213892,0.522601984564498,60,1,241,5.29,2 +"641",325,1,0.607497243660419,0.0132304299889746,59,0,17.4,-2.57,21 +"642",325,1,0.306504961411246,0.920617420066152,70,1,1.8,-4.24,7 +"643",326,1,0.205071664829107,0.228224917309813,41,0,39,4.65,13 +"644",328,1,0.427783902976847,0.168687982359427,17,0,70.6,-1.04,24 +"645",328,1,0.0110253583241455,0.648291069459757,64,0,217,-3.33,14 +"646",330,1,0.539140022050717,0.369349503858875,60,1,22.9,-3.21,11 +"647",331,1,0.428909412641966,0.48965411682468,34,0,0,3.52,1 +"648",333,0,0.671444321940463,0.216097023153252,31,0,5.3,6.15,18 +"649",335,1,0.455347298787211,0.30981256890849,78,0,1.9,-2.86,15 +"650",337,1,0.0253583241455347,0.545755237045204,83,0,35.2,0.01,2 +"651",337,1,0.421168687982359,0.257993384785005,65,1,16.5,-5.07,15 +"652",338,1,0.019845644983462,0.492833517089305,81,0,9.7,-3.77,5 +"653",338,0,0.65380374862183,0.331863285556781,51,1,1.4,4.67,19 +"654",339,1,0.191841234840132,0.91289966923925,57,1,101,-4.47,7 +"655",339,1,0.306504961411246,0.545755237045204,59,1,0,-3.58,9 +"656",340,1,0.715545755237045,0.0970231532524807,61,0,15.8,3.71,22 +"657",340,1,0.637265711135612,0.0496141124586549,72,0,18.9,-0.95,21 +"658",340,1,0.00220507166482911,0.574421168687982,64,1,1.5,2.82,2 +"659",341,1,0.0253583241455347,0.637265711135612,87,1,27.1,-2.93,14 +"660",342,1,0.535832414553473,0.168687982359427,23,1,118,-1.67,20 +"661",345,1,0.0209481808158765,0.646085997794928,70,1,14.2,1.54,14 +"662",345,1,0.615214994487321,0.586549062844542,81,0,2.8,5.9,8 +"663",345,1,0.524807056229327,0.319735391400221,62,0,21.1,-4.85,16 +"664",345,0,0.131201764057332,0.865490628445424,32,1,2.8,8.19,7 +"665",347,1,0.459757442116869,0.109151047409041,82,0,0.9,-2.15,20 +"666",352,1,0.0385887541345094,0.487320837927233,78,1,9.8,-1.06,5 +"667",353,1,0.0154355016538037,0.536934950385888,60,1,61.7,2.42,2 +"668",353,1,0.507166482910695,0.0264608599779493,71,0,1.2,-1.3,23 +"669",356,1,0.620727673649394,0.142227122381477,62,1,2.2,7.4,17 +"670",357,1,0.624035281146637,0.0661521499448732,48,1,2,-2.81,21 +"671",359,1,0.432194046306505,0.27122381477398,17,1,9.8,-0.53,15 +"672",360,1,0.576626240352812,0.0948180815876516,19,1,90,-0.57,17 +"673",360,1,0.627342888643881,0.116868798235943,55,1,0,6.7,17 +"674",361,1,0.00661521499448732,0.560088202866593,40,0,15.1,7.21,2 +"675",361,1,0.0606394707828004,0.4696802646086,47,0,4.8,-4.68,5 +"676",362,1,0.402425578831312,0.447629547960309,24,0,8.8,3.58,1 +"677",363,1,0.522601984564498,0.276736493936053,74,0,22.8,-4,16 +"678",364,1,0.652701212789416,0.201764057331863,34,0,11.2,2.28,18 +"679",365,1,0.538037486218302,0.529217199558986,57,0,0,2.51,3 +"680",367,1,0.746416758544653,0.102535832414553,29,1,87,5.5,22 +"681",368,1,0.572216097023153,0.0804851157662624,26,1,103,6.18,17 +"682",368,0,0.639470782800441,0.609702315325248,39,0,0,0.76,8 +"683",370,1,0.124586549062845,0.857772877618523,85,0,22.5,0.9,7 +"684",371,1,0.552370452039691,0.261300992282249,17,1,12.1,1.24,16 +"685",372,1,0.355016538037486,0.185226019845645,61,0,3.4,5.1,24 +"686",374,1,0.511576626240353,0.0584343991179713,67,0,175,-3.82,23 +"687",374,1,0.618522601984565,0.226019845644983,68,0,29.7,-0.18,19 +"688",375,1,0.257993384785005,0.484013230429989,21,1,4,6.24,9 +"689",376,1,0.312017640573319,0.15986769570011,58,1,3,-0.66,24 +"690",377,1,0.561190738699008,0.284454244762955,63,1,13.8,0.85,16 +"691",377,0,0.528114663726571,0.110253583241455,75,1,26,3.23,23 +"692",383,1,0.345093715545755,0.143329658213892,56,0,8,-1.99,24 +"693",383,1,0.28335170893054,0.19845644983462,33,1,9.8,-1.89,24 +"694",385,1,0.0959206174200661,0.710033076074972,89,1,1.8,-4.6,14 +"695",385,1,0.438809261300992,0.478500551267916,46,1,16.5,6.51,1 +"696",387,1,0.639470782800441,0.0121278941565601,50,0,5.4,-3.91,21 +"697",387,1,0.528114663726571,0.302094818081588,45,1,5.8,-2.94,16 +"698",389,1,0.192910600701202,0.831301960374084,44,1,41,-2.65,7 +"699",389,1,0.549062844542448,0.110253583241455,65,1,1.5,0.18,23 +"700",390,0,0.244762954796031,0.40683572216097,73,1,1.4,-0.4,12 +"701",393,1,0.275633958103638,0.508269018743109,34,0,2.8,-3.22,9 +"702",397,0,0.281146637265711,0.49393605292172,67,1,2.6,6.95,9 +"703",401,1,0.660416730337595,0.231466321296513,78,0,2.7,2.9,18 +"704",401,1,0.37045203969129,0.507166482910695,53,1,8.7,-4.69,10 +"705",401,1,0.590959206174201,0.285556780595369,49,1,15.7,-1.75,19 +"706",402,1,0.00330760749724366,0.527012127894157,53,1,21.7,3.29,2 +"707",404,1,0.254685777287762,0.92502756339581,58,1,20,-2.78,7 +"708",405,1,0.603087100330761,0.240352811466373,61,0,6.4,7.47,19 +"709",406,1,0.0209481808158765,0.689084895259096,17,1,2.4,-1.14,14 +"710",406,1,0.717750826901874,0.0639470782800441,87,0,9.2,-1.35,21 +"711",406,1,0.649393605292172,0.0705622932745314,47,1,2,-1.34,21 +"712",406,1,0.65380374862183,0.0749724366041896,55,1,4.1,-1.72,21 +"713",406,1,0.574421168687982,0.531422271223815,71,1,1.5,-2.21,3 +"714",407,1,0.24696802646086,0.517089305402426,39,0,200,-3.35,9 +"715",408,1,0.0285626079970516,0.472105758636014,63,0,0,-4.95,5 +"716",409,1,0.621830209481808,0.0584343991179713,29,1,140,-3.1,21 +"717",413,1,0.674751929437707,0.203969128996692,67,0,44.6,-2.09,18 +"718",414,1,0.427783902976847,0.175303197353914,19,0,3.7,2.69,24 +"719",414,1,0.686879823594267,0.248070562293275,51,1,1.5,-3.53,18 +"720",416,1,0.597574421168688,0.541345093715546,57,0,48,1.46,3 +"721",416,1,0.00882028665931643,0.631753031973539,71,0,3.6,-3.04,2 +"722",417,1,0.56670341786108,0.5303197353914,67,0,0,0.1,3 +"723",424,1,0.646085997794928,0.0319735391400221,45,0,3.4,6.73,21 +"724",427,1,0.453142227122382,0.317530319735391,38,1,0,-4.44,15 +"725",428,1,0.662624035281147,0.679162072767365,29,0,7.2,-0.56,8 +"726",429,1,0.421168687982359,0.266813671444322,19,1,13.3,-3.47,15 +"727",430,1,0.479603087100331,0.115766262403528,72,1,1.7,-3.83,23 +"728",430,1,0.329658213891951,0.199558985667034,59,1,1,0.78,24 +"729",437,0,0.717750826901874,0.22271223814774,31,0,12.6,-1.57,18 +"730",440,1,0.614112458654906,0.103638368246968,78,1,4.1,2.56,17 +"731",440,1,0.428886438809261,0.412348401323043,31,1,1.9,0.31,1 +"732",444,1,0.461962513781698,0.228224917309813,65,0,94,2.49,15 +"733",446,1,0.528114663726571,0.341786108048512,63,0,6.5,2.96,16 +"734",447,1,0.142227122381477,0.804851157662624,74,0,21.1,-2.66,7 +"735",447,1,0.405733186328556,0.476295479603087,44,1,0,5.96,1 +"736",448,1,0.202866593164278,0.454244762954796,49,1,1.4,-4.11,12 +"737",449,1,0.0374862183020948,0.635060639470783,79,0,0.8,2.43,14 +"738",450,1,0.425578831312018,0.273428886438809,76,0,6.7,-3.71,15 +"739",451,1,0.624035281146637,0.22271223814774,52,1,8.1,-2.8,19 +"740",453,1,0.661521499448732,0.0297684674751929,65,1,3.6,-2.21,21 +"741",459,1,0.621830209481808,0.117971334068357,50,1,205,6.31,17 +"742",461,1,0.735391400220507,0.143329658213892,73,0,1.4,-3.93,22 +"743",462,0,0.536934950385888,0.255788313120176,40,1,1.5,-2.16,16 +"744",463,1,0.0165380374862183,0.625137816979052,71,0,1.1,0.3,2 +"745",463,1,0.592100086961462,0.289869478892879,49,0,94.4,-3.27,19 +"746",464,1,0.413450937155458,0.162072767364939,78,0,1.5,3.68,24 +"747",466,1,0.597574421168688,0.108048511576626,58,0,4,3.42,17 +"748",467,1,0.615214994487321,0.302094818081588,33,1,31.3,-5.25,19 +"749",468,1,0.600882028665932,0.567805953693495,43,0,67.5,1.61,8 +"750",469,1,0.597574421168688,0.0573318632855568,54,0,178,-0.33,17 +"751",469,1,0.675854465270121,0.103638368246968,37,1,5.7,-3.24,22 +"752",469,1,0.539140022050717,0.539140022050717,66,1,1.8,1.71,3 +"753",471,1,0.625137816979052,0.125689084895259,30,0,109,6.35,17 +"754",471,1,0.622932745314223,0.414553472987872,54,1,36,4.67,11 +"755",475,1,0.399117971334068,0.482910694597574,46,0,140,-4.1,1 +"756",476,1,0.683572216097023,0.203969128996692,67,0,0.9,0.93,18 +"757",477,1,0.468577728776185,0.467475192943771,39,0,1.9,-1.23,6 +"758",477,1,0.651598676957001,0.167585446527012,66,0,3.5,-2.27,18 +"759",479,1,0.675854465270121,0.213891951488423,31,1,64.6,8.4,18 +"760",479,1,0.710033076074972,0.175303197353914,71,1,1.3,-3.5,22 +"761",481,1,0.574421168687982,0.179713340683572,68,0,240,6.23,20 +"762",484,0,0.108048511576626,0.685777287761852,69,1,4.8,-3.68,14 +"763",485,0,0.610804851157663,0.313120176405733,51,1,111.1,-4.91,19 +"764",488,0,0.134509371554576,0.514884233737597,81,1,0,0.78,5 +"765",489,1,0.565600882028666,0.0275633958103638,72,1,2.9,7.66,17 +"766",492,1,0.28335170893054,0.280044101433297,50,1,64,3.19,24 +"767",493,1,0.512679162072767,0.528114663726571,52,0,76.1,-4.92,6 +"768",497,1,0.00441014332965821,0.578831312017641,78,0,2.2,1.23,2 +"769",499,1,0.589856670341786,0.0253583241455347,53,0,3.3,5.15,21 +"770",499,1,0.401323042998897,0.446527012127894,64,1,74,0.99,1 +"771",503,0,0.332965821389195,0.904079382579934,48,1,0.8,-2.59,7 +"772",505,0,0.525909592061742,0.113561190738699,75,1,60,-2.67,23 +"773",511,1,0.550165380374862,0.144432194046307,80,0,0.7,-3.31,20 +"774",512,1,0.652701212789416,0.0749724366041896,60,0,3.37,-2.21,21 +"775",516,1,0.0672546857772878,0.477398015435502,79,0,0,-4.57,5 +"776",517,1,0.0341786108048512,0.695700110253583,73,0,1.2,-0.28,14 +"777",518,1,0.202866593164278,0.82800441014333,59,1,4.4,-4.52,7 +"778",522,1,0.72877618522602,0.214994487320838,55,0,157,-2.96,18 +"779",523,1,0.539140022050717,0.296582138919515,64,1,3.5,-1.87,16 +"780",527,1,0.0220507166482911,0.541345093715546,72,0,3.7,-1.54,2 +"781",535,1,0.160970231532525,0.865490628445424,64,1,0,-2.42,7 +"782",536,1,0.411245865490628,0.456449834619625,50,1,2.3,-0.24,1 +"783",536,1,0.0121787165682792,0.495104885159619,52,1,41.3,-3.3,5 +"784",537,1,0.515986769570011,0.0429988974641676,34,0,74.6,-1.15,23 +"785",540,1,0.28651563416606,0.19832184722918,43,1,69,-2.41,24 +"786",543,1,0.0143329658213892,0.519294377067255,71,1,9.1,-3.16,2 +"787",551,1,0.586549062844542,0.510474090407938,35,0,19.8,-1.58,3 +"788",555,1,0.0297684674751929,0.579933847850055,76,1,4.2,8.19,2 +"789",556,1,0.00551267916207277,0.553472987872106,75,1,9.5,4.62,2 +"790",560,1,0.67805953693495,0.136714443219405,34,0,158,-3.35,22 +"791",562,1,0.0452039691289967,0.539140022050717,58,0,4.9,5.02,2 +"792",563,1,0.467475192943771,0.565600882028666,62,1,10.4,-3.02,10 +"793",563,1,0.425578831312018,0.487320837927233,63,0,4.9,2.77,1 +"794",564,1,0.611907386990077,0.0143329658213892,59,1,0.5,-0.14,21 +"795",565,0,0.608599779492834,0.126791620727674,28,0,0.7,6.08,17 +"796",568,0,0.508337270826452,0.114590801471124,71,1,6.2,-1.82,23 +"797",572,1,0.00882028665931643,0.587651598676957,68,1,2.7,-3.98,2 +"798",572,1,0.647188533627343,0.228224917309813,46,1,19,-4.01,18 +"799",572,1,0.621830209481808,0.216097023153252,44,0,85.7,-3,19 +"800",574,1,0.644983461962514,0.200661521499449,69,0,104.2,-1.5,18 +"801",577,1,0.0253583241455347,0.683572216097023,67,0,5.3,3.26,14 +"802",582,1,0.126791620727674,0.845644983461962,22,1,0,4.93,7 +"803",584,1,0.019845644983462,0.479603087100331,67,1,23.4,2.35,5 +"804",587,1,0.669239250275634,0.0496141124586549,39,0,2.94,-3,21 +"805",589,0,0.0441014332965821,0.630650496141125,23,1,5.1,-1.68,14 +"806",594,1,0.514884233737597,0.458654906284454,21,0,2.7,-4.1,6 +"807",595,1,0.592061742006615,0.541345093715546,33,0,227,3.62,3 +"808",599,1,0.461962513781698,0.213891951488423,68,1,1.3,7.38,20 +"809",602,0,0.324145534729879,0.188533627342889,43,0,28.6,-2.08,24 +"810",611,1,0.461962513781698,0.17199558985667,29,1,206,-0.31,20 +"811",611,1,0.5303197353914,0.168687982359427,26,1,16.7,-2.18,20 +"812",612,1,0.0782800441014333,0.658213891951488,54,0,330,-2.62,14 +"813",614,0,0.570011025358324,0.127894156560088,54,1,115.6,8.21,23 +"814",625,1,0.535832414553473,0.300992282249173,65,1,2.3,5.51,16 +"815",627,1,0.577728776185226,0.532524807056229,45,0,1.8,3.03,3 +"816",628,1,0.544652701212789,0.527012127894157,35,0,9.3,-3.41,3 +"817",630,0,0.235942668136714,0.403528114663727,65,0,0.9,-3.19,12 +"818",631,1,0.200661521499449,0.223814773980154,44,0,21.8,-2.32,13 +"819",635,1,0.384785005512679,0.216097023153252,68,0,0,-3.29,15 +"820",639,1,0.624035281146637,0.0231532524807056,57,1,24,-1.95,21 +"821",641,1,0.702315325248071,0.117971334068357,58,1,8.9,3.24,22 +"822",641,1,0.560088202866593,0.28335170893054,45,1,1.2,0.85,16 +"823",647,0,0.421168687982359,0.402425578831312,27,1,1.6,-3.12,1 +"824",653,1,0.00330760749724366,0.521499448732084,79,1,38.3,-1.73,2 +"825",655,1,0.588754134509372,0.183020948180816,50,1,41.2,5.44,17 +"826",655,1,0.648291069459757,0.0396912899669239,22,0,89.1,2.38,21 +"827",659,1,0.4696802646086,0.340683572216097,48,1,2.7,-2.96,1 +"828",662,0,0.555678059536935,0.208379272326351,44,0,3.2,-0.15,16 +"829",663,1,0.260198456449835,0.405733186328556,61,1,0,-0.91,12 +"830",669,1,0.0562293274531422,0.699007717750827,65,0,2.1,-2.17,14 +"831",672,1,0.0286659316427784,0.475192943770673,70,0,11.2,-3.84,5 +"832",683,1,0.0154355016538037,0.682469680264609,63,1,1.2,0.24,14 +"833",683,1,0.274531422271224,0.289966923925028,41,0,12.2,0.23,24 +"834",684,1,0.00220507166482911,0.573318632855568,23,1,9,2.82,2 +"835",685,1,0.48180815876516,0.618522601984565,40,1,1.8,0.07,10 +"836",689,1,0.447629547960309,0.284454244762955,47,1,14.8,5.79,15 +"837",690,0,0.564498346196251,0.117971334068357,43,1,2.9,2.49,23 +"838",692,0,0.464167585446527,0.209481808158765,38,0,8.9,7.53,20 +"839",697,1,0.0220507166482911,0.523704520396913,71,0,3.6,-1.38,2 +"840",704,1,0.699007717750827,0.0264608599779493,72,0,21.1,-5.16,21 +"841",704,1,0.348401323042999,0.134509371554576,74,0,234,-3.73,24 +"842",707,0,0.595369349503859,0.513781697905182,59,0,2.2,5.44,3 +"843",714,1,0.340683572216097,0.263506063947078,35,1,96.9,-3.32,24 +"844",714,1,0.189636163175303,0.898566703417861,17,1,6.3,-3.74,7 +"845",716,1,0.54244762954796,0.670341786108049,46,1,0,-4.8,10 +"846",717,1,0.585446527012128,0.126791620727674,66,1,1.2,7.77,17 +"847",726,1,0.264608599779493,0.217199558985667,55,1,8.1,0.43,24 +"848",727,1,0.595369349503859,0.281146637265711,38,0,27.2,3.16,19 +"849",735,1,0.654906284454245,0.199558985667034,79,1,91.5,-2.4,18 +"850",736,1,0.563395810363837,0.226019845644983,56,1,45.2,-3.14,16 +"851",738,0,0.235942668136714,0.501653803748622,53,1,1.2,0.77,9 +"852",741,1,0.0110253583241455,0.546857772877618,71,1,0,1.73,2 +"853",751,1,0.270121278941566,0.427783902976847,67,0,0,-2.64,12 +"854",753,1,0.304299889746417,0.237045203969129,65,1,8.4,-2.43,24 +"855",767,1,0.508269018743109,0.177508269018743,45,1,4.7,-1.57,20 +"856",768,1,0.257993384785005,0.410143329658214,50,0,7.2,-1.3,12 +"857",768,1,0.599779492833517,0.56890848952591,23,0,0,-0.12,8 +"858",770,1,0.586549062844542,0.101433296582139,48,0,3.7,6.51,17 +"859",775,0,0.635060639470783,0.318632855567806,57,1,4.8,-1.67,19 +"860",778,1,0.648291069459757,0.288864388092613,65,0,1.5,5.53,19 +"861",780,1,0.724366041896362,0.0297684674751929,21,1,4.2,-1.66,21 +"862",790,0,0.633958103638368,0.0429988974641676,44,0,0.49,-3.19,21 +"863",794,1,0.0485115766262404,0.60529217199559,46,0,82.3,-3.76,14 +"864",803,1,0.241455347298787,0.348401323042999,65,0,27.4,-3.37,4 +"865",823,1,0.632855567805954,0.185226019845645,69,0,2,0.61,17 +"866",831,1,0.402425578831312,0.160970231532525,71,1,1,-2.21,24 +"867",838,1,0.173114546471091,0.860187796532558,14,1,70,-2.93,7 +"868",844,0,0.624035281146637,0.217199558985667,64,0,1.7,-0.61,19 +"869",855,1,0.242557883131202,0.552370452039691,43,0,2.1,-2.48,9 +"870",856,1,0.745314222712238,0.0771775082690187,58,1,4.3,-3.7,21 +"871",856,0,0.586531672088201,0.510635485693389,52,0,10.9,-1.58,3 +"872",857,1,0.486284522866832,0.165358593449284,62,0,5.7,-2.91,20 +"873",871,1,0.238147739801544,0.498346196251378,42,1,37,0.33,9 +"874",883,1,0.668136714443219,0.273428886438809,61,0,20.8,-3.23,19 +"875",890,0,0.490628445424476,0.196251378169791,34,1,0.8,-2.1,20 +"876",892,1,0.610804851157663,0.550165380374862,51,1,11.6,-3.84,3 +"877",892,1,0.745314222712238,0.0981256890848953,37,1,3.3,3.57,22 +"878",899,1,0.0110253583241455,0.536934950385888,43,0,1.5,1.43,2 +"879",902,0,0.231532524807056,0.407938257993385,34,1,34.7,0.13,12 +"880",904,0,0.244762954796031,0.410143329658214,28,0,2.45,-2.81,12 +"881",912,0,0.657111356119074,0.608599779492834,49,1,0.9,-1.61,8 +"882",919,0,0.299889746416759,0.4696802646086,26,0,1.3,-2.57,12 +"883",923,1,0.693495038588754,0.273428886438809,41,0,1,0.24,18 +"884",934,1,0.562293274531422,0.417861080485116,33,0,113,2.02,11 +"885",938,0,0.00882028665931643,0.497243660418964,62,1,0,-1.88,5 +"886",943,0,0.272326350606395,0.424476295479603,47,0,7,-2.56,12 +"887",953,1,0.60529217199559,0.405733186328556,68,1,1.8,1.44,11 +"888",959,0,0.217199558985667,0.500551267916207,68,1,155,2.07,9 +"889",971,0,0.618522601984565,0.302094818081588,59,1,1.3,-3.59,19 +"890",988,0,0.241455347298787,0.507166482910695,87,0,0,3.54,9 +"891",994,1,0.294377067254686,0.208379272326351,70,0,0.9,4.95,24 +"892",1012,0,0.662624035281147,0.299889746416759,22,0,2.3,1.12,19 +"893",1014,1,0.229327453142227,0.519294377067255,48,0,7.9,5.35,9 +"894",1021,0,0.539140022050717,0.0782800441014333,23,1,3.3,-2.64,23 +"895",1031,1,0.019845644983462,0.491730981256891,68,1,10.6,-3.77,5 +"896",1036,1,0.304299889746417,0.338478500551268,58,0,26.8,-5.1,4 +"897",1043,0,0.388092613009923,0.479603087100331,18,1,1.4,-5.66,1 +"898",1051,1,0.176405733186329,0.577728776185226,49,0,0,-3.23,14 +"899",1053,1,0.650496141124587,0.233737596471885,46,0,1,-2.99,18 +"900",1060,1,0.65380374862183,0.0760749724366042,69,1,1.6,-1.72,21 +"901",1070,1,0.669239250275634,0.233737596471885,49,0,32,-1.8,18 +"902",1092,1,0.380374862183021,0.18412348401323,63,1,144,0.85,24 +"903",1115,1,0.33406835722161,0.315325248070562,19,1,3.9,-4.24,4 +"904",1121,1,0.651598676957001,0.0330760749724366,61,1,2,-3.26,21 +"905",1126,1,0.528004135597142,0.30207504668583,46,1,16.7,-2.94,16 +"906",1137,1,0.61742006615215,0.243660418963616,57,1,1.5,4.14,19 +"907",1151,1,0.157662624035281,0.866593164277839,56,1,11.6,3.04,7 +"908",1174,1,0.487320837927233,0.276736493936053,65,0,1.3,-0.71,15 +"909",1183,1,0.66593164277839,0.308710033076075,70,1,0,-0.72,19 +"910",1213,0,0.632855567805954,0.41896361631753,56,0,3.4,-2.96,11 +"911",1238,0,0.00992282249173098,0.611907386990077,59,1,2.5,-3.51,2 +"912",1242,0,0.231532524807056,0.472987872105843,74,1,36.1,-5.11,12 +"913",1249,1,0.65380374862183,0.289966923925028,37,1,50.4,8.26,19 +"914",1249,1,0.685777287761852,0.200661521499449,56,0,1.8,3.07,18 +"915",1250,1,0.652701212789416,0.168687982359427,15,0,1.8,-2.32,18 +"916",1250,1,0.292171995589857,0.504961411245865,36,1,91.7,5.85,9 +"917",1257,1,0.0242557883131202,0.499448732083793,70,1,19.5,-1.24,5 +"918",1264,1,0.579933847850055,0.50606394707828,24,1,0,-4.09,3 +"919",1266,0,0.539293946759862,0.0781584711581548,23,1,1.5,-2.64,23 +"920",1266,0,0.124586549062845,0.517089305402426,64,0,0,-3.36,5 +"921",1295,0,0.601984564498346,0.575523704520397,33,0,16.9,2.88,8 +"922",1301,0,0.584343991179713,0.117971334068357,28,1,1.9,8.76,17 +"923",1318,0,0.683572216097023,0.134509371554576,33,0,4.9,5.49,22 +"924",1325,0,0.294377067254686,0.371554575523705,39,0,17.8,5.41,4 +"925",1359,0,0.0441014332965821,0.592061742006615,83,1,0,-3.91,14 +"926",1371,0,0.264608599779493,0.441014332965821,24,0,0,-0.88,12 +"927",1384,1,0.305402425578831,0.2348401323043,38,0,5.2,-0.8,24 +"928",1456,1,0.0165380374862183,0.553472987872106,77,1,3.8,-2.49,2 +"929",1458,0,0.128996692392503,0.256890848952591,52,0,7.2,-1.69,13 +"930",1481,0,0.517089305402426,0.0176405733186329,48,1,11.6,-3.05,23 +"931",1485,1,0.689084895259096,0.0628445424476295,60,0,2.1,3.7,21 +"932",1493,0,0.627342888643881,0.420066152149945,25,0,11.9,3.93,11 +"933",1494,1,0.693495038588754,0.169790518191841,66,0,31.4,0.48,22 +"934",1544,1,0.578831312017641,0.189636163175303,72,1,0,0.8,20 +"935",1560,0,0.590959206174201,0.452039691289967,33,0,2.4,-1.32,11 +"936",1568,1,0.660418963616318,0.14773980154355,46,1,3,0.41,22 +"937",1571,1,0.633958103638368,0.0639470782800441,34,1,1.1,-1.26,21 +"938",1579,1,0.0154355016538037,0.600882028665932,71,1,115,4.68,2 +"939",1581,0,0.302094818081588,0.15986769570011,53,0,0.5,-3.72,24 +"940",1660,0,0.616317530319735,0.316427783902977,49,0,33.3,-4.25,19 +"941",1669,0,0.291069459757442,0.510474090407938,26,1,0,5.89,9 +"942",1694,0,0.503858875413451,0.471885336273429,29,1,16.4,3.57,6 +"943",1694,0,0.699007717750827,0.0661521499448732,31,0,0.7,4,21 +"944",1711,0,0.274531422271224,0.374862183020948,67,1,38,-1.86,4 +"945",1713,0,0.0172859509061522,0.60833494648363,62,1,92,-2.27,2 +"946",1731,0,0.508284940144863,0.11472157856712,19,1,10.1,-1.82,23 +"947",1737,1,0.541345093715546,0.54244762954796,59,0,9.3,2.89,3 +"948",1741,0,0.405733186328556,0.49393605292172,55,0,12.8,-5.65,1 +"949",1750,1,0.642778390297685,0.281146637265711,79,1,17.5,3.65,19 +"950",1762,1,0.515986769570011,0.244762954796031,41,0,2.6,-3.97,16 +"951",1799,0,0.191841234840132,0.239250275633958,22,1,15.1,-0.72,13 +"952",1800,1,0.117971334068357,0.842337375964719,85,0,1.7,-1.9,7 +"953",1811,1,0.424476295479603,0.528114663726571,59,1,42,-3.47,10 +"954",1831,0,0.532524807056229,0.24696802646086,49,0,132.7,2.41,16 +"955",1867,1,0.17199558985667,0.61742006615215,52,0,1.6,-3.24,14 +"956",1903,0,0.103638368246968,0.512679162072767,70,0,90.1,-6.09,5 +"957",1908,0,0.0176405733186329,0.535832414553473,66,1,100,-1.99,2 +"958",1943,0,0.55678059536935,0.188533627342889,43,0,6.2,2.72,16 +"959",1951,0,0.0121278941565601,0.67805953693495,64,1,1.6,5.63,14 +"960",1961,0,0.106945975744212,0.244762954796031,53,1,32.2,-4.52,13 +"961",1965,1,0.50606394707828,0.24696802646086,36,1,55.3,-3.18,16 +"962",1967,1,0.528114663726571,0.411245865490628,41,0,0.9,-1.27,11 +"963",2010,1,0.402425578831312,0.533627342888644,53,1,0,-3.48,10 +"964",2011,0,0.54244762954796,0.372657111356119,51,0,6.5,-0.54,11 +"965",2016,0,0.00220507166482911,0.576626240352812,24,0,42.7,6.12,2 +"966",2025,0,0.170893054024256,0.237045203969129,20,0,1.6,-1.03,13 +"967",2041,0,0.413450937155458,0.470782800441014,68,1,15.7,8.92,1 +"968",2046,0,0.56890848952591,0.19845644983462,77,1,15.5,-2.96,16 +"969",2067,1,0.455347298787211,0.291069459757442,55,1,125,-2.06,15 +"970",2077,0,0.565600882028666,0.0837927232635061,67,1,87.5,4.01,17 +"971",2092,1,0.652701212789416,0.0154355016538037,60,0,21.6,-5.11,21 +"972",2129,0,0.497243660418964,0.157662624035281,46,0,5.1,1.62,20 +"973",2147,1,0.558985667034179,0.413450937155458,68,1,1.3,2.74,11 +"974",2196,0,0.300992282249173,0.411245865490628,28,1,0.6,-2.08,4 +"975",2226,1,0.519294377067255,0.154355016538037,82,1,1.4,0.15,20 +"976",2241,0,0.2348401323043,0.757442116868798,73,1,28.8,-4.73,7 +"977",2257,1,0.272149397521132,0.287704030216618,62,0,52.3,-3.23,24 +"978",2299,1,0.238147739801544,0.552370452039691,91,0,49.3,-2.48,9 +"979",2368,0,0.64167585446527,0.374862183020948,68,0,2.5,0.6,11 +"980",2384,0,0.0485115766262404,0.585446527012128,84,0,0,-3.71,14 +"981",2394,0,0.235942668136714,0.470782800441014,30,1,2.7,-4.55,12 +"982",2419,0,0.463065049614112,0.245865490628445,51,0,0,6.3,15 +"983",2420,0,0.275633958103638,0.200661521499449,58,1,1.1,-4.57,24 +"984",2441,1,0.543550165380375,0.527012127894157,49,0,13.2,-3.78,3 +"985",2458,1,0.545755237045204,0.144432194046307,58,0,7.1,3.88,20 +"986",2483,0,0.281146637265711,0.213891951488423,51,0,0.6,-2.56,24 +"987",2517,0,0.61742006615215,0.141124586549063,40,0,26.7,6,17 +"988",2520,1,0.284454244762955,0.474090407938258,62,0,8.5,-4.98,12 +"989",2520,0,0.332965821389195,0.58103638368247,43,1,0,-4.08,10 +"990",2524,0,0.0121278941565601,0.647188533627343,87,1,0,-0.37,14 +"991",2614,1,0.713340683572216,0.136714443219405,67,0,31,-2.34,22 +"992",2620,0,0.229327453142227,0.589856670341786,75,0,0,-4.02,9 +"993",2654,0,0.737596471885336,0.0374862183020948,21,0,0.9,-4.4,21 +"994",2702,0,0.399117971334068,0.229327453142227,43,0,47.8,-3.13,15 +"995",2722,0,0.67805953693495,0.0231532524807056,41,1,38,-1.49,21 +"996",2729,0,0.61742006615215,0.128996692392503,22,0,5,7.55,17 +"997",2732,1,0.0485906538678944,0.585454389926647,69,1,0.7,-3.71,14 +"998",2756,0,0.55678059536935,0.196251378169791,42,1,11.8,-5.39,16 +"999",2772,0,0.424476295479603,0.447629547960309,59,1,8.3,6.79,1 +"1000",2815,0,0.458654906284454,0.101433296582139,43,0,30.6,-3.56,20 +"1001",2883,0,0.257993384785005,0.252480705622933,52,0,36.3,-2.76,24 +"1002",2919,0,0.423373759647189,0.226019845644983,46,1,4.5,-3.7,15 +"1003",2930,0,0.200661521499449,0.66593164277839,65,0,0,-3.2,14 +"1004",3025,0,0.587651598676957,0.14773980154355,42,0,2.2,2.56,17 +"1005",3034,0,0.0628445424476295,0.683572216097023,29,1,5.5,-0.65,14 +"1006",3043,0,0.611907386990077,0.199558985667034,25,1,104,6.32,17 +"1007",3065,0,0.674751929437707,0.00992282249173098,29,0,16.8,-4.27,21 +"1008",3158,0,0.572216097023153,0.187431091510474,30,0,0.5,-0.94,20 +"1009",3208,0,0.155471076839797,0.502939745311803,30,0,0.6,-3.5,5 +"1010",3262,0,0.594266813671444,0.0915104740904079,31,0,18.7,6.12,17 +"1011",3406,0,0.0230768581153368,0.474188572928857,22,1,7.6,0.97,5 +"1012",3407,1,0.0176405733186329,0.611907386990077,76,0,110,-2.27,2 +"1013",3470,0,0.683572216097023,0.221609702315325,79,1,83.5,5.05,18 +"1014",3480,0,0.424476295479603,0.401323042998897,20,0,19,-3.12,1 +"1015",3517,0,0.497243660418964,0.153252480705623,53,0,22.9,0.67,20 +"1016",3617,0,0.67805953693495,0.0264608599779493,17,0,2.1,-0.15,21 +"1017",3645,0,0.58103638368247,0.176405733186329,38,0,5,2.48,20 +"1018",3675,0,0.650496141124587,0.176405733186329,20,1,9.8,2.77,18 +"1019",3733,0,0.248070562293275,0.529217199558986,34,0,12.6,-5.98,9 +"1020",3766,0,0.00220507166482911,0.58103638368247,53,0,4,4.95,2 +"1021",3821,1,0.127894156560088,0.861080485115766,58,1,82.9,-0.26,7 +"1022",3918,0,0.596471885336273,0.102535832414553,39,0,3.5,4.35,17 +"1023",3941,0,0.667034178610805,0.338478500551268,19,1,2.8,0.18,19 +"1024",3953,0,0.250275633958104,0.509371554575524,56,0,22.9,1.41,9 +"1025",4017,0,0.607497243660419,0.0771775082690187,35,0,1.5,6.39,17 +"1026",4123,0,0.229327453142227,0.882028665931643,18,0,220,-1.22,7 +"1027",4133,0,0.562293274531422,0.141124586549063,46,0,28.9,8.6,20 +"1028",4211,0,0.282249173098126,0.212789415656009,21,0,4.7,-2.56,24 +"1029",4296,0,0.539140022050717,0.071664829106946,68,0,1.1,-0.45,23 +"1030",4328,0,0.694597574421169,0.266813671444322,39,1,159,0.1,18 +"1031",4337,0,0.278941565600882,0.216097023153252,18,0,7.9,-0.3,24 +"1032",4394,0,0.574421168687982,0.0363836824696803,34,1,1.9,6.94,17 +"1033",4448,0,0.558985667034179,0.296582138919515,54,0,15.5,-1.83,16 +"1034",4491,0,0.773980154355017,0.12348401323043,19,0,27,-2.38,22 +"1035",4596,0,0.435501653803749,0.24696802646086,23,1,54.7,3.7,15 +"1036",4650,0,0.00110253583241455,0.550165380374862,78,1,60,4.2,2 +"1037",4686,1,0.549062844542448,0.256890848952591,65,1,55.1,-1.06,16 +"1038",4743,0,0.276736493936053,0.455347298787211,22,1,124,-1.54,12 +"1039",4769,0,0.388092613009923,0.170893054024256,41,1,82.5,1.12,24 +"1040",4795,0,0.531422271223815,0.352811466372657,48,0,16.2,-3.22,16 +"1041",4922,0,0.294377067254686,0.507166482910695,78,0,115,8.06,9 +"1042",4965,1,0.0452039691289967,0.541345093715546,63,1,12.6,1.13,2 +"1043",4977,0,0.561190738699008,0.173098125689085,21,1,13.5,1.63,20 diff --git a/docs/src/assets/citations.css b/docs/src/assets/citations.css new file mode 100644 index 0000000..89edb15 --- /dev/null +++ b/docs/src/assets/citations.css @@ -0,0 +1,17 @@ +.citation dl { + display: grid; + grid-template-columns: max-content auto; } + .citation dt { + grid-column-start: 1; } + .citation dd { + grid-column-start: 2; + margin-bottom: 0.75em; } + .citation ul { + padding: 0 0 2.25em 0; + margin: 0; + list-style: none;} + .citation ul li { + text-indent: -2.25em; + margin: 0.33em 0.5em 0.5em 2.25em;} + .citation ol li { + padding-left:0.75em;} \ No newline at end of file diff --git a/docs/src/assets/references.bib b/docs/src/assets/references.bib new file mode 100644 index 0000000..38cff12 --- /dev/null +++ b/docs/src/assets/references.bib @@ -0,0 +1,85 @@ +@article{cox1972regression, + title={Regression models and life-tables}, + author={Cox, David R}, + journal={Journal of the Royal Statistical Society: Series B (Methodological)}, + volume={34}, + number={2}, + pages={187--202}, + year={1972}, + publisher={Wiley Online Library} +} + +@article{rubio:2019, + title={On a general structure for hazard-based regression models: an application to population-based cancer research}, + author={Rubio, F.J. and Remontet, L. and Jewell, N.P. and Belot, A.}, + journal={Statistical Methods in Medical Research}, + volume={28}, + pages={2404--2417}, + year={2019} +} +@article{eletti:2022, + title={A unifying framework for flexible excess hazard modelling with applications in cancer epidemiology}, + author={Eletti, A. and Marra, G. and Quaresma, M. and Radice, R. and Rubio, F.J.}, + journal={Journal of the Royal Statistical Society: Series C}, + year={2022}, + volume={NA}, + pages={in press} +} +@article{rubio:2019b, + title={On models for the estimation of the excess mortality hazard in case of insufficiently stratified life tables}, + author={Rubio, F.J. and Rachet, B. and Giorgi, B. and Maringe, C. and Belot, A.}, + journal={Biostatistics}, + pages={na--na}, + year={2019} +} +@book{kalbfleisch:2011, + title={The statistical analysis of failure time data}, + author={Kalbfleisch, J.D. and Prentice, R.L.}, + year={2011}, + publisher={John Wiley \& Sons} +} +@article{cox:1972, + title={Regression models and life-tables}, + author={Cox, D.R.}, + journal={Journal of the Royal Statistical Society: Series B (Methodological)}, + volume={34}, + number={2}, + pages={187--202}, + year={1972} +} +@article{chen:2000, + title={Analysis of accelerated hazards models}, + author={Chen, Y.Q. and Wang, M.C.}, + journal={Journal of the American Statistical Association}, + volume={95}, + number={450}, + pages={608--618}, + year={2000} +} +@article{chen:2001, + title={On a general class of semiparametric hazards regression models}, + author={Chen, Y.Q. and Jewell, N.P.}, + journal={Biometrika}, + volume={88}, + number={3}, + pages={687--702}, + year={2001} +} +@article{nikulin:2009, + title={On the power generalized {W}eibull family: model for cancer censored data}, + author={Nikulin, M. and Haghighi, F.}, + journal={Metron -- International Journal of Statistics}, + volume={67}, + number={1}, + pages={75--86}, + year={2009} +} +@article{stacy:1962, + title={A generalization of the gamma distribution}, + author={Stacy, E.W.}, + journal={The Annals of Mathematical Statistics}, + volume={33}, + number={3}, + pages={1187--1192}, + year={1962} +} diff --git a/docs/src/index.md b/docs/src/index.md index b6b2b01..7eafd4d 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -6,9 +6,16 @@ CurrentModule = SurvivalModels Documentation for [SurvivalModels](https://github.com/JuliaSurv/SurvivalModels.jl). +In this documentation, we can cite stuff from the `references.bib` file like that : [cox1972regression](@cite). + ```@index ``` ```@autodocs Modules = [SurvivalModels] ``` + +```@bibliography +Pages = ["index.md"] +Canonical = false +``` \ No newline at end of file diff --git a/docs/src/references.md b/docs/src/references.md new file mode 100644 index 0000000..873d4ef --- /dev/null +++ b/docs/src/references.md @@ -0,0 +1,7 @@ +# References + +```@bibliography +``` + ```@bibliography +* +``` \ No newline at end of file diff --git a/src/NonParametric/KaplanMeier.jl b/src/NonParametric/KaplanMeier.jl index 4886434..188d9a7 100644 --- a/src/NonParametric/KaplanMeier.jl +++ b/src/NonParametric/KaplanMeier.jl @@ -30,8 +30,10 @@ end greenwood(S,t) = sum(S.∂σ[i] for i in eachindex(S.t) if S.t[i] < t; init=zero(t)) function StatsAPI.confint(S::KaplanMeier; level::Real=0.05) - # TODO + # TODO end -# Other methods to implement for this ? -# Maybe a vignette at least ? +function StatsBase.fit(::KaplanMeier, formula::FormulaTerm, df::DataFrame) + resp = modelcols(apply_schema(formula,schema(df)).lhs,df) + return KaplanMeier(resp[:,1], resp[:,2]) +end \ No newline at end of file diff --git a/src/NonParametric/LogRankTest.jl b/src/NonParametric/LogRankTest.jl index fff7974..87f14d4 100644 --- a/src/NonParametric/LogRankTest.jl +++ b/src/NonParametric/LogRankTest.jl @@ -31,7 +31,7 @@ struct LogRankTest # Comput KM numerator and denominators on each strata&group (s,g) for s in eachindex(stratas) for g in eachindex(groups) - idx = (group .== groups[g]) .&& (strata .== stratas[s]) + idx = Bool.((group .== groups[g]) .* (strata .== stratas[s])) model = KaplanMeier(T[idx], Δ[idx]) ∂N[s, g, :], ∂V[s, g, :], D[s, g, :] = model.d, model.d / (model.n - model.d), model.n end diff --git a/src/Parametric/GeneralHazard.jl b/src/Parametric/GeneralHazard.jl new file mode 100644 index 0000000..be2044b --- /dev/null +++ b/src/Parametric/GeneralHazard.jl @@ -0,0 +1,110 @@ +abstract type AbstractGHMethod end +struct PHMethod <: AbstractGHMethod end +struct AFTMethod <: AbstractGHMethod end +struct AHMethod <: AbstractGHMethod end +struct GHMethod <: AbstractGHMethod end + +c1(::GHMethod, X1, X2, β, α) = exp.(X2 * α) +c1(::PHMethod, X1, X2, β, α) = 1.0 +c1(::AFTMethod, X1, X2, β, α) = exp.(X1 * β) +c1(::AHMethod, X1, X2, β, α) = exp.(X2 * α) + +c2(::GHMethod, X1, X2, β, α) = exp.(X1 * β - X2 * α) +c2(::PHMethod, X1, X2, β, α) = exp.(-X1 * β) +c2(::AFTMethod, X1, X2, β, α) = 1.0 +c2(::AHMethod, X1, X2, β, α) = exp.(-X2 * α) + +""" + ProportionalHazard( T, Δ, baseline, X1, X2, optimizer) + AcceleratedFaillureTime(T, Δ, baseline, X1, X2, optimizer) + AcceleratedHazard( T, Δ, baseline, X1, X2, optimizer) + GeneralHazard( T, Δ, baseline, X1, X2, optimizer) + +Maximum likelihood estimation in General Hazards models using provided `baseline` distribution, provided hazard structure (through the `method` argument), provided design matrices and given optimizer form Optim.jl. + +Parameters `T,Δ` represent observed times and statuses, while `X1, X2` should contain covariates. The number of columns in design matrices can be zero. + +Hazard structures are defined by the method, which should be `<:AbstractGHMethod`, availiable possbilities are `PHMethod()`, `AFTMethod()`, `AHMethod()` and `GHMethod()`. + +The baseline distribution should be provided as a `<:Distributions.ContinuousUnivariateDitribution` object from `Distributions.jl` or compliant, e.g. from `SurvivalDistributions.jl` + +method: one of NelderMead(), Newton(), LBFGS(), ConjugateGradient() or GradientDescent() or any other method taken by Optim.optimize(). + +maxit: maximum number of iterations of the optimization routine. + +References: +* [Link to my reference so that people understand what it is](https://myref.com) +""" +struct GeneralHazardModel{Method, B} + T::Vector{Float64} + Δ::Vector{Bool} + baseline::B + X1::Matrix{Float64} + X2::Matrix{Float64} + α::Vector{Float64} + β::Vector{Float64} + function GeneralHazardModel(m::Method, T, Δ, baseline, X1, X2, optimizer) where Method<:AbstractGHMethod + npd, p, q = length(Distributions.params(baseline())), size(X1,2), size(X2,2) + init = zeros(npd+p+q) + function mloglik(par::Vector) + d, α, β = baseline(exp.(par[1:npd])...), par[npd .+ (1:q)], par[npd + q .+ (1:p)] + B = (Method == AHMethod) ? 0.0 : (X1[Δ,:] * β) + C = c1(m, X1, X2, β, α) + D = c2(m, X1, X2, β, α) + return -sum(loghaz.(d, T[Δ] .* C[Δ]) .+ B) + sum(cumhaz.(d, T .* C) .* D) + end + par = optimize(mloglik, init, method=optimizer).minimizer + d, α, β = baseline(exp.(par[1:npd])...), par[npd .+ (1:q)], par[npd + q .+ (1:p)] + return new{Method, typeof(d)}(T, Δ, d, X1, X2, α, β) + end +end + +_method(::Type{GeneralHazardModel{M,B}}) where {M,B} = M() +_baseline(::Type{GeneralHazardModel{M,B}}) where {M,B} = B + +const ProportionalHazard{B} = GeneralHazardModel{PHMethod, B} +const AcceleratedFaillureTime{B} = GeneralHazardModel{AFTMethod, B} +const AcceleratedHazard{B} = GeneralHazardModel{AHMethod, B} +const GeneralHazard{B} = GeneralHazardModel{GHMethod, B} + +ProportionalHazard( args...; kwargs...) = GeneralHazardModel(PHMethod(), args...; kwargs...) +AcceleratedFaillureTime(args...; kwargs...) = GeneralHazardModel(AFTMethod(), args...; kwargs...) +AcceleratedHazard( args...; kwargs...) = GeneralHazardModel(AHMethod(), args...; kwargs...) +GeneralHazard( args...; kwargs...) = GeneralHazardModel(GHMethod(), args...; kwargs...) + +function StatsBase.fit(::Type{GHM}, + formula1::FormulaTerm, + formula2::FormulaTerm, + df::DataFrame, + optimizer) where {GHM <: GeneralHazard} + sdf = schema(df) + f1_applied, f2_applied = apply_schema.((formula1,formula2),Ref(sdf)) + X1, X2 = modelcols.((f1,applied.rhs,f2_applied.rhs), Ref(df)) + TΔ = modelcols(f1_applied.lhs, df) + return GeneralHazard(_method(GHM), TΔ[:,1], TΔ[:,2], _baseline(GHM), X1, X2, optimizer) +end +# function StatsBase.fit(::Type{GeneralHazard{M,B}}, formula::FormulaTerm, df::DataFrame, optimizer) where {M,B} +# sdf = schema(df) +# f1_applied = apply_schema(formula,sdf) +# X1 = modelcols(f1_applied.rhs,df) +# n = size(X1, 1) # number of rows +# X2 = Array{Float64, 2}(undef,n,0) +# TΔ = modelcols(f1_applied.lhs, df) +# return GeneralHazard(M(), TΔ[:,1], TΔ[:,2], B, X1, X2, optimizer) +# end + +""" + simGH(n, model::GeneralHazardModel) + +This function simulate times to event from a general hazard model, whatever the structure it has (AH, AFT, PH, GH), and whatever its baseline distribution. + +Returns a vector containing the simulated times to event + +References: +* [HazReg original code](https://github.com/FJRubio67/HazReg) +""" +function simGH(n, m::GeneralHazardModel{M,B}) where {M,B} + args = (M(), m.X1, m.X2, m.β, m.α) + p0 = 1 .- exp.(log.(1 .- rand(n)) ./ c2(args...)) + return quantile.(dist,p0) ./ c1(args...) +end \ No newline at end of file diff --git a/src/Semiparametric/CoxMPLE.jl b/src/Semiparametric/CoxMPLE.jl new file mode 100644 index 0000000..d351906 --- /dev/null +++ b/src/Semiparametric/CoxMPLE.jl @@ -0,0 +1,79 @@ +function _cox_nllh(β, t, δ, X) + Xβ = X * β # linear predictor. + θ = exp.(Xβ) + + # we could just sum them for times that are equals. + # this maping could be done once. + + prev_i = firstindex(t) # first index of equal times. + llh = zero(eltype(β)) + for i in eachindex(t) + # update the first index of equal times: + if t[prev_i] < t[i] + prev_i = i + end + if δ[i] + llh += - Xβ[i] + log(sum(@view θ[prev_i:end])) + end + end + return llh +end + +""" + CoxModel(init, times, status, des, method, maxit) + fit(CoxModel, @formula(Surv(T,Δ)~predictors), dataset, method, maxit) + +Maximum Partial likelihood estimation in the semiparametric +Cox Proportional Hazards model. W recomand using the formula interface. + +- times : times to event +- status: vital status indicators (true or 1 = observed, false or 0 = censored) +- des: design matrix for hazard-level effects + +- method: An algorithm from `Optim.jl`, e.g. `NelderMead`, `Newton`, `LBFGS`, `ConjugateGradient` or `GradientDescent`. For the moment our implementation only supports Optim.jl, but a switch to Optimizations.jl will be done in a second step. + +maxit: maximum number of iterations in "method" +""" +struct CoxModel + par::Vector{Float64} + times::Vector{Float64} + status::Vector{Bool} + des::Matrix{Float64} + function CoxModel(init, times, status, des, method, maxit) + + o = sortperm(times) + times = times[o] + status = Bool.(status[o]) + des = des[o,:] + + # Let me compute here the llh : + optimiser = optimize(par -> _cox_nllh(par, times, status, des), init, method=method, iterations=maxit) + return new( + optimiser.minimizer, + times, + status, + des, + ) + end +end + +function StatsBase.fit(::Type{CoxModel},formula::FormulaTerm, df::DataFrame, method, maxit) + formula_applied = apply_schema(formula,schema(df)) + predictors = modelcols(formula_applied.rhs, df) + resp = modelcols(formula_applied.lhs, df) + return CoxModel(fill(0.0, size(predictors,2)), resp[:,1], resp[:,2], predictors, method, maxit) +end + +# Confidence interval : see in HazReg. + + +# confidence intervals ? +# pvalues for netsted models ? +# profile likelyhood ? + + +# we would like to set this up as an optimization routine from Optimization.jl so that is can be solved using different stuff. +# we can provide the loss but also the gradient and evne the hessian as formulas are on wikipedia. + + + diff --git a/src/SurvivalModels.jl b/src/SurvivalModels.jl index 686d61d..20b835f 100644 --- a/src/SurvivalModels.jl +++ b/src/SurvivalModels.jl @@ -7,9 +7,20 @@ using StatsAPI using StatsBase using StatsModels using DataFrames +using Distributions +using Optim +using LinearAlgebra +using SpecialFunctions +using ForwardDiff +using Random +using LogExpFunctions +using SurvivalDistributions include("NonParametric/KaplanMeier.jl") include("NonParametric/LogRankTest.jl") +include("Semiparametric/CoxMPLE.jl") +include("Parametric/GeneralHazard.jl") -export KaplanMeier, LogRankTest -end +export fit, KaplanMeier, LogRankTest, CoxModel, @formula, Surv, GeneralHazard + +end \ No newline at end of file diff --git a/test/test.jl b/test/test.jl new file mode 100644 index 0000000..0455823 --- /dev/null +++ b/test/test.jl @@ -0,0 +1,108 @@ + +@testitem "Check Cox" begin + + + # Required packages + using Distributions, Random, Optim + using StableRNGs + rng = StableRNG(123) + + # Sample size + n = 1000 + + # Simulated design matrices + dist = Normal() + des = hcat(rand(rng, dist, n), rand(rng, dist, n)) + des_t = rand(rng, dist, n) + + # True parameters + theta0 = [0.1,2.0,5.0] + alpha0 = 0.5 + beta0 = [-0.5,0.75] + + # censoring + cens = 10 + + function qPGW(p, sigma, nu, gamma) + val = sigma * ((1 .- log.(1 .- p)) .^ gamma .- 1) .^ (1 / nu) + return val + end + + function simPH(rng, n, des, theta, beta) + #= Uniform variates =# + distu = Uniform(0, 1) + u = rand(rng, distu, n) + + #= quantile function =# + function quantf(prob) + #= quantile value =# + sigma = theta[1] + nu = theta[2] + gamma = theta[3] + val = qPGW(prob, sigma, nu, gamma) + return val + end + # Linear predictors + exp_xalpha = 1.0 + exp_dif = exp.(-des * beta) + + # Simulating the times to event + p0 = 1 .- exp.(log.(1 .- u) .* exp_dif) + times = quantf.(p0) ./ exp_xalpha + + return times + end + # Data simulation + simdat = simPH(rng, n, des, theta0, beta0) + + # status variable + status = collect(Bool,(simdat .< cens)) + + # Inducing censoring + simdat = min.(simdat, cens) + + + # Model fit + + OPTCox = CoxModel( + fill(0.0, size(des)[2]), + simdat, + status, + des, + NelderMead(), + 1000 + ) + + betahat = OPTCox.par + @test betahat[1] ≈ -0.4926892848193542 atol=1e-2 + @test betahat[2] ≈ 0.6790626074990427 atol=1e-2 + + # 95% Confidence intervals under the reparameterisation + # CI = ConfInt(FUN = OPTCox[2], MLE = OPTCox[1].minimizer, level = 0.95) + + # CI = DataFrame(CI, :auto) + + # rename!( CI, ["Lower", "Upper"] ) + + # println(CI) + + +end + + + +@testitem "Check Cox on real data" begin + + + # Required packages + using Distributions, Random, Optim, RDatasets + + ovarian = dataset("survival","ovarian") + + OPTCox = fit(CoxModel, @formula(Surv(FUTime, FUStat) ~ Age + ECOG_PS), ovarian, NelderMead(), 1000) + + betahat = OPTCox.par + @test betahat[1] ≈ 0.16149 atol=1e-3 + @test betahat[2] ≈ 0.0187 atol=1e-3 + +end \ No newline at end of file