Cálculos estatísticos
Em seguida é calculada a média, o desvio padrão e a PDF da amostra. Nesta etapa também é determinado onde ocorre o máximo de probabilidade na PDF.
dados_med = 0
pdf1 = 0
pdf2 = 0
pdf3 = 0
dados_med = mean(dados) #Calcula a mdia
dados_desvpad = (variance(dados))**.5 #Calcula o desvio padrao
y0, x0 = pdf(dados, kernel = k, n = npdf)
y_t0, x_t0 = pdf(dados, kernel = k, n = npdf)
y_int0, x_int0 = pdf(dados, kernel = k, n = npdf)
y = array(y0)
x = array(x0)
y_t = array(y_t0)
x_t = array(x_t0)
y_int = array(y_int0)
x_int = array(x_int0)
gravar.write(nomearquivodados+'\n')
testey = sort(y_t)
probMax = float(testey[len(y_t)-1:len(y_t)])
for i in range(0,len(x)):
if y_t[i] == probMax:
ponto_x = i #PosiÆo da lista onde a probabilidade m xima
centro_x = x_t[i] #Valor da propriedade em analise onde a probabilidade m xima
string_MaxProb = "MaxProb = "+ str(probMax) + " @ " + str(x_t[i])
print string_MaxProb
gravar.write(string_MaxProb+'\n')
integral = 0
cont = 0
somatorio_Prob=0.0
lim_cont = 500 - ponto_x
for i in range(0,len(x)):
somatorio_Prob=somatorio_Prob+float(y[i]) #Calculo do somatorio para transformar a escala de probabilidadePosteriormente é calculada a probabilidade acumulada, necessária para a delimitação da região correspondente a 95% de probabilidade a partir da máxima probabilidade calculada.
PAC=[] #probabilidade acumulada
xs=[] #Valor da propriedade para ser usado na simulacao
for i in range(0,len(x_int)):
xs.append(x[i])
string_PDF = str(x[i]) + ',' +str(y[i])
gravar_pdf.write(string_PDF+'\n')
integral=integrate.trapz(y_int[0:i],x_int[0:i])
PAC.append(integral)
if integral/.025 < 1.0:# > 0.023 and integral < 0.025:
ponto025 = i
if integral/.975 <1.0:# > 0.975 and integral < 0.976:
ponto975 = iA penúltima etapa dos cálculos estatísticos consiste em determinar, a partir da PDF, cinco valores mais prováveis.
dadosimulado=0.0
prob=0.0
nps=0 #n£mero pontos simulados
PAC.sort(reverse=True)
xs.sort(reverse=True)
#qp=5 #quantos pontos
while nps<qp:
for i in range(1,len(xs)/10):
prob=rnd()
if float(PAC[i])>prob:
dadosimulado=float(xs[i-1])+(float(xs[i])-float(xs[i-1]))*(prob-PAC[i-1])/(PAC[i]-PAC[i-1])
if dadosimulado>0:
gravar_freq.write(str(dadosimulado)+'\n')
nps=nps+1
if nps>=qp:
breakEntão, os principais resultados são salvos.
string_LInf = "Limite inferior = " + str(x_t[ponto025]) print string_LInf gravar.write(string_LInf+'\n') string_LSup = "Limite superior = " + str(x_t[ponto975]) gravar.write(string_LSup+'\n') print string_LSup string_Resist = "Propriedade (95%LC) = (-" + str(float(centro_x)-float(x_t[ponto025])) + ";" + str(float(centro_x)) + "; +" + str(float(x_t[ponto975])-float(centro_x)) +") " gravar.write(string_Resist+'\n') print string_Resist string_Area = "µrea integrada: "+str(integral) gravar.write(string_Area+'\n') print string_Area string_log = nomearquivodados+';'+str(x_t[ponto025])+';'+str(float(centro_x))+';'+str(x_t[ponto975])+';'+ str(dados_med) +';'+ str(dados_desvpad)+';'+str(integral) gravar_log.write(string_log+'\n') print somatorio_Prob
E, por último, o gráfico contendo o PDF é gerado.
ax = subplot(111)
quem = str(nomearquivodados)
plot(x,y)
grid()
dados_cientifico= "%.5g" %(dados_med)
titulo = "Sample: "+upper(quem) +"; Average value. = "+ dados_cientifico
title(titulo)
nome_graf1 = nomefig
ylabel('Probability density',size=18)
xlabel(abscissa, size = 18)
savefig(nome_graf1)
a = x_int[ponto025]
b = x_int[ponto975]
# Gera regiao sombreada
ix = x_int[ponto025:ponto975]
iy = y_int[ponto025:ponto975]
verts = [(a,0)] + zip(ix,iy) + [(b,0)]
poly = Polygon(verts, facecolor='0.8', edgecolor='k')
ax.add_patch(poly)
a=float('%.2f'%a)
centro_x=float('%.2f'%centro_x)
b=float('%.2f'%b)
ax.set_xticks((a,centro_x,b))
nome_graf2 = nomefig+"-P95"
savefig(nome_graf2)
close('all')
gravar.close
gravar_pdf.close
gravar_log.close
print"Processo conclu¡do!"
#show()Resultados
Foram selecionados 20 valores entre 11 e 19, mostrados na Tabela 1, capazes de produzir uma distribuição bimodal.
| Contagem | Valor |
|---|---|
| 1 | 11 |
| 2 | 12 |
| 3 | 13 |
| 4 | 14 |
| 5 | 13 |
| 6 | 12 |
| 7 | 11 |
| 8 | 13 |
| 9 | 18 |
| 10 | 19 |
| 11 | 17 |
| 12 | 18 |
| 13 | 17 |
| 14 | 16 |
| 15 | 11 |
| 16 | 12 |
| 17 | 13 |
| 18 | 11 |
| 19 | 12 |
| 20 | 13 |
Os valores mostrados na Tabela 1 foram usados para construir um histograma, com o auxílio do software QtiPlot®, mostrado na Figura 2.

Em seguida, os dados foram salvos num arquivo denominado teste.txt e fornecidos ao programa PDF&Freq. Como primeira prova, foram geradas PDFs usando diferentes kernels. Os resultados são mostrados na Figura 3.

Comprovada a influência da escolha do kernel sobre os resultados, os cálculos seguintes foram feitos usando o kernel Gaussiano. Os arquivos gerados pelo programa PDF&Freq são mostrados na Figura 4.

Entre estes arquivos, os que contêm as principais respostas geradas pelo programa são três:
- Arquivo
log.dat, onde são listados o kernel escolhido e as demais informações previamente descritas.
kernel= g
Arquivo ; LI(95%) ; MAXPROB; LS(95%) ; Media ; DesvPad ; Area
teste;8.980685;12.2418703;20.0478976;13.8;2.66754371;0.999612524 - Arquivo
teste.frq, onde estão listados os cinco valores mais prováveis tomados para os valores aleatório da variável prob quando esta mais se aproxima de 1.
9.40974719
9.74840852
9.27565556
12.9108177
19.9949159 - O arquivo
teste.rep, onde são listadas a ordenada e a abscissa referente à máxima probabilidade, bem como os limites de confiança, com 95% de probabilidade.
MaxProb = 0.152862861298 @ 12.2418703658
Propriedade (95%LC) = (-3.26118472476;12.2418703658; +7.80602726672)
Assim, as principais informações estatísticas referentes à construção das PDFs são armazenadas numa única pasta, de maneira muito prática e rápida.
Conclusões
O maior impacto deste trabalho consiste na construção de uma ferramenta computacional que permite a rápida construção de distribuições de probabilidade a partir de diferentes kernels. Isso só foi possível com o uso da linguagem de programação Python, a qual permitiu desenvolver rapidamente um programa capaz de lidar com diversos arquivos de dados, produzindo informações estatísticas valiosas na forma de tabelas e gráficos, os quais são fundamentais para o nosso grupo de pesquisa e para os demais grupos lidem com esse tipo de informação ou problema.
Agradecimentos
Os autores agradecem ao Conselho Nacional de Desenvolvimento Científico e Tecnológico (CNPq), à Coordenação de Aperfeiçoamento de Pessoal de Nível Superior (CAPES), à Financiadora de Estudos e Projetos (FINEP PRESAL Ref.1889/10) e à Fundação Carlos Chagas Filho de Amparo à Pesquisa do Estado do Rio de Janeiro (FAPERJ) por toda a ajuda financeira e pelas bolsas concedidas.
Bibliografia
- Souza Jr., F. G., Pinto, J. C. & Soares, B. G. SBS/Pani · DBSA mixture plasticized with DOP and NCLS – Effect of the plasticizers on the probability density of volume resistivity measurements. Eur. Polym. J. 43, 2007–2016 (2007).
- Luce, B. & Anthony, O. A Primer on Bayesian Statistics in Health Economics and Outcomes Research. (MEDTAP International, Incorporated, 2003).
- Bard, Y. Nonlinear Parameter Estimation. (Academic Press, 1974).
- Grance, E. G. O. et al. New petroleum absorbers based on lignin‐CNSL‐formol magnetic nanocomposites. J. Appl. Polym. Sci. (2012).
- Araújo, A., Botelho, G., Oliveira, M. & Machado, A. V. Influence of clay organic modifier on the thermal-stability of PLA based nanocomposites. Appl. Clay Sci. 88–89, 144–150 (2014).
- de Souza Junior, F. G. et al. Conducting and magnetic mango fibers. Ind. Crops Prod. 68, 97–104 (2015).
- Souza Jr., F. G. & Varela, A. Construção de ferramenta de aquisição e inspeção de dados eletromecânicos usando Python. Revista PROGRAMAR 34, 32–38 (2012).
- Schwaab, M. Análise de Dados Experimentais: I. Fundamentos de Estatística e Estimação de Parâmetros. (Editora E-papers).
- Kernel Density Estimation in Python. Disponível em: http://jakevdp.github.io/blog/2013/12/01/kernel-density-estimation/. (Acedido: 19 Maio 2016)