Created
September 15, 2010 11:58
-
-
Save guilhermesilveira/580629 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Amostra | |
attr_reader :pop, :obi, :tempo | |
def initialize(pop,obi,tempo) | |
@pop = pop | |
@obi = obi | |
@tempo = tempo | |
end | |
def lamb | |
return 0 if (@pop*@tempo)==0 | |
(0.0+@obi) / (@pop*@tempo) | |
end | |
def +(a) | |
Amostra.new(pop+a.pop,obi+a.obi,tempo) | |
end | |
def R | |
1 - Math::E ** (-lamb*tempo) | |
end | |
def RR | |
self.R / (1-self.R) | |
end | |
def print | |
puts "amostra lamb=#{lamb} R=#{self.R}" | |
end | |
def R_parcial(anos) | |
1 - Math::E ** (-lamb*anos) | |
end | |
end | |
class Pessoa | |
attr_reader :tempo, :obito | |
def initialize(id, idade, sexo, inicio, opera, quando, final, tempo, obito) | |
@id= id | |
@idade = idade | |
@sexo = sexo | |
@inicio = inicio | |
@opera = opera | |
@quando = quando | |
@final = final | |
@tempo = tempo | |
@obito = obito | |
end | |
def aconselha? | |
@opera==1 | |
end | |
def faixa_etaria | |
@idade<60 ? :novo : :velho | |
end | |
end | |
pss = [] | |
pss << Pessoa.new(25,57,1,"26/07/48",1,"21/02/50","03/12/50",860,1) | |
pss << Pessoa.new(54,65,1,"09/08/50",1,".","31/01/52",540,1) | |
pss << Pessoa.new(50,41,1,"09/06/50",0,".","05/10/50",118,1) | |
pss << Pessoa.new(43,54,1,"10/12/49",0,".","17/08/50",250,1) | |
pss << Pessoa.new(2,31,1,"17/03/47",1,"18/04/47","29/09/47",196,1) | |
pss << Pessoa.new(77,51,1,"14/11/51",1,"27/12/51","30/12/51",46,1) | |
pss << Pessoa.new(32,44,0,"03/03/49",1,"12/05/49","08/03/50",370,1) | |
pss << Pessoa.new(58,55,1,"11/09/50",0,".","22/12/50",102,1) | |
pss << Pessoa.new(11,58,1,"23/07/47",1,"02/10/47","27/12/48",523,1) | |
pss << Pessoa.new(56,57,0,"18/08/50",0,".","05/05/51",260,1) | |
pss << Pessoa.new(59,59,1,"31/10/50",1,"30/03/51","07/11/51",372,1) | |
pss << Pessoa.new(76,52,1,"18/10/51",0,".","28/10/52",376,1) | |
pss << Pessoa.new(100,58,1,"05/05/53",1,"23/07/53","20/07/54",441,0) | |
pss << Pessoa.new(24,50,1,"07/06/48",0,".","30/11/48",176,1) | |
pss << Pessoa.new(23,53,1,"26/05/48",1,"20/02/51","14/04/51",1053,1) | |
pss << Pessoa.new(46,52,1,"20/02/50",1,"16/04/51","22/07/54",1613,0) | |
pss << Pessoa.new(20,59,1,"29/04/48",1,"15/09/43","17/11/53",2028,0) | |
pss << Pessoa.new(88,40,1,"20/08/52",0,".","12/02/53",176,1) | |
pss << Pessoa.new(98,43,1,"06/02/53",1,"26/03/53","21/05/53",104,1) | |
pss << Pessoa.new(22,53,1,"21/05/48",1,"19/08/48","04/01/49",228,1) | |
pss << Pessoa.new(70,50,1,"24/05/51",0,".","14/03/52",295,1) | |
pss << Pessoa.new(52,55,1,"23/06/50",1,"16/04/51","05/11/51",500,1) | |
pss << Pessoa.new(57,52,1,"30/08/50",1,"19/06/51","29/06/51",303,1) | |
pss << Pessoa.new(6,58,1,"03/05/47",1,"17/08/50","13/02/51",1382,1) | |
pss << Pessoa.new(26,54,1,"27/10/48",1,"24/06/49","16/07/49",262,1) | |
pss << Pessoa.new(37,53,0,"27/07/49",0,".","12/07/52",1081,1) | |
pss << Pessoa.new(83,56,1,"04/03/52",1,"22/05/53","07/07/54",855,0) | |
pss << Pessoa.new(89,51,1,"20/08/52",1,"15/10/52","01/03/53",193,1) | |
pss << Pessoa.new(82,38,1,"21/02/52",0,".","03/02/53",348,1) | |
pss << Pessoa.new(21,59,1,"20/05/48",0,".","10/07/49",416,1) | |
pss << Pessoa.new(62,56,1,"15/01/51",0,".","11/03/52",421,1) | |
pss << Pessoa.new(80,49,1,"05/01/52",1,"28/02/52","05/03/52",60,1) | |
pss << Pessoa.new(12,57,1,"04/09/47",0,".","09/08/48",340,1) | |
pss << Pessoa.new(86,47,1,"03/07/52",1,"21/08/52","05/01/54",551,0) | |
pss << Pessoa.new(36,52,1,"15/06/49",0,".","14/01/50",213,1) | |
pss << Pessoa.new(74,44,1,"24/09/51",0,".","25/04/52",214,1) | |
pss << Pessoa.new(67,49,1,"04/05/51",1,"02/07/51","07/07/54",1160,0) | |
pss << Pessoa.new(45,54,1,"21/01/50",0,".","13/09/50",235,1) | |
pss << Pessoa.new(30,44,0,"10/02/49",1,"19/11/51","23/11/51",1016,1) | |
pss << Pessoa.new(87,57,1,"10/07/52",0,".","20/09/52",72,1) | |
pss << Pessoa.new(49,55,1,"05/06/50",0,".","08/04/51",307,1) | |
pss << Pessoa.new(35,45,1,"18/05/49",1,"27/01/50","15/09/51",850,1) | |
pss << Pessoa.new(99,52,1,"19/02/53",1,"10/03/53","04/09/53",197,1) | |
pss << Pessoa.new(9,59,1,"09/06/47",0,".","28/11/47",172,1) | |
pss << Pessoa.new(13,47,1,"16/09/47",1,"01/07/49","15/08/49",699,1) | |
pss << Pessoa.new(93,56,1,"10/11/52",1,"12/12/52","07/05/54",543,1) | |
pss << Pessoa.new(14,58,1,"24/10/47",0,".","23/04/49",547,1) | |
pss << Pessoa.new(40,59,1,"07/10/49",1,"09/07/50","07/03/52",882,1) | |
pss << Pessoa.new(8,40,1,"02/06/47",0,".","21/11/47",172,1) | |
pss << Pessoa.new(78,49,1,"03/12/51",1,"06/05/52","30/05/52",179,1) | |
pss << Pessoa.new(15,51,1,"30/11/47",1,".","28/12/49",759,1) | |
pss << Pessoa.new(48,55,1,"18/05/50",0,".","09/09/50",114,1) | |
pss << Pessoa.new(90,48,1,"06/10/52",1,"31/03/53","15/06/54",617,0) | |
pss << Pessoa.new(7,56,1,"20/05/47",0,".","10/02/49",632,1) | |
pss << Pessoa.new(51,54,1,"13/06/50",1,".","01/05/53",1053,1) | |
pss << Pessoa.new(1,48,1,"18/02/47",0,".","19/09/48",579,1) | |
pss << Pessoa.new(41,53,1,"03/11/49",1,"19/12/51","12/05/52",921,1) | |
pss << Pessoa.new(28,54,1,"24/12/48",0,".","03/05/49",130,1) | |
pss << Pessoa.new(55,70,1,"15/08/50",0,".","06/10/50",52,1) | |
pss << Pessoa.new(27,61,1,"17/11/48",1,"14/04/53","10/10/53",1788,1) | |
pss << Pessoa.new(44,65,1,"07/01/50",1,"30/01/52","07/11/52",1035,1) | |
pss << Pessoa.new(84,60,1,"11/03/52",0,".","11/12/52",275,1) | |
pss << Pessoa.new(96,62,1,"31/12/52",1,"13/01/53","05/02/53",36,1) | |
pss << Pessoa.new(31,68,1,"03/03/49",0,".","02/01/50",305,1) | |
pss << Pessoa.new(53,65,1,"08/07/50",1,"25/05/51","15/12/53",1256,0) | |
pss << Pessoa.new(5,61,1,"16/04/47",0,".","27/05/50",1137,1) | |
pss << Pessoa.new(60,65,1,"09/11/50",1,"22/11/50","29/06/51",232,1) | |
pss << Pessoa.new(91,66,1,"11/10/52",1,"15/11/52","10/02/54",487,0) | |
pss << Pessoa.new(75,69,1,"26/09/51",1,"19/11/51","09/02/52",136,1) | |
pss << Pessoa.new(85,70,1,"08/05/52",0,".","15/07/52",68,1) | |
pss << Pessoa.new(17,67,1,"10/12/47",1,"07/01/53","19/09/53",2110,1) | |
pss << Pessoa.new(71,60,1,"08/06/51",0,".","06/08/51",59,1) | |
pss << Pessoa.new(95,67,1,"25/11/52",1,"02/02/53","20/10/53",329,1) | |
pss << Pessoa.new(16,63,1,"18/11/47",1,"24/11/48","26/05/54",2381,0) | |
pss << Pessoa.new(69,60,1,"18/05/51",1,"15/09/51","24/11/51",190,1) | |
pss << Pessoa.new(4,60,1,"10/04/47",1,".","07/05/49",758,1) | |
pss << Pessoa.new(79,64,1,"19/12/51",0,".","29/01/52",41,1) | |
pss << Pessoa.new(72,67,1,"25/06/51",0,".","17/11/51",145,1) | |
pss << Pessoa.new(39,61,1,"27/09/49",1,"18/10/49","11/07/50",287,1) | |
pss << Pessoa.new(61,78,1,"16/11/50",0,".","13/09/51",301,1) | |
pss << Pessoa.new(34,66,1,"05/05/49",0,".","14/08/51",831,1) | |
pss << Pessoa.new(97,72,1,"12/01/53",1,"04/02/53","08/03/53",55,1) | |
pss << Pessoa.new(66,65,0,"17/03/51",0,".","18/09/51",185,1) | |
pss << Pessoa.new(73,69,1,"13/09/51",0,".","24/10/51",41,1) | |
pss << Pessoa.new(38,70,1,"12/09/49",1,"22/10/51","15/06/52",1007,0) | |
pss << Pessoa.new(64,65,1,"26/01/51",1,"12/04/51","06/06/51",131,1) | |
pss << Pessoa.new(19,63,1,"21/04/48",1,"08/07/48","08/07/48",78,1) | |
pss << Pessoa.new(63,68,0,"15/01/51",1,"15/02/51","08/02/52",389,1) | |
pss << Pessoa.new(92,72,1,"15/10/52",0,".","28/01/53",105,1) | |
pss << Pessoa.new(18,64,1,"31/12/47",1,"30/03/51","22/02/54",2245,0) | |
pss << Pessoa.new(3,66,1,"08/04/47",0,".","02/07/51",1546,1) | |
pss << Pessoa.new(47,67,1,"11/05/50",0,".","16/05/51",370,1) | |
pss << Pessoa.new(10,63,1,"21/07/47",0,".","19/05/52",1764,1) | |
pss << Pessoa.new(65,67,1,"15/03/51",1,"07/05/51","10/02/52",332,1) | |
pss << Pessoa.new(94,62,1,"17/11/52",1,"15/12/52","19/11/53",367,1) | |
pss << Pessoa.new(68,62,1,"08/05/51",1,"23/05/51","27/07/54",1176,0) | |
pss << Pessoa.new(81,69,1,"25/01/52",0,".","04/02/54",741,1) | |
pss << Pessoa.new(33,60,0,"31/03/49",1,"25/04/49","15/05/49",45,1) | |
pss << Pessoa.new(29,67,1,"01/02/49",0,".","09/02/50",373,1) | |
pss << Pessoa.new(42,62,1,"17/11/49",0,".","14/02/50",89,1) | |
quadrante = {} | |
quadrante[true] = {:novo => [], :velho => []} | |
quadrante[false] = {:novo => [], :velho => []} | |
pss.each do |p| | |
quadrante[p.aconselha?][p.faixa_etaria] << p | |
end | |
def build_quadrante(q) | |
dias = 0.0 | |
obitos = 0.0 | |
q.each do |p| | |
dias += p.tempo | |
obitos += p.obito | |
end | |
Amostra.new(q.size, obitos, dias / 365.0) | |
end | |
def quad(pss, &block) | |
l = [] | |
pss.each do |p| | |
l << p if yield(p) | |
end | |
build_quadrante(l) | |
end | |
amostra_1 = build_quadrante(quadrante[true][:novo]) | |
amostra_2 = build_quadrante(quadrante[true][:velho]) | |
amostra_3 = build_quadrante(quadrante[false][:novo]) | |
amostra_4 = build_quadrante(quadrante[false][:velho]) | |
puts "" | |
puts "Exercicio 1" | |
puts "Aconselhados, novos: #{amostra_1.lamb}" | |
puts "Aconselhados, velhos: #{amostra_2.lamb}" | |
puts "Nao aconselhados, novos: #{amostra_3.lamb}" | |
puts "Nao aconselhados, velhos: #{amostra_4.lamb}" | |
puts "" | |
puts "Exercicio 2" | |
puts "Aconselhados, novos: #{(amostra_1.R_parcial(1.0/365*60))}" | |
puts "Aconselhados, velhos: #{(amostra_2.R_parcial(1.0/365*60))}" | |
puts "Nao aconselhados, novos: #{(amostra_3.R_parcial(1.0/365*60))}" | |
puts "Nao aconselhados, velhos: #{(amostra_4.R_parcial(1.0/365*60))}" | |
# 3 explicar que fiquei na duvida | |
puts "" | |
puts "Exercicio 3" | |
novos = quad(pss) do |p| | |
p.faixa_etaria == :novo | |
end | |
velhos = quad(pss) do |p| | |
p.faixa_etaria == :velho | |
end | |
p novos.lamb | |
p velhos.lamb | |
# Calcule o SMR considerando não aconselhados como a população | |
# de estudo e aconselhados como a população de referência. | |
estudo = quad(pss) do |p| | |
!p.aconselha? | |
end | |
referencia = quad(pss) do |p| | |
p.aconselha? | |
end | |
puts "" | |
puts "Exercicio 4" | |
puts "Lambda aconselhados: #{referencia.lamb}" | |
puts "Lambda nao aconselhados: #{estudo.lamb}" | |
puts "SMR: #{estudo.lamb / referencia.lamb}" | |
# A partir das tabelas 2 e 3, calcule os coeficientes específi- | |
# cos por idade e o coeficiente bruto de incidência de câncer | |
# da boca em cada sexo. Compare os dois coeficientes brutos. | |
faixas = [ | |
Amostra.new(0,0,0), | |
Amostra.new(1,0,2), | |
Amostra.new(0,0,0), | |
Amostra.new(5,0,5), | |
Amostra.new(9,1,9), | |
Amostra.new(9,0,9), | |
Amostra.new(24+5,7+1,24), | |
Amostra.new(39+6,11+1,(45)), | |
Amostra.new(75+12,23+1,(75+12)), | |
Amostra.new(110+13,37+3,(123)), | |
Amostra.new(102+24,41+4,(126)), | |
Amostra.new(147,46,(147)), | |
Amostra.new(126,32,(126)), | |
Amostra.new(107,39,(107)), | |
Amostra.new(112,32,(112)), | |
Amostra.new(50,18,(50)), | |
Amostra.new(46,17,(46)) | |
] | |
puts "" | |
puts "Exercicio 5" | |
i = 0 | |
faixas.each do |f| | |
i = i + 1 | |
puts "Faixa etaria #{i}: #{f.lamb}" | |
end | |
def build_quadrante_anos(q) | |
anos = 0.0 | |
obitos = 0.0 | |
q.each do |p| | |
anos += p.tempo | |
obitos += p.obi | |
end | |
Amostra.new(q.size, obitos, anos) | |
end | |
masc = [ | |
Amostra.new(0,0,0), | |
Amostra.new(1,0,2), | |
Amostra.new(0,0,0), | |
Amostra.new(5,0,5), | |
Amostra.new(6,1,6), | |
Amostra.new(7,0,7), | |
Amostra.new(24,7,24), | |
Amostra.new(39,11,(39)), | |
Amostra.new(75,23,(75)), | |
Amostra.new(110,37,(110)), | |
Amostra.new(102,41,(102)), | |
Amostra.new(129,41,(129)), | |
Amostra.new(99,28,(99)), | |
Amostra.new(82,34,(82)), | |
Amostra.new(85,28,(85)), | |
Amostra.new(43,17,(43)), | |
Amostra.new(31,11,(31)) | |
] | |
fem = [] | |
i = 0 | |
masc_p = [326768, 334692, 300761, 275881, 298175, 256425, 225343, 199436, 182523, 138689, 105660, 83668, 64066, 43796, 27285,13211, 11483] | |
fem_p = [317911, 328905, 304389, 308332, 307409, 258680, 228486, 203471, 185507, 143313, 115341, 93312, 73869, 52697, 34896, 18772, 19023] | |
bruto_masc = 0 | |
bruto_fem = 0 | |
masc.each do |am| | |
t = faixas[i] | |
bruto_masc = bruto_masc + masc_p[i] * am.R | |
f = Amostra.new(t.pop - am.pop, t.obi - am.obi, t.tempo - am.tempo) | |
fem << f | |
bruto_fem = bruto_masc + fem_p[i] * f.R | |
i = i + 1 | |
end | |
puts "Bruto masculino: #{bruto_masc}" | |
puts "Bruto feminino: #{bruto_fem}" | |
puts "Dif brutos: #{bruto_masc / bruto_fem}" | |
puts "O coeficiente bruto feminino é maior que o masculino." | |
puts "" | |
puts "Exercicio 6" | |
i = 0 | |
am_masc = build_quadrante_anos(masc) | |
am_fem = build_quadrante_anos(fem) | |
puts "lamda masc = #{am_masc.lamb}" | |
puts "lamda fem = #{am_fem.lamb}" | |
puts "SMR = #{am_masc.lamb / am_fem.lamb}" | |
puts "O indicador demonstra que as ocorrências ocorrem em mais frequencia no sexo masculino que no sexo feminino" | |
puts "Isso demonstra como existe alguma outra variável (possivelmente a faixa etária) que influencia fortemente esses coeficientes." | |
puts "Tais dados dispares costumam mostrar que existe uma outra dimensão (a outra variavel) que é preciso tomar em conta na hora de fatiar a população para a análise." | |
puts "" | |
puts "Exercicio 7" | |
puts "Probabilidade de #{am_fem.R_parcial(10)}" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Guilherme de Azevedo Silveira | |
Numero USP 3463934 | |
Resultado de saída dos calculos | |
Exercicio 1 | |
Aconselhados, novos: 0.0136988974827056 | |
Aconselhados, velhos: 0.0157418056354227 | |
Nao aconselhados, novos: 0.0471210947585851 | |
Nao aconselhados, velhos: 0.0433080208827717 | |
Exercicio 2 | |
Aconselhados, novos: 0.0022493399936514 | |
Aconselhados, velhos: 0.00258434888280612 | |
Nao aconselhados, novos: 0.00771601095187302 | |
Nao aconselhados, velhos: 0.00709384576617156 | |
Exercicio 3 | |
0.0112098395979445 | |
0.0121647597583802 | |
Exercicio 4 | |
Lambda aconselhados: 0.00733570269441599 | |
Lambda nao aconselhados: 0.0225670829726722 | |
SMR: 3.07633554858357 | |
Exercicio 5 | |
Faixa etaria 1: 0 | |
Faixa etaria 2: 0.0 | |
Faixa etaria 3: 0 | |
Faixa etaria 4: 0.0 | |
Faixa etaria 5: 0.0123456790123457 | |
Faixa etaria 6: 0.0 | |
Faixa etaria 7: 0.0114942528735632 | |
Faixa etaria 8: 0.00592592592592593 | |
Faixa etaria 9: 0.00317082837891399 | |
Faixa etaria 10: 0.00264392887831317 | |
Faixa etaria 11: 0.00283446712018141 | |
Faixa etaria 12: 0.00212874265352399 | |
Faixa etaria 13: 0.00201562106324011 | |
Faixa etaria 14: 0.00340641104026553 | |
Faixa etaria 15: 0.00255102040816327 | |
Faixa etaria 16: 0.0072 | |
Faixa etaria 17: 0.00803402646502836 | |
Bruto masculino: 343420.286813354 | |
Bruto feminino: 349691.788577618 | |
Dif brutos: 0.982065630451966 | |
O coeficiente bruto feminino é maior que o masculino. | |
Exercicio 6 | |
lamda masc = 0.0195611021524224 | |
lamda fem = 0.0115018074268814 | |
SMR = 1.70069810999489 | |
O indicador demonstra que as ocorrências ocorrem em mais frequencia no sexo masculino que no sexo feminino | |
Isso demonstra como existe alguma outra variável (possivelmente a faixa etária) que influencia fortemente esses coeficientes. | |
Tais dados dispares costumam mostrar que existe uma outra dimensão (a outra variavel) que é preciso tomar em conta na hora de fatiar a população para a análise. | |
Exercicio 7 | |
Probabilidade de 0.108649966738871 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment