[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

From |
philippe.vankerm@ceps.lu |

To |
statalist@hsphsun2.harvard.edu |

Subject |
st: Calculating Borda Count within group |

Date |
Thu, 22 Apr 2004 16:26:44 +0200 |

Tonya, As an alternative to what Stephen Jenkins suggested, what abour stg like foreach var of varlist pd1 pl1 pu1 { by grpid: gen r`var' = sum((max(`var',pd1)==`var') + (max(`var',pl1)==`var') + (max(`var',pu1)==`var')) } by grpid: gen borda = (max(rpd1[_N],rpl1[_N],rpu1[_N])==rpd1[_N]) if _n==_N tab borda * or is it as follows - I'm not too sure I understand clearly what you want: bys grpid: gen bordaBIS = (max(rpd1[_N],rpl1[_N],rpu1[_N])==rpd1[_N])==death if _n==_N tab bordaBIS Philippe >>>>>>>>>>>>> From "Tonya Cropper" <tonya_cropper@ksgphd.harvard.edu> To "Statalist" <statalist-digest@hsphsun2.harvard.edu> Subject st: Calculating Borda Count within group Date Thu, 22 Apr 2004 09:22:17 -0400 Dear Statalisters: I wrote a program to calculate a Borda count result of predicted probabilities of people within groups. The program calculates the results I want, but I am hoping there's a more efficient way of doing it. Within each group, I want to rank each person's predicted probability for three outcomes(Pd, Pl, Pu). I have multiple sets of these probabilites based on different models, so I performed the counts in a loop. I gave each person a score of 3 for the highest probability, 2 for the 2nd, and 1 for the lowest. I then summed each outcome to get a total Borda score. If Pd was the highest score, then the Borda result is 1 and 0 otherwise (I mainly care about Pd, ties will go to Pl, Pu is undecided). Below is an example. I will appreciate any assistance to streamline the program. Thank you. Pd1 Pl1 Pu1 death id1 .275 .401 .324 0 id2 .582 .163 .255 0 id3 .072 .630 .298 0 id4 .489 .064 .446 0 id5 .242 .400 .358 0 Borda ranking result : Pd1 Pl1 Pu1 id1 1 3 2 id 2 3 1 2 id3 1 3 2 id4 3 1 2 id5 1 3 2 Borda count:9 11 10 result/borda1 = 0 success =1 (since death=board1) *** Borda Count ** gen rPd`i'=0 gen rPl`i'=0 gen rPu`i'=0 local i=1 while i<= 3 { if (Pd`i'>Pl`i') & (Pl`i'>Pu`i') { replace rPd`i'=3 replace rPl`i'=2 replace rPu`i'=1 } else if (Pd`i'>Pu`i') & (Pu`i'>Pl`i') { replace rPd`i'=3 replace rPl`i'=1 replace rPu`i'=2 } else if (Pl`i'>Pd`i') & (Pd`i'>Pu`i') { replace rPd`i'=2 replace rPl`i'=3 replace rPu`i'=1 } else if (Pl`i'>Pu`i') & (Pu`i'>Pd`i') { replace rPd`i'=2 replace rPl`i'=1 replace rPu`i'=3 } else if (Pu`i'>Pd`i') & (Pd`i'>Pl`i') { replace rPd`i'=1 replace rPl`i'=3 replace rPu`i'=2 } else if (Pu`i'>Pl`i') & (Pl`i'>Pd`i') { replace rPd`i'=1 replace rPl`i'=2 replace rPu`i'=3 } } collapse (sum)rPd1 rPl1 rPu1 (sum)rPd1 rPl1 rPu1 (sum)rPd1 rPl1 rPu1 (mean)death if (ngrp>2), by(grpid) gen borda1= ((rPd1>rPl1) & (rPd1>rPu1)) gen borda2= ((rPd2>rPl2) & (rPd2>rPu2)) gen borda3= ((rPd3>rPl3) & (rPd3>rPu3)) gen borda1s:"Borda Count/Prob 1 Success" = (death==borda1) tab borda1s, miss ********************************************************************** This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify the system manager. This footnote also confirms that this email message has been swept for the presence of computer viruses. ********************************************************************** * * For searches and help try: * http://www.stata.com/support/faqs/res/findit.html * http://www.stata.com/support/statalist/faq * http://www.ats.ucla.edu/stat/stata/

- Prev by Date:
**RE: st: valid invalid syntax** - Next by Date:
**st: Storage of multiple dummy variables** - Previous by thread:
**st: RE: Calculating Borda Count within group** - Next by thread:
**st: Fora probit in GLAMMM, adapt vs noadapt mis-behaving** - Index(es):

© Copyright 1996–2014 StataCorp LP | Terms of use | Privacy | Contact us | What's new | Site index |