integral de dados discretos

Desculpem-me pela mancada, segue email anterior, saída do dput() e CMR... Prezados colegas, tenho alguns dados de produção de metano ao longo do tempo em intervalos de 12 minutos. Gostaria da opinião de vocês sobre a melhor forma de integrar a área sob a curva formada. Já pesquisei algumas coisas e acredito que usar a função integrate() sobre o vetor gerado com as funções approxfun() ou splinefun() podem resolver o problema ao ligarem os pontos, embora redundem em resultados diferentes e não contemplem exatamente todos os pontos. Segue o banco de dados e as funções usadas por mim... ### Banco de dados data<-structure(list(Sample = 1:100, CH4A = c(0.02492, 0.0272, 0.03284, 0.04048, 0.04256, 0.0474, 0.05128, 0.05348, 0.05292, 0.05156, 0.05532, 0.05608, 0.05152, 0.05234, 0.05222, 0.05266, 0.056, 0.05008, 0.05038, 0.05148, 0.0485, 0.04748, 0.04272, 0.04294, 0.04132, 0.03824, 0.03672, 0.04056, 0.03592, 0.03492, 0.03818, 0.03628, 0.03492, 0.03588, 0.03196, 0.0338, 0.03456, 0.03284, 0.03684, 0.03282, 0.03116, 0.03082, 0.03072, 0.03488, 0.0349, 0.035, 0.03516, 0.03256, 0.02988, 0.03408, 0.02854, 0.03392, 0.02844, 0.0327, 0.031, 0.03074, 0.0308, 0.02808, 0.02796, 0.02822, 0.04016, 0.03704, 0.04814, 0.04636, 0.04824, 0.0514, 0.0506, 0.05602, 0.0623, 0.06436, 0.06132, 0.06396, 0.0612, 0.05466, 0.05832, 0.06704, 0.06776, 0.06076, 0.05698, 0.06096, 0.06566, 0.06282, 0.05626, 0.05456, 0.05716, 0.05634, 0.05258, 0.05564, 0.05608, 0.05284, 0.05228, 0.05008, 0.05322, 0.05018, 0.04752, 0.04478, 0.04732, 0.04524, 0.03788, 0.04192)), .Names = c("Sample", "CH4A"), row.names = c(NA, 100L), class = "data.frame") #### Plotagem ----- plot(CH4A~Sample,data,type='l') #### integrando com approxfun() f2 <- approxfun(data$Sample, data$CH4A) integrate(f2, min(data$Sample), max(data$Sample),subdivisions=1000) #### integrando com splinefun() f3 <- splinefun(data$Sample, data$CH4A) integrate(f3, min(data$Sample), max(data$Sample),subdivisions=1000) #### plotagem final -------- plot(data$CH4A~data$Sample, type = "n") curve(f2(x), add = TRUE, col=1) curve(f3(x), add = TRUE, col=3) f4 <- splinefun(data$Sample, data$CH4A, method ="natural") curve(f4(x), add = TRUE, col=4) ### Percebam que algumas variações bruscas não são contempladas pelas curvas ajustadas, o que provavelmente afeta a área.

Bem, quando li a primeira vez pensei que você tivesse querendo a área abaixo de uma curva ajustada mas você quer a área real abaixo da "curva" que é a união dos pontos. Se for isso não precisa usar interpolações, como a approxfun(). Use a coma das áreas dos trapézios. É uma função simples de fazer mas felizmente tem uma disponível no pacote agricolae::audpc (area under disease progress curve), é só usar, veja audpc(evaluation=as.data.frame(as.list(data$CH4A)), dates=data$Sample, type="absolute") Só que o cara que fez a função, não sei porque razão, precisa receber o primeiro argumento como data.frame. À disposição. Walmes. ========================================================================== Walmes Marques Zeviani LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W) Departamento de Estatística - Universidade Federal do Paraná fone: (+55) 41 3361 3573 VoIP: (3361 3600) 1053 1173 e-mail: walmes@ufpr.br skype: walmeszeviani twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================
participantes (2)
-
Luigi Cavalcanti
-
Walmes Zeviani