survival 0.0.1 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +8 -4
- data/lib/survival/KaplanMeier.rb +12 -3
- data/lib/survival/SurvivalSample.rb +1 -1
- data/lib/survival/version.rb +1 -1
- metadata +2 -2
data/README.md
CHANGED
@@ -18,10 +18,14 @@ Or install it yourself as:
|
|
18
18
|
|
19
19
|
## Usage
|
20
20
|
|
21
|
-
To generate a Kaplan-Meier survival
|
22
|
-
|
23
|
-
#survivals is an array of hashes. Each represents a sample, and must define
|
24
|
-
|
21
|
+
To generate a Kaplan-Meier survival curve:
|
22
|
+
|
23
|
+
#survivals is an array of hashes. Each hash represents a sample, and must define
|
24
|
+
# :event (the event time)
|
25
|
+
# :censored (boolean describing whether this sample is right-censored)
|
26
|
+
survivals = [{:event => 21, :censored => false}, {:event => 13, :censored => true}, ... ]
|
27
|
+
survival_objs = SurvivalSample.create_survival_objects(survivals) #Create survival sample objects
|
28
|
+
points = KaplanMeier.generate_plot_points(survival_objs) #Generate the x,y coordinates of the survival curve
|
25
29
|
|
26
30
|
#points is an array of [x,y] pairs for plotting. Use your favorite plotting library to plot the line graph.
|
27
31
|
|
data/lib/survival/KaplanMeier.rb
CHANGED
@@ -9,11 +9,12 @@ class KaplanMeier
|
|
9
9
|
|
10
10
|
#Creates the x,y pairs for plotting a survival curve,
|
11
11
|
#using the Kaplan-Meier method.
|
12
|
-
def self.generate_plot_points(survivals)
|
12
|
+
def self.generate_plot_points(survivals, include_horizontal=true)
|
13
13
|
|
14
14
|
bins = SurvivalSample.bin_survivals(survivals)
|
15
15
|
|
16
16
|
points = [[0,100]]
|
17
|
+
median = nil
|
17
18
|
|
18
19
|
terms = Array.new
|
19
20
|
n = survivals.length #Number we are considering at this time point (total surviving minus censored)
|
@@ -43,14 +44,22 @@ class KaplanMeier
|
|
43
44
|
|
44
45
|
s_t = s_t * 100.0
|
45
46
|
|
47
|
+
#The median survival time is calculated as the smallest survival time
|
48
|
+
#for which the survivor function is less than or equal to 0.5
|
49
|
+
if ( (s_t <= 50.0) && (median.nil?) ){
|
50
|
+
median = t
|
51
|
+
}
|
52
|
+
|
46
53
|
#Add to plot points
|
47
|
-
|
54
|
+
if include_horizontal
|
55
|
+
points << [t, prev] #Horizontal line from previous point
|
56
|
+
end
|
48
57
|
points << [t, s_t] #Current point
|
49
58
|
prev = s_t
|
50
59
|
|
51
60
|
end
|
52
61
|
|
53
|
-
return points
|
62
|
+
return points, median
|
54
63
|
end
|
55
64
|
|
56
65
|
end
|
data/lib/survival/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: survival
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-09-17 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: A gem that provides survival analysis functionality
|
15
15
|
email:
|