// Normalize the values to unit volume
function norm_vals (vals)
{
min = max = vals[0];
for (i = 0 ; i < 10 ; i++) {
if (vals[i] < min) {
min = vals[i];
}
if (vals[i] > max) {
max = vals[i];
}
}
range = max - min;
for (i = 0 ; i < 10 ; i++) {
vals[i] = (vals[i] - min) / range;
}
}
// Calculate the sum of all the parameters for a particular state
function sum_states (pop,gov1,area,gov2,ins,inc,vote,dep,fin,tax,blm,efi,pland,job,liv,land,crm,pres,urba,gun,urbc,gov3,nea,geo,ii,weight)
{
rv = 0;
rv += (pop[ii] * weight[0]);
rv += (gov1[ii] * weight[1]);
rv += (area[ii] * weight[2]);
rv += (gov2[ii] * weight[3]);
rv += (ins[ii] * weight[4]);
rv += (inc[ii] * weight[5]);
rv += (vote[ii] * weight[6]);
rv += (dep[ii] * weight[7]);
rv += (fin[ii] * weight[8]);
rv += (tax[ii] * weight[9]);
rv += (blm[ii] * weight[10]);
rv += (efi[ii] * weight[11]);
rv += (pland[ii] * weight[12]);
rv += (job[ii] * weight[13]);
rv += (liv[ii] * weight[14]);
rv += (land[ii] * weight[15]);
rv += (crm[ii] * weight[16]);
rv += (pres[ii] * weight[17]);
rv += (urba[ii] * weight[18]);
rv += (gun[ii] * weight[19]);
rv += (urbc[ii] * weight[20]);
rv += (gov3[ii] * weight[21]);
rv += (nea[ii] * weight[22]);
/*
// Location, locked
if ((weight[23] != 0) && (geo[ii] == 1)) {
rv += (1.0 * weight[23]);
}
// Location, isolated
if ((weight[24] != 0) && (geo[ii] == 2)) {
rv += (1.0 * weight[24]);
}
// Location, canada
if ((weight[25] != 0) && (geo[ii] == 3)) {
rv += (1.0 * weight[25]);
}
// Location, coast
if ((weight[26] != 0) && (geo[ii] == 4)) {
rv += (1.0 * weight[26]);
}
*/
return (rv);
}
// Sort numerically
function numberorder (a, b) { return a-b; }
// The main workhorse
function compute(form)
{
// The current data
Pop = new Array();
Pop.push(494);
Pop.push(635);
Pop.push(634);
Pop.push(613);
Pop.push(757);
Pop.push(796);
Pop.push(904);
Pop.push(1321);
Pop.push(1259);
Pop.push(1287);
Area = new Array();
Area.push(97105);
Area.push(570374);
Area.push(68994);
Area.push(9249);
Area.push(75898);
Area.push(1955);
Area.push(145556);
Area.push(82751);
Area.push(8969);
Area.push(30865);
Ins = new Array();
Ins.push(42.5);
Ins.push(38.1);
Ins.push(72.5);
Ins.push(54.3);
Ins.push(68.1);
Ins.push(48.3);
Ins.push(56.1);
Ins.push(47.2);
Ins.push(43.3);
Ins.push(67.3);
Geo = new Array();
Geo.push(1);
Geo.push(2);
Geo.push(3);
Geo.push(3);
Geo.push(1);
Geo.push(4);
Geo.push(3);
Geo.push(3);
Geo.push(4);
Geo.push(4);
Vote = new Array();
Vote.push(213);
Vote.push(288);
Vote.push(290);
Vote.push(291);
Vote.push(316);
Vote.push(328);
Vote.push(411);
Vote.push(488);
Vote.push(567);
Vote.push(647);
Fin = new Array();
Fin.push(4.7);
Fin.push(6.1);
Fin.push(4.2);
Fin.push(4.3);
Fin.push(13.8);
Fin.push(8.7);
Fin.push(10.9);
Fin.push(7.7);
Fin.push(8.2);
Fin.push(11.4);
Blm = new Array();
Blm.push(45.9);
Blm.push(67);
Blm.push(3.9);
Blm.push(6.4);
Blm.push(6.3);
Blm.push(2);
Blm.push(28.8);
Blm.push(62.7);
Blm.push(12.8);
Blm.push(1);
Pland = new Array();
Pland.push(47.782);
Pland.push(23.77);
Pland.push(62.684);
Pland.push(7.791);
Pland.push(69.186);
Pland.push(1.812);
Pland.push(91.1);
Pland.push(24.52);
Pland.push(7.36);
Pland.push(29.103);
Liv = new Array();
Liv.push(29.72);
Liv.push(24.86);
Liv.push(28.23);
Liv.push(27.63);
Liv.push(29.02);
Liv.push(25.93);
Liv.push(23.98);
Liv.push(25.56);
Liv.push(31.81);
Liv.push(28.53);
Crm = new Array();
Crm.push(3518);
Crm.push(4236);
Crm.push(2418);
Crm.push(2769);
Crm.push(2332);
Crm.push(4053);
Crm.push(3689);
Crm.push(3133);
Crm.push(2322);
Crm.push(2688);
UrbA = new Array();
UrbA.push(25.5);
UrbA.push(44.3);
UrbA.push(35.8);
UrbA.push(17.3);
UrbA.push(25.8);
UrbA.push(67.8);
UrbA.push(25.9);
UrbA.push(46.7);
UrbA.push(44.6);
UrbA.push(24.6);
UrbC = new Array();
UrbC.push(39.8);
UrbC.push(21.4);
UrbC.push(20.0);
UrbC.push(20.9);
UrbC.push(26.2);
UrbC.push(12.2);
UrbC.push(28.1);
UrbC.push(19.7);
UrbC.push(14.6);
UrbC.push(15.6);
Gov1 = new Array();
Gov1.push(13.4);
Gov1.push(19.1);
Gov1.push(14.4);
Gov1.push(13.0);
Gov1.push(12.7);
Gov1.push(9.2);
Gov1.push(16.5);
Gov1.push(13.1);
Gov1.push(7.7);
Gov1.push(14.1);
Gov2 = new Array();
Gov2.push(9.4);
Gov2.push(9.7);
Gov2.push(9.1);
Gov2.push(9.7);
Gov2.push(8.3);
Gov2.push(6.9);
Gov2.push(10.8);
Gov2.push(9.5);
Gov2.push(6.2);
Gov2.push(9.8);
Inc = new Array();
Inc.push(37.9);
Inc.push(51.6);
Inc.push(34.6);
Inc.push(40.9);
Inc.push(35.3);
Inc.push(47.4);
Inc.push(33.0);
Inc.push(37.6);
Inc.push(49.5);
Inc.push(37.2);
Dep = new Array();
Dep.push(1.14);
Dep.push(1.63);
Dep.push(1.95);
Dep.push(1.12);
Dep.push(1.50);
Dep.push(0.86);
Dep.push(1.67);
Dep.push(1.24);
Dep.push(0.71);
Dep.push(1.31);
Tax = new Array();
Tax.push(9.8);
Tax.push(6.3);
Tax.push(10.2);
Tax.push(11.0);
Tax.push(9.1);
Tax.push(10.2);
Tax.push(10.0);
Tax.push(10.5);
Tax.push(8.6);
Tax.push(12.8);
Efi = new Array();
Efi.push(4.41);
Efi.push(6.01);
Efi.push(5.00);
Efi.push(5.59);
Efi.push(4.47);
Efi.push(4.56);
Efi.push(5.20);
Efi.push(3.92);
Efi.push(4.55);
Efi.push(6.22);
Job = new Array();
Job.push(27.45);
Job.push(48.65);
Job.push(34.35);
Job.push(36.65);
Job.push(55.6);
Job.push(75.95);
Job.push(79.9);
Job.push(185.9);
Job.push(105.7);
Job.push(65.4);
Land = new Array();
Land.push(10);
Land.push(10);
Land.push(10);
Land.push(0);
Land.push(10);
Land.push(0);
Land.push(10);
Land.push(6.7);
Land.push(3.3);
Land.push(3.3);
Pres = new Array();
Pres.push(69.9);
Pres.push(59.8);
Pres.push(61.0);
Pres.push(41.4);
Pres.push(60.8);
Pres.push(42.2);
Pres.push(59.1);
Pres.push(68.2);
Pres.push(48.6);
Pres.push(44.5);
Gun = new Array();
Gun.push(-4);
Gun.push(-8);
Gun.push(-5);
Gun.push(-5);
Gun.push(-3);
Gun.push(2);
Gun.push(-6);
Gun.push(-3);
Gun.push(0);
Gun.push(-10);
Gov3 = new Array();
Gov3.push(22.0);
Gov3.push(29.6);
Gov3.push(18.5);
Gov3.push(13.9);
Gov3.push(17.5);
Gov3.push(13.3);
Gov3.push(20.0);
Gov3.push(17.3);
Gov3.push(13.8);
Gov3.push(15.4);
Nea = new Array();
Nea.push(1.16);
Nea.push(2.15);
Nea.push(1.41);
Nea.push(1.46);
Nea.push(0.86);
Nea.push(1.16);
Nea.push(1.57);
Nea.push(0.84);
Nea.push(0.84);
Nea.push(1.42);
num = 27;
// First, normalize all the data
norm_vals (Pop);
norm_vals (Area);
norm_vals (Ins);
norm_vals (Vote);
norm_vals (Fin);
norm_vals (Blm);
norm_vals (Pland);
norm_vals (Liv);
norm_vals (Crm);
norm_vals (UrbA);
norm_vals (UrbC);
norm_vals (Gov1);
norm_vals (Gov2);
norm_vals (Inc);
norm_vals (Dep);
norm_vals (Tax);
norm_vals (Efi);
norm_vals (Job);
norm_vals (Land);
norm_vals (Pres);
norm_vals (Gun);
norm_vals (Gov3);
norm_vals (Nea);
// norm_vals (Geo);
// Grab the weights
weight = new Array();
for (i = 0 ; i < num ; i++) {
if ((document.forms[0].elements[i].value < -10) || (document.forms[0].elements[i].value > 10)) {
var msg;
msg = "All Weights must be between -10 and 10 (inclusive)"
alert (msg);
return (false);
}
if (document.forms[0].elements[i].value == "") {
weight[i] = 0;
} else {
weight[i] = document.forms[0].elements[i].value;
}
}
// Calculate the results
sums = new Array();
for (i = 0 ; i < 10 ; i++) {
rv = sum_states (Pop,Gov1,Area,Gov2,Ins,Inc,Vote,Dep,Fin,Tax,
Blm,Efi,Pland,Job,Liv,Land,Crm,Pres,UrbA,Gun,UrbC,
Gov3,Nea,Geo,i,weight);
sums[i] = rv;
}
Wy = sums[0];
Ak = sums[1];
Nd = sums[2];
Vt = sums[3];
Sd = sums[4];
De = sums[5];
Mt = sums[6];
Id = sums[7];
Nh = sums[8];
Me = sums[9];
form.wy.value = Wy;
form.ak.value = Ak;
form.nd.value = Nd;
form.vt.value = Vt;
form.sd.value = Sd;
form.de.value = De;
form.mt.value = Mt;
form.id.value = Id;
form.nh.value = Nh;
form.me.value = Me;
sums.sort(numberorder);
rank = new Array();
rank[0] = 0;
rank[1] = 0;
rank[2] = 0;
rank[3] = 0;
rank[4] = 0;
rank[5] = 0;
rank[6] = 0;
rank[7] = 0;
rank[8] = 0;
rank[9] = 0;
for (i = 0 ; i < 10 ; i++) {
if (sums[i] == Wy) {
rank[0] = 10 - i;
}
if (sums[i] == Ak) {
rank[1] = 10 - i;
}
if (sums[i] == Nd) {
rank[2] = 10 - i;
}
if (sums[i] == Vt) {
rank[3] = 10 - i;
}
if (sums[i] == Sd) {
rank[4] = 10 - i;
}
if (sums[i] == De) {
rank[5] = 10 - i;
}
if (sums[i] == Mt) {
rank[6] = 10 - i;
}
if (sums[i] == Id) {
rank[7] = 10 - i;
}
if (sums[i] == Nh) {
rank[8] = 10 - i;
}
if (sums[i] == Me) {
rank[9] = 10 - i;
}
}
form.wy_r.value = rank[0];
form.ak_r.value = rank[1];
form.nd_r.value = rank[2];
form.vt_r.value = rank[3];
form.sd_r.value = rank[4];
form.de_r.value = rank[5];
form.mt_r.value = rank[6];
form.id_r.value = rank[7];
form.nh_r.value = rank[8];
form.me_r.value = rank[9];
return (0);
}
Rank the States on Your Own Criteria
The following ranking system is easier and allows more freedom than the spreadsheet, but it can also be
trickier! Refer to the State Data page
and follow the instructions below.
To assign weights, ask
yourself if a large number for a particular item is good or bad. For instance,
if a large population is good, then assign the weight a large positive value.
If a large population is bad, assign the weight a large negative value. If you
don't care, the weight value should be zero (or near zero). Weights can be any
value from -10 to 10 (inclusive). (Note the legend for each variable at the
bottom.)
Once you've entered the
weights, click on the 'Calculate' button and the results will appear in the
labeled boxes below. Interpreting the results is easy: the higher (more
positive) the value, the higher your preference for that state! The ranking of
the state (1 thru 10) is also shown.
General Data Weights | Economic and Political Data Weights |
| Pop | |
Gov1 | |
| Area | |
Gov2 | |
| Ins | |
Inc | |
| Vot | |
Dep | |
| Fin | |
Tax | |
| Blm | |
EFI | |
| Pland | |
Job | |
| Liv | |
Land | |
| Crm | |
Pres | |
| UrbA | |
Gun | |
| UrbC | |
Gov3 | |
| |
NEA | |
| State | Score | Rank |
State | Score | Rank |
State | Score | Rank |
| WY: | | | AK: | | | ND: | | |
| VT: | | | SD: | | | DE: | | |
| MT: | | | ID: | | | NH: | | |
| ME: | | |
|
Pop=Population in 1000's
Area=Area in square miles
Ins=% of state population born inside the state, from Census
Geo=Geography ("Coast" is best; "Locked" is worst)
Vot=1000's of ballots cast in 2000 presidential election (lower numbers are better)
Fin=total campaign funds raised by all US House & Senate candidates in most expensive election of last 6 years, in millions of $ (lower numbers are better)
Blm=% of state's territory owned by federal government (lower numbers are better)
PLand= amount of private and locally owned land (not state or federal), in millions of square miles
Liv=Livability rating, 2002, from Morgan Quitno Press (higher numbers are supposed to be better - but the factors that go into the rating are sometimes dubious)
Crm=violent and property crimes per hundred thousand residents, 2001 (lower numbers are better)
UrbA=population in urbanized areas as % of total population
UrbC=population in urban clusters as % of total population (rban clusters are densely populated small towns)
|
|
Gov1=Federal, state, and
local government spending as a percentage of Gross State Product (lower numbers
are better)
Gov2=State and local government spending as a percentage of Gross State Product
(lower numbers are better)
Inc=Median household income in $1000s (higher is better)
Dep=$ this state gets back in federal expenditures for every $1 paid in federal taxes, 2001 (lower is better)
Tax=State and local taxes (all sources) as a percentage of income, 2000 (lower is better)
EFI=Economic Freedom Index (lower numbers are better)
Job=1000's of new jobs forecast, 1998-2008 (higher is better: this variable is more important than current unemployment rate)
Land=lack of statewide land planning schemes, 10-point scale (higher is better)
Pres=sum of vote percentages for Republican, Libertarian, and Constitution presidential candidates in last election (higher numbers are better: in presidential elections votes for Republicans generally indicate a rough support for the free market over socialism, whereas on the state level both Republicans and Democrats may differ from the positions of the national parties)
Gun=severity of state gun control laws, as estimated by the poorly-named Open Society Institute (states that score lower are better for us!)
Gov3=Percentage of state population employed by state and local governments, 2001
NEA=Percentage of state population in the National Education Association or
American Federation of Teachers
|