Jump to content


Photo

Cálculo Da Moda (estatística)


  • Faça o login para participar
2 replies to this topic

#1 Nicholas Pufal

Nicholas Pufal

    Impossível: só existe até alguém duvidar e provar o contrário.

  • Usuários
  • 1655 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre

Posted 30/03/2007, 15:42

Moda em estatística significa aquele valor que mais aparece (ou aqueles valores que mais aparecem).

Tenho aqui um BD com várias idades e preciso retirar a moda, mas tô sem nenhuma idéia para isso.

Alguém pode dar uma luz?

exemplificando:

- 55
- 34
- 32
- 51
- 50
- 50
- 47
- 44
- 47
- 45


Nesse caso a moda seria 50 e 47. Acontece que no caso de 3 pessoas por exemplo colocarem 55 anos, e o restante do DB possuir mais 10 pessoas com idades inferiores à 40 anos, mas aleatórias, sem se repetir (ex: 31, 32, 33, 35, 39, 27, 26...), a moda não vai me dar uma informação precisa.

resumindo: preciso de uma ajuda para dar o primeiro passo -> tirar a moda. Com as modas em mãos acho que eu precisaria fazer uma média entre elas, pq caso contrário ficaria um resultado irreal, falso.

Alguém entendeu?

por mais que alguém não saiba isso em asp mas tenha uma idéia boa quanto à isso, pooor favor, posta aí que já me ajuda um monte (e mais gente que quer fazer estatísticas boas também).

Obrigado desde já!

Edição feita por: Firehalk, 30/03/2007, 15:42.

BLOG Touché Criação - Vamos trocar idéias? -> http://blog.touchecriacao.com.br/
// Links úteis: Busca || Regras
// Não respondo dúvidas via mensagem privada. Use o fórum para buscar ou perguntar.

#2 sk15

sk15

    Super Veterano

  • Usuários
  • 2071 posts
  • Sexo:Masculino
  • Localidade:SP - SP

Posted 30/03/2007, 19:51

Bem eu já respondi algo parecido para vc .... a um tepinho olhe:
http://forum.wmonlin...&...st&p=835134

Nesse seu caso o melhor seria tirar uma media e jogar em uma categoria .... tipo assim:

<%
' A soma da 445 dividida por 10 cadastros = 45,5 de média
' Dai trasforma ele em um inteiro fica 45 de idade média
Soma = Int((55 + 34 + 32 + 51 + 50 + 50 + 47 + 44 + 47 + 45) / 10)

' Ai aqui diz qual a media ...
If (Soma >= 0 And Soma <= 15) Then
 ' Média 0/15
ElseIf (Soma >= 16 And Soma <= 25) Then
 ' Média 16/25
ElseIf (Soma >= 26 And Soma <= 35) Then
 ' Média 26/35
ElseIf (Soma >= 36 And Soma <= 45) Then
 ' Média 36/45
ElseIf (Soma >= 46 And Soma <= 55) Then
 ' Média 46/55
End If
%>

E assim vai ...

Edição feita por: sk15, 30/03/2007, 19:52.


#3 Nicholas Pufal

Nicholas Pufal

    Impossível: só existe até alguém duvidar e provar o contrário.

  • Usuários
  • 1655 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre

Posted 02/04/2007, 17:31

Eu gostaria de pegar os valores de idades do DB e exibir os mais comuns. Média é algo muito irreal em estatística, porque se um fulaninho lá de 08 anos se cadastra num DB que só tem coroa, ele vai acabar abalando com a média. Entende? Eu queria algo mais real, e pra isso tinha pensado nessa idéia de "moda".

Acho que a melhor forma de expressar seria com a palavra "relevância". Eu quero exibir as idades mais relevantes, as que mais tem a ver, as que realmente são as mais comuns no DB.

Supondo-se que meu DB tem lá 10 cadastrados, com as idades:

#id #idade
1 56
2 48
3 65
4 44
5 49
6 57
7 12
8 10

9 59
10 47

De média isso daria 44 anos, mas o que eu gostaria mesmo é mostar os resultados mais comuns. No caso do exemplo o público alvo seria 45-60 anos (queria mostrar algo assim, mas fazer a busca por essa "relevância" eu não sei como fazer).

Talvez tu pudesse me ajudar a fazer uma função que faça isso:

Como sempre vão ser dois dígitos de idade, a função pegaria o valor 1 (o da esquerda) e se fosse o numero 5 por exemplo acrescentaria + 1 a var5. A var com mais numeros seria a mais relevante, com isso caso a var5 ganhasse por exemplo (tivesse maior valor), idades entre 50 e 60 seriam as mais relevantes.

exemplificando:

se a idade for 55, entao var5 = var 5 + 1. Se a idade for 52, mesma coisa (pq tem o 5 na esquerda). E assim por diante, e no final uma verificação da var com maior numero. Só que essa "var5" e etc seria criada dinamicamente e nao manualmente (isso eu nao sei fazer).

EDIT:

desenvolvi o seguinte código com esse raciocínio, mas dá err :(

<% 
'idade = "54" 'FONTE

For idade = 20 to 40

tamanho = Len(idade)

Select Case tamanho
Case 1
idadeest = idade
case 2
idadeest = Left(idade, 1)
Case 3
idadeest = Left(idade, 2)
End Select

if Eval("var" & idadeest) <> "" then
Eval("var" & idadeest) = Eval("var" & idadeest) + 1
else
Eval("var" & idadeest) = 0
end if

response.write Eval("var" & idadeest) & "<BR>"

Next
%>

Dá esse erro:
Tipos incompatíveis: 'Eval'

Ajudaaaa

Edição feita por: Firehalk, 03/04/2007, 14:13.

BLOG Touché Criação - Vamos trocar idéias? -> http://blog.touchecriacao.com.br/
// Links úteis: Busca || Regras
// Não respondo dúvidas via mensagem privada. Use o fórum para buscar ou perguntar.




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq