repak shawahb
green-staind funeral bizkit 41 for my slipkorn of a chemical park against the puddle of hoobacus mudvaynescence for soup 182

^

   

rsw@jfet.org


blogroll

       
Mon, 25 Aug 2008

semilunar hiatus

Or is it bilunar?

Anyway... I haven't posted in a while, so here's what's new with me:

  • About a month ago, we got a second dog! He's a Nova Scotia Duck-Tolling Retriever. His official AKC name is KD's Ten Thousand Gauss, but we call him Niko (shortened from Nikola Tesla. Get it? 1 T = 10 kG). Niko and Shockley are best friends, and while Niko will eventually be about twice Shockley's size (45 pounds versus 25), for now they're within a couple pounds of one another. To the right is a picture of him and Shocks eating.
  • I'm turning into a soccer mom.
    Well... not really, but I am trading in my beloved STi for a Volkswagen Jetta SportWagen TDi. Apparently I have a penchant for three letter trim designators ending in "i," but this time it's not a rice rocket—it's a diesel. The wagon (similar in size to an Outback, but a little tubbier looking) will hold the pups nicely, transport too many people to ridiculous parties, and carry three or four kegs in the back, all the while getting 50 MPG.
    I'm picking up the car tomorrow in El Paso (the diesel wagons are ridiculously hard to find because there are only like 2000 of them being made this year, so I've heard) and I expect to get back to Austin on one tank with fuel to spare. Eat that, Prius.


[ permalink | 0 comments (add one you lazy bastard!) ]

Tue, 24 Jun 2008

pix plz kthx

Here, you happy now?


[ permalink | 0 comments (add one you lazy bastard!) ]

Mon, 16 Jun 2008

broken promise of a thousand words

No pictures this time, patient readers. My apologies.

Well! We finally taped out the Thursday before last, so I was off all last week catching up with things around the house. The main event was setting up irrigation for my poor parched yard, which involved lots of soaker hose for all the planters and a few impact sprinklers for the grass. I have things divided into two zones on each of the three spigots placed around my house, and as long as I only run one of the two sprinkler zones at a time the water pressure is sufficient to run soakers on the other two spigots.

This strongly suggests my next project: none of the electronic timers I've found can be programmed for the odd watering schedule around here, viz., Wednesdays and Saturdays, so I'll just have to build my own. Either I'll make individual ones for each sprinkler, or I'll do a little control interface for some solenoid valves and hook it up to positron.

Speaking of positron, that was the other time sink this week: positron Mk. V died a slow lingering death. A couple weeks ago I started getting random lock-ups; figuring it was a heat problem, I reduced the CPU core voltage, and this seemed to work for a while. Unfortunately, it started happening again, and the frequency of occurrences increased to the point where it wouldn't even get through a boot sequence. I swapped video cards, pulled RAM, and even swapped the processor (since I found one for $20ish), to no avail. My last effort was replacing the power supply, since I figured if I had to replace the motherboard I'd need one anyway. Fortunately, Fry's had a sale on the Antec Neopower 500 (for $65, no less!). Unfortunately, the new supply did nothing, but that just meant that I had an excuse to build positron Mk. VI.

Initially I really liked the abit IP35-Pro, but decided that spending that much on a motherboard wasn't worth it unless I was actually planning on running a FSB upwards of 500 MHz. Instead, I ended up getting a DFI LanParty DK P35-T2RS, which is a reasonably priced board that's another favorite for dual and quad core overclocking. Since I'm kind of cheap, I only sprang for an Allendale E4600, which should overclock by 30% with relative ease; I figure by the end of the year quads will be even cheaper and I'll trade up. I also picked up 4 Gb of RAM (a new personal best!) and a reasonably-priced GeForce 8800 GT board (thanks for catching me up on the NVidia chipset line, Wikipedia). For now, Mk. VI will inherit Mk. V's RAID array, and yes, I'm still running Mk. III's 18 Gb IBM Wide Ultra2 SCSI drive as the boot drive. Pretty soon I'll go to a small (30ish Gb) 10k RPM SATA drive for the boot and get four 500 Gb SATAs for a new RAID5 array.

Since I'm talking about positron, I think it's time for a retrospective:

  1. 1994: Pentium 133 MHz, 8 Mb RAM
  2. 1997: Pentium-MMX 233 MHz, 40 Mb RAM
  3. 1999: Dual Pentium II 450 MHz, 512 Mb RAM
  4. 2004: (July) Dual Pentium IIIs at 1 GHz replaced Mk. III's processors
  5. 2004: (October) Athlon64 3200+ (2.2 GHz), 1 Gb RAM
  6. 2008: Core2 Duo E4600 (2.4 GHz), 4 Gb RAM

Just brings a tear to your eye...


[ permalink | 2 comments ]

Fri, 30 May 2008

A-team pipevine dream

Phew, busy! It's tapeout season, so layout is life, and life less than layout.

A couple weeks ago one of the Pipevine Swallowtail caterpillars made his chrysalis on the frame of the porch door. I couldn't resist taking him inside and painstakingly hanging him with dental floss and tape from a piece of cardboard that I perforated and cut to fit in place of a mason jar lid. Well, last night my "hard" work paid off—he emerged! (Yes, "he," I checked the markings.) I know, this thread is worthless without pics. Sue me, my real digital camera wasn't charged and my phone has no flash, so taking pictures of him at night before letting him outside for his wings to dry wasn't happening.

Second... virtual insanity. Okay, not really, but another animal! Well, two, kind of. My younger sister moved to Austin, so she's going to stay at my house at least for the time being. With her came Hank, who is now Shockley's new best friend. I'll get pictures of them playing ASAP.

The other new animal was, erm, unexpected. Katherine and I talked a long time ago (before we got Shocks) about getting another cat, specifically a Turkish Van—a crazy swimming cat! Of course, we decided to get Shockley instead, so that never materialized. Well, a few days ago I was just randomly browsing through the Town Lake Animal Center website and was astounded to see that someone had turned in a Turkish Van!

It turns out that her elderly owner had died and passed the cat to one of her children. Unfortunately, they didn't want the cat because the kids were allergic, so they brought it to the shelter. Well, I figured I'd just go down and see this cat, mostly to meet one in person lest I decide in the future to get one. Upon further inquiry, it turned out that she'd already been there a month with absolutely no interested visitors (it's kitten season; everyone's going for a baby), and she was sad and emaciated. Long story short, she was super friendly and polydactylic (6 toes all around) and I'm a huge sucker. Oh yeah, and TLAC has to kill about 70% of the animals that end up there due to over-crowding.

We decided to name her Inara because the breed is from a region of Turkey that was ruled by the Hittites at one point. Also because we're nerds, Firefly is awesome, and Katherine insisted that Mnemosyne was too clumsy. I'll have more pictures up later; for now, here's her shelter portrait:


[ permalink | 2 comments ]

Wed, 21 May 2008

absentee blog-lord

Tapeout is getting in the way of entertaining you, faithful readers. Apologies.


Best of friends.

Ninja cat hides in bush.

Why do they have to do it on my porch?

I've got a bunch of Pipevine Swallowtail caterpillars in the yard.


[ permalink | 1 comment ]

Wed, 23 Apr 2008

hey Hillary


[ permalink | 0 comments (add one you lazy bastard!) ]

Wed, 16 Apr 2008

T + 12 weeks

See, he can stand up:


"I know kung fu."


"Show me."


pwned


[ permalink | 1 comment ]

Sun, 30 Mar 2008

weekend update

New pictures of the little one:


Loving that pig's ear.

Tired after herding the soccer ball.

What? I ain't sayin' nothin'.


[ permalink | 3 comments ]

Mon, 24 Mar 2008

puppy update

I got the puppy Saturday as planned; he's adorable and very smart. In the end the names came down to Shockley or Tycho, and I decided to go with Shockley despite Katherine's preference for Tycho.

I'm not 100% sure yet, but I'm leaning towards feeding him a raw diet because it's better for him, I have backyard space in which to feed him, and he doesn't seem altogether impressed with dry food at the moment.

Meanwhile, the cats are divided in their reaction. Anya is just pissed that we brought another thing into her territory (especially at me, because I'm the one who carried him into the house). If I go near her she'll grumble audibly, and if I pick her up she'll yowl and even hiss. She's not actually all that scared of him: she walked right up to him and sniffed him before deciding he was the enemy. Dinah, on the other hand, is a bit more affectionate since we brought the dog home, presumably in a bid to keep our attention. Meanwhile, she seems like she's trying to work up the courage to play with him. My guess is they'll eventually be best buds.


[ permalink | 2 comments ]

Thu, 20 Mar 2008

my new best friend

This Saturday I'm finally going to exercise one of the privileges of having a fenced back yard and my own house: I'm getting a puppy! That's him on the right. He's a Pembroke Welsh Corgi and is 8 weeks old today.

Though I'm not 100% on the name yet, I believe the leading candidate is Shockley (especially since this has been my planned dog name for approximately forever). Other possibilities include Ampere, Faraday, Heaviside, and Rayleigh. Also, since he's Welsh, I'm considering Aneirin. Katherine has suggested Thorin (since "Corgi" is believed by some to be derived from the Welsh phrase for "dwarf dog"), Panama (imagine yelling after your dog in your best David Lee Roth impression), and Goro, but I'm not particularly partial to any of them.

Obviously I'll post more pictures as soon as they're available (hopefully ones where he looks less like Tommy Chong after a bender). In the meantime, please cloud the name issue with more suggestions!


[ permalink | 0 comments (add one you lazy bastard!) ]

Sun, 16 Mar 2008

can you back it up? no, no, that box... back it up

After a hard drive crash scare on proton (my colo machine) earlier this week (no data lost, fortunately!), I decided it was time to get serious about regular backups.

I did a bit of research and initially settled on Bacula, but because of licensing issues the Debian packages do not link to OpenSSL. This means that I can't encrypt even the handshaking, let alone the data transfer, between client (proton) and backup server (positron).

After a little more searching, I found BoxBackup, a solution geared towards backing up across a WAN. It uses SSL/TLS authentication: the server has a signing key and clients must generate keys and then have them signed with the server key before they can connect. On top of that, each client has another key it uses to encrypt the data it stores on the backup server so that it's transmitted and stored securely, and clients can be sure that their data is secure even from the backup server's admins.

Setup was a breeze (somewhat simpler than Bacula, though neither is particularly difficult), and while the initial 1.6Gb of data was somewhat unpleasant to transfer over my DSL connection, I expect that the incremental change data should not unduly load my network connection.

Now go set up your backup server already.


[ permalink | 2 comments ]

Wed, 05 Mar 2008

adventures in democracy

or, Precinct Captain Sam(ir)

Yesterday was primary day here in Texas. Most of the time the primary results here are meaningless, but this year the Obama-Hillary race is hot and every delegate counts. Thus, I was determined to do my civic duty and vote. Early in the morning, after dropping Katherine off at her lab, I headed to the middle school near my house that served as the voting place for my precinct. Unfortunately, when I got to the head of the line, it turned out that I was still registered in a different precinct—the one I'd been in last election, a 20+ minute drive away. I determined that I'd go vote around 6:00p and wait around to take part in the caucus at 7:15p (yes, Texas has both).

I arrived at the polling place around 6:30p, well in time to get in the doors (which closed at 7:00p) and vote. Since there were only three voting machines, the people who were in the voting place at 7:00p took until almost 8:00p to finish their voting. After that, we waited for over an hour before they were finished "closing the books," as they told us. Apparently some time during that hour they got scared that the 150 people waiting around to caucus would get rowdy, because 6 police officers showed up—you know, to keep the peace.

Now it got interesting. The dude came out with the caucus folder and asked who the Precinct Chair was. Turns out, there was no precinct chair, at which point it became rule of the unlame—in this case, me.

After appointing a Secretary pro tempore, deputizing a bunch of people to run the sign-in sheets (despite starting almost 2 hours late, we still had over 100 people caucusing!), and getting everyone organized and signed in, I explained the process of the caucus meeting to everyone and (as prescribed by procedure) called for the election of a new Chair and Secretary. Now, whereas I was pro-Obama and our temporary Secretary was pro-Clinton, the roles switched: the Chair was a Clinton campaign volunteer (who turned out to be a nice guy once he calmed down a bit) and the Secretary was pro-Obama. Such was the tone for the rest of the meeting: I worked through the sign-in sheets checking voter ID numbers, counted the votes, and computed the delegates, all with oversight from the Clinton camp. Then a Clinton person independently verified my results with oversight from an Obama supporter.

Things got a little hairy because we couldn't verify the identities of two of the people who had signed in, but I moved successfully that we compute everything with and without those two votes to determine if it made a difference in how the delegates were assigned. If it did not, we resolved, we would simply count them (to avoid having to go through the process of striking votes) and proceed. Luckily, the delegates were the same by both counts.

Finally, we got to the fun part: picking the 8 Obama and 5 Clinton delegates to the county caucus (plus alternates). By then we were down to fewer than 30 people, so it was really just a matter of determining who wanted to be a delegate and then convincing the rest of the people that being an alternate probably wouldn't actually entail any work. At midnight—three hours after starting the whole process—we'd finished.

Who knew that dispensing democracy would remind me so much of running a Random Hall general election? For that matter, who knew Robert's Rules of Order would come in handy when arguing with anyone other than Roger Ford or JHawk?


[ permalink | 1 comment ]

Fri, 29 Feb 2008

white event

Tonight I was playing around with Octave et al studying the frequency content of sequences generated by a 16-bit LFSR as a function of its feedback polynomial. Using a random selection from Philip Koopman's list of feedback polynomials that produce maximal 16-bit LFSRs, I generated the corresponding sequence and plotted its FFT in Octave.

What I found, effectively, is that more terms in the feedback polynomial whitens the sequence rather substantially. For example, a short feedback polynomial (0x8148) produces the following spectrum:

On the other hand, the spectrum for 0xfff6 looks like this:

This suggests that feedback polynomials with lots of terms are better for dithering sequences. The downside of this, of course, is that each term requires an additional XOR. Fortunately, if you use a Galois LFSR the computation delay is independent of the number of terms.

In case you're curious (more or less identical to what's in the Wikipedia article):

#include <stdio.h>
#include <stdint.h>

int main(int argc, char **argv)
{
        uint16_t poly;
        uint16_t lfsr = 1;
        uint16_t period = 0;

        if (argc > 1) { poly = (uint16_t) strtoul(argv[1],NULL,0); }
        else { poly = 0xb400; }


        do {
                lfsr = (lfsr >> 1) ^ (-(lfsr & 1) & poly);
                printf("%d\n",lfsr);
        } while (lfsr != 1);
}

All the data, code, et cetera is also available.


[ permalink | 1 comment ]

Mon, 11 Feb 2008

coincident queuage

Over the weekend I finally took the time to code up a little hack to use my AirLinkTek MediaGate MG-35 as the playback mechanism for MP3q. Basically, my solution was to keep the MP3q server running on positron, but to configure the playwrapper.sh script (for those of you who have jacked around with MP3q in the past, you know what I'm talking about) to connect to the MG-35 and start playback.

The default MG-35 firmware has no means by which to do this, but the kind folks over at the mg-35_firmware_mods Yahoo! group have a hacked version that runs a telnet server. Naturally, I'm lazy and don't want to assemble a MIPS uClinux build toolchain, so I just had to make playwrapper.sh smart enough to connect, make sure that positron was mounted, and start playback via telnet. Simple! (A good bit of information about the mp3 player executable on the MG-35 was also gleaned from the mediagate wiki.)

In case any of you want it, you're welcome to the whole MP3q shebang. I'm not really interested in providing tech support for it, so probably if you write to ask questions I'll just berate you for not "getting it." Or maybe just ignore you. Something like that.

As for strange coincidences: my blog is configured such that it always shows the 25 most recent entries on the front page. As a result, each post bumps an old one off the bottom of the list. Strangely, the post that this one is bumping off the post from a bit over a year ago wherein I mentioned that I had found the MG-35 and was intending to make it work with MP3q. A year of good intentions later, it's quite a surprise I'm not already in hell.


[ permalink | 0 comments (add one you lazy bastard!) ]

Sat, 09 Feb 2008

voyage of rediscovery

So it turns out that my discussion yesterday is (as you would expect) a well known one among those who build digital filters. There is even some terminology to go along with it.

The representation of numbers as plus or minus a fractional power of two is effectively canonical signed digit representation, and while my algorithm doesn't explicitly guarantee canonical results, it does so implicitly by minimizing the (log-wise) error in each step. It should be obvious that CSD is more efficient than two's complement at representing numbers, since digits are ternary (0,+,-) rather than binary.


[ permalink | 0 comments (add one you lazy bastard!) ]

Fri, 08 Feb 2008

multiplication is hard, let's go adding

I was considering this problem the other day, and while it's simple to arrive at a solution, I rather like my particular solution. Thus:

Let's say that you want to implement a digital filter of the form

y[n] = Σm=0..N Am⋅x[n-m] + Σk=1..L Bk⋅y[n-k]

such that Am and Bk are arbitrary precision constants. An example is this 2nd order Chebyshev(1) filter:

y[n] = .0027417⋅x[n] + .0054834⋅x[n-1] + .0027417⋅x[n-2] + 1.90020⋅y[n-1] - .91970⋅y[n-2]

(this filter is the result of the octave cheby1() function). An obvious way of doing this is to build some number of multipliers and adders to compute each term. But it's also possible to do this with only an adder as long as we are allowed to take time to do it. The way we do this is by expressing the constant coefficients as sums of powers of two and then do shifts and addition on the variables. For example,

.75⋅x = x - .25⋅x = x - x>>2

.75 is obviously a contrived example, but in general how do I come up with a representation of a number as such a sum? The simplest way I can think of is to express the number in fixed point binary with a chosen precision and then use the bits as a guide. Consider computing .718282 (the fractional portion of e) to 10 bits.

.718282 ⋅ 210 ≅ 736 = 0b101101111

Since I'm using fixed point 0.10 notation, the nth bit from the left represents 2-n. The bits that are 0 are effectively the missing fractional pieces, so I quickly surmise that

.718282 ≅ (1 - 1/1024) - 1/4 - 1/32

(The reason I start with (1 - 1/1024) is because 1 is not actually representable in 0.10 notation; the largest possible number is 1 - 1/1024. If you ignore this subtraction, you will be accurate to 9 bits instead of 10, so you can always just produce the result you want by computing to one more bit than necessary and dropping this correction factor.)

This works great! Let's do another one, say, π/4.

π/4 ≅ .7853982
.7853982 ⋅ 210 ≅ 804 = 0b1100100100
∴ π/4 ≅ (1 - 1/1024) - 1/8 - 1/16 - 1/64 - 1/128 - 1/512 - 1/1024
= 1 - 1/8 - 1/16 - 1/64 - 1/128 - 1/256

Ugh! That is a helluva lot of subtractions. Why so many? Note that .7853982 is just slightly greater than .75, and thus a better way to approximate this would have been to subtract .25 and then start adding small correction factors instead of sticking strictly to subtraction. What we've uncovered is that our initial algorithm, while yielding correct results, is very suboptimal.

How can we improve it? Well, in order to get to the desired accuracy in the fewest number of steps, clearly we want to take the biggest chunk possible out of the error term. This implies that we want an iterative algorithm that makes a guess, then computes the error, then approximates the error as a power of two and recomputes the approximation:

do {
    error = estimate - number
    eapprox = sign(error) ⋅ 2round(log2(abs(error)))
    estimate = estimate - eapprox
} while ( error > tolerance )

Now, running this algorithm to the same precision on π/4 yields

π/4 ≅ 1 - 1/4 + 1/32 + 1/256

I'm sure there's some way of doing this from the fixed point trickery above as well. Let's call that an exercise for the reader.


[ permalink | 0 comments (add one you lazy bastard!) ]

Wed, 23 Jan 2008

Maxwellian riposte

A couple days ago I gave a talk at the company's technical symposium on a power converter. On one slide, I discussed the classic conundrum of energy loss in charging a capacitor. In my discussion of this, I claimed that even if I have a perfect conductor, the energy loss can be understood as having been radiated away from the circuit because of the (infinite, in the ideal case) speed at which the capacitor E fields change.

A member of the audience came up to me after my talk and told me that he disagreed with my summary of the situation, and that instead one need only postulate a resistance in series with the capacitors the limit of whose value approaches zero. I replied that while that model of the circuit seemed a valid one, it did nothing to invalidate my explanation.

After a bit of thinking, some digging through my old E&M textbooks, and a bit of calculation, I concluded that I was right, and was determined to prove it. Gautham and Ion suggested that I might also check if anyone had published a paper on this question, since it is such an interesting one, and lo and behold, someone had! (see links below)

Here, then, is the response I wrote to the disbelieving fellow:

D___ (and cc: recipients, who had a stake in at least parts of the
conversation):

After our discussion yesterday about the problem of cap-to-cap energy
transfer, I took some time to sort out the problem and have concluded
that, in essence, we are both correct (literally, the full answer is a
linear combination of our claims, though with a rather dissatisfying
caveat).

The best treatment of the subject in the literature I've been able to
find on short notice is from Mita and Boufaida:
	K. Mita and M. Boufaida. "Ideal capacitor circuits and energy
conservation."  American Journal of Physics, Volume 67, Issue 8, pp
737-739, August 1999.

It's not available for free from their website, but I was able to obtain
a copy (along with a note in response and a quick erratum) via the MIT
Libraries:

	http://web.jfet.org/~kwantam/AJP000737.pdf
	http://web.jfet.org/~kwantam/AJP000576.pdf
		(quick erratum; see p. 3 of the PDF)
	http://web.jfet.org/~kwantam/AJP000668.pdf
		(beginning on p. 3 of the PDF, see comment)

In brief, your solution to the problem is one possibility, mine is an
alternative one, and they can be combined into a third.  The solution
comes down to this (and here is the disappointing caveat): in order for
the question to be coherent, there _must_ be a resistance or inductive
reactance in the circuit; no solution is possible otherwise (note,
however, that while there is in fact energy associated with the
acceleration of the electrons from one plate to the other, it does not
serve to explain the energy loss).  So we have two choices:

(1) assume electro- and magnetoquasistatic behavior (viz., no
magnetization or displacement current), in which case we insert an
infinitesimal resistance in series with the capacitors and all energy is
dissipated therein, or

(2) instead insert an inductance into the circuit, in which case the
energy is still fully accounted for, though the resultant waveforms are
dependent on the inductance (i.e., the area of the enclosed loop) and
its Q.

A few comments on what I proposed yesterday, which amounts to the second
case: 

First, a finite inductor Q can be explained either by resistance in the
windings or by flux linkage to "the outside world."  You'll note that
the former is simply a generalized combination of (1) and (2), whereas
the latter admits the possibility of a cap-cap loop with precisely zero
resistance but which is either magnetically coupled to a parasitic loop
or via a lossy medium.  If we combine these ideas, we arrive at a fully
generalized picture of the circuit: two capacitors, a real resistor, and
an ideal transformer with a nonzero magnetizing inductance the secondary
of which is terminated on a resistor.  We can vary any element with
impunity as long as we are careful to keep some nonzero impedance in
series with the capacitors.

Second, in retrospect I was too quick in agreeing to your claim that as
R->0 we can always claim that all of the energy is dissipated therein.
While I made some small noise about quasistatic approximations and
problems with KCL/KVL, I wasn't rigorous enough in my objection.  More
properly stated, it is this: as R->0, we have to be careful about when
KCL and KVL break down.  If R*Ctot becomes very fast compared to l/c (l
= length of the loop, c = speed of light), then the resistor no longer
explains the power dissipation because at this point we can no longer
neglect the inductance associated with the loop (and thus we end up with
the generalized combination of (1) and (2) as stated above).  So the
"discontinuity" at R=0 in my explanation does not exist!  Rather, the
loss from the resistor is simply dominated at smaller scales by the
inductance inherent in the loop.

Finally, I claim that while both of us are correct, my answer is more
satisfying given the way I posed the question, to wit, a perfectly
lossless capacitive circuit unfettered by the restrictions of any
quasistatic approximations.  In this case, we cannot possibly get around
the fact that the loop has some dimension associated with it (else we
wouldn't have capacitors, epsilon*A/l et cetera), but I can easily
appeal to a "perfect conductor" (rho=0, E=0, H=0) without any
restriction on the length of the wires.  In a sense, inductance is just
more fundamental to Maxwell's equations than resistance.

Best regards,

-=rsw

You should note that the last PDF above also has an interesting writeup called "Fourier transform solution to the semi-infinite resistance ladder."


[ permalink | 2 comments ]

Mon, 31 Dec 2007

game, set, match

Here's the final regular season results from the power ranker. I survived Giants stadium, and boy was that a helluva game. Dayum.

combined              	offense               	defense               
NWE	100.000        	NWE	100.000        	IND	100.000        
IND	83.550        	DAL	85.473        	PIT	97.353        
GNB	81.437        	IND	84.660        	TAM	96.165        
DAL	81.025        	GNB	82.420        	NWE	94.391        
JAC	69.791        	JAC	80.393        	SDG	92.502        
SDG	69.429        	SDG	79.457        	PHI	88.679        
PIT	63.344        	CLE	77.873        	GNB	87.723        
SEA	61.201        	ARI	77.778        	TEN	87.319        
NYG	60.911        	PIT	76.488        	SEA	87.184        
TEN	60.020        	HOU	76.419        	WAS	84.996        
CLE	59.480        	SEA	76.101        	JAC	84.807        
WAS	55.929        	NOR	75.835        	MIN	81.655        
TAM	54.309        	NYG	75.481        	DAL	77.984        
PHI	49.444        	CIN	75.443        	KAN	73.306        
MIN	47.786        	MIN	73.434        	BUF	72.526        
HOU	46.584        	DET	71.618        	CHI	70.148        
ARI	44.346        	PHI	69.812        	NYG	69.974        
CHI	40.076        	WAS	69.787        	CAR	69.706        
CIN	39.276        	CHI	69.706        	NYJ	68.327        
NOR	38.512        	TAM	68.463        	SFO	62.909        
DET	38.176        	DEN	68.353        	BAL	60.311        
DEN	37.230        	TEN	64.535        	CLE	57.525        
BUF	37.228        	OAK	61.328        	HOU	57.233        
CAR	36.631        	BAL	60.510        	CIN	54.852        
BAL	24.038        	MIA	59.189        	OAK	54.015        
SFO	19.305        	NYJ	59.021        	NOR	53.580        
NYJ	19.274        	CAR	58.823        	DEN	49.725        
OAK	17.474        	STL	57.956        	ARI	47.336        
KAN	17.081        	ATL	57.815        	ATL	46.960        
ATL	15.204        	BUF	56.295        	MIA	42.650        
STL	8.993        	KAN	52.336        	STL	41.817        
MIA	0.000        	SFO	50.157        	DET	40.666        

passing offense       	passing defense       	rushing offense       	rushing defense       
NWE	100.000        	IND	100.000        	MIN	100.000        	MIN	100.000        
NOR	93.634        	TAM	89.678        	JAC	89.477        	BAL	92.623        
GNB	92.761        	PIT	85.517        	PIT	87.538        	PIT	79.423        
DAL	89.694        	MIA	77.027        	NYG	87.413        	WAS	79.171        
CIN	89.081        	KAN	74.569        	TEN	86.048        	TEN	76.518        
SEA	87.335        	NWE	72.792        	OAK	84.324        	DAL	74.625        
DET	86.265        	DEN	69.777        	SDG	82.984        	PHI	72.964        
ARI	86.077        	OAK	69.680        	PHI	82.648        	JAC	72.647        
HOU	85.537        	JAC	68.830        	DEN	81.762        	IND	72.441        
IND	84.744        	NYJ	68.516        	WAS	79.345        	NYG	70.000        
PHI	83.881        	TEN	67.531        	TAM	79.289        	NWE	69.303        
DEN	81.794        	NYG	63.236        	CAR	78.041        	ARI	66.994        
WAS	79.591        	CAR	58.293        	NWE	77.795        	GNB	63.531        
CLE	79.012        	PHI	57.981        	CLE	76.979        	NOR	62.602        
TAM	77.258        	DAL	57.626        	BUF	76.736        	SEA	61.745        
CHI	77.072        	SDG	57.449        	BAL	76.636        	SDG	60.815        
ATL	76.672        	WAS	57.438        	DAL	75.120        	TAM	55.692        
STL	75.370        	GNB	57.400        	NYJ	73.573        	CAR	53.090        
KAN	74.661        	ARI	56.065        	IND	71.723        	HOU	52.057        
NYG	73.790        	SEA	52.650        	SEA	71.206        	STL	47.466        
JAC	73.105        	CLE	51.635        	GNB	69.803        	SFO	45.150        
PIT	72.632        	BAL	50.674        	HOU	69.385        	CIN	44.750        
BAL	72.257        	STL	48.888        	MIA	69.360        	CHI	42.634        
MIA	72.118        	SFO	47.536        	CIN	68.861        	CLE	42.156        
NYJ	72.025        	ATL	46.576        	ATL	68.459        	BUF	40.356        
SDG	71.901        	CHI	46.003        	STL	68.373        	ATL	35.789        
TEN	69.872        	HOU	42.910        	ARI	67.033        	KAN	33.719        
CAR	66.601        	CIN	41.918        	SFO	66.693        	DET	32.676        
MIN	66.389        	BUF	41.319        	NOR	65.671        	NYJ	28.502        
BUF	65.115        	NOR	33.085        	DET	62.578        	DEN	21.225        
OAK	64.461        	DET	25.667        	CHI	61.161        	OAK	16.510        
SFO	58.124        	MIN	22.427        	KAN	57.096        	MIA	10.130        

...and the strength of schedule computation from this week. Note that since New England has San Francisco's 1st round pick, we would have preferred the Chiefs and the Raiders to win this week, but hey, we'll take #7 overall.

NWE	16- 0	120-136 (.4687)		120-120 (.5)		120-136 (.4687)		120-120 (.5)
IND	13- 3	132-124 (.5156)		129-111 (.5375)		 95-113 (.4567)		 95-100 (.4872)
DAL	13- 3	127-129 (.4961)		124-116 (.5167)		 94-114 (.4519)		 94-101 (.4821)
GNB	13- 3	120-136 (.4687)		117-123 (.4875)		 93-115 (.4471)		 93-102 (.4769)
JAC	11- 5	132-124 (.5156)		127-113 (.5292)		 81- 95 (.4602)		 81- 84 (.4909)
SDG	11- 5	128-128 (.5)		123-117 (.5125)		 76-100 (.4318)		 76- 89 (.4606)
NYG	10- 6	132-124 (.5156)		126-114 (.525)		 60-100 (.375)		 60- 90 (.4)
TEN	10- 6	128-128 (.5)		122-118 (.5083)		 70- 90 (.4375)		 70- 80 (.4667)
PIT	10- 6	116-140 (.4531)		110-130 (.4583)		 65- 95 (.4062)		 65- 85 (.4333)
CLE	10- 6	110-146 (.4297)		104-136 (.4333)		 55-105 (.3437)		 55- 95 (.3667)
SEA	10- 6	106-150 (.4141)		100-140 (.4167)		 60-100 (.375)		 60- 90 (.4)
WAS	 9- 7	142-114 (.5547)		135-105 (.5625)		 66- 78 (.4583)		 66- 69 (.4889)
TAM	 9- 7	120-136 (.4687)		113-127 (.4708)		 59- 85 (.4097)		 59- 76 (.437)
PHI	 8- 8	144-112 (.5625)		136-104 (.5667)		 56- 72 (.4375)		 56- 64 (.4667)
HOU	 8- 8	132-124 (.5156)		124-116 (.5167)		 50- 78 (.3906)		 50- 70 (.4167)
MIN	 8- 8	129-127 (.5039)		121-119 (.5042)		 55- 73 (.4297)		 55- 65 (.4583)
ARI	 8- 8	111-145 (.4336)		103-137 (.4292)		 54- 74 (.4219)		 54- 66 (.45)
CHI	 7- 9	139-117 (.543)		130-110 (.5417)		 56- 56 (.5)		 56- 49 (.5333)
DET	 7- 9	139-117 (.543)		130-110 (.5417)		 46- 66 (.4107)		 46- 59 (.4381)
CAR	 7- 9	134-122 (.5234)		125-115 (.5208)		 46- 66 (.4107)		 46- 59 (.4381)
BUF	 7- 9	132-124 (.5156)		123-117 (.5125)		 31- 81 (.2768)		 31- 74 (.2952)
DEN	 7- 9	132-124 (.5156)		123-117 (.5125)		 47- 65 (.4196)		 47- 58 (.4476)
NOR	 7- 9	123-133 (.4805)		114-126 (.475)		 49- 63 (.4375)		 49- 56 (.4667)
CIN	 7- 9	118-138 (.4609)		109-131 (.4542)		 38- 74 (.3393)		 38- 67 (.3619)
BAL	 5-11	132-124 (.5156)		121-119 (.5042)		 30- 50 (.375)		 30- 45 (.4)
SFO	 5-11	119-137 (.4648)		108-132 (.45)		 35- 45 (.4375)		 35- 40 (.4667)
NYJ	 4-12	134-122 (.5234)		122-118 (.5083)		 16- 48 (.25)		 16- 44 (.2667)
KAN	 4-12	132-124 (.5156)		120-120 (.5)		 30- 34 (.4687)		 30- 30 (.5)
OAK	 4-12	132-124 (.5156)		120-120 (.5)		 22- 42 (.3437)		 22- 38 (.3667)
ATL	 4-12	132-124 (.5156)		120-120 (.5)		 30- 34 (.4687)		 30- 30 (.5)
STL	 3-13	131-125 (.5117)		118-122 (.4917)		 16- 32 (.3333)		 16- 29 (.3556)
MIA	 1-15	138-118 (.5391)		123-117 (.5125)		  5- 11 (.3125)		  5- 10 (.3333)

Merry new year! Have some new code and data (with a bonus, too!)


[ permalink | 0 comments (add one you lazy bastard!) ]

Mon, 24 Dec 2007

an early present

A new feature this week! See strength of schedule analysis, below.

Also, note New England's move up the defensive rank this week. Hot.

combined              	offense               	defense               
NWE	100.000        	NWE	100.000        	TAM	100.000        
IND	88.436        	DAL	88.573        	PIT	99.415        
DAL	86.782        	IND	87.421        	NWE	98.846        
GNB	80.736        	GNB	82.202        	IND	96.740        
JAC	75.168        	JAC	80.541        	SEA	95.912        
SDG	68.132        	SDG	79.225        	JAC	91.079        
PIT	67.855        	CLE	79.111        	SDG	90.187        
SEA	66.095        	PIT	77.233        	GNB	83.067        
NYG	64.852        	NOR	76.276        	PHI	82.850        
TAM	58.828        	ARI	75.498        	TEN	80.681        
TEN	56.789        	MIN	74.401        	MIN	80.314        
CLE	56.718        	SEA	74.212        	DAL	78.042        
WAS	51.723        	CIN	73.818        	WAS	77.546        
MIN	51.586        	HOU	73.814        	NYG	71.733        
PHI	45.870        	NYG	73.599        	CHI	69.183        
HOU	42.632        	DET	73.079        	BUF	68.755        
NOR	42.057        	PHI	70.841        	KAN	68.433        
DET	41.323        	WAS	69.036        	CAR	67.810        
BUF	40.461        	TAM	68.515        	NYJ	62.419        
ARI	40.166        	CHI	68.271        	SFO	58.647        
CHI	36.059        	DEN	68.200        	BAL	57.390        
CIN	35.342        	TEN	65.152        	HOU	56.162        
DEN	33.238        	OAK	61.394        	NOR	54.164        
CAR	32.540        	NYJ	59.973        	CIN	53.944        
SFO	21.324        	BAL	58.677        	OAK	53.517        
BAL	18.968        	MIA	58.019        	CLE	49.687        
KAN	18.287        	STL	57.996        	ATL	49.320        
OAK	18.168        	BUF	57.756        	DEN	45.991        
NYJ	14.726        	CAR	56.270        	STL	45.538        
STL	10.441        	KAN	53.330        	MIA	44.466        
ATL	10.132        	ATL	52.623        	ARI	43.372        
MIA	0.000        	SFO	51.803        	DET	40.314        

passing offense       	passing defense       	rushing offense       	rushing defense       
NWE	100.000        	IND	100.000        	MIN	100.000        	MIN	100.000        
GNB	94.996        	TAM	84.417        	JAC	90.704        	BAL	85.323        
NOR	93.844        	PIT	79.103        	PIT	89.889        	PIT	83.172        
DAL	92.275        	MIA	78.007        	NYG	88.749        	JAC	76.069        
CIN	88.368        	NWE	70.465        	TEN	86.960        	DAL	74.292        
HOU	88.199        	KAN	67.352        	OAK	84.321        	PHI	73.169        
IND	86.852        	NYG	64.381        	PHI	84.133        	TEN	69.497        
DET	86.829        	DEN	63.881        	SDG	83.429        	IND	69.070        
SEA	86.469        	OAK	62.337        	DEN	81.087        	WAS	68.784        
ARI	85.763        	NYJ	62.214        	NWE	79.624        	NWE	64.526        
PHI	83.088        	TEN	60.451        	TAM	79.599        	NYG	62.889        
DEN	82.475        	JAC	60.383        	DAL	78.509        	ARI	62.110        
WAS	80.182        	GNB	54.503        	WAS	78.468        	SEA	60.946        
CLE	80.169        	DAL	53.685        	CAR	75.713        	NOR	59.875        
CHI	78.236        	CAR	53.482        	BUF	75.323        	SDG	59.325        
TAM	78.001        	SDG	53.170        	CLE	74.956        	TAM	58.587        
STL	76.698        	PHI	50.588        	BAL	73.695        	GNB	57.017        
ATL	76.660        	WAS	49.755        	IND	73.615        	CAR	50.521        
KAN	75.773        	SEA	49.577        	NYJ	70.209        	HOU	48.562        
NYJ	73.624        	ARI	49.276        	CIN	69.668        	SFO	46.378        
SDG	73.476        	STL	48.063        	MIA	69.505        	STL	46.176        
NYG	73.432        	ATL	47.029        	STL	69.033        	CIN	40.586        
BAL	73.400        	BAL	46.799        	SEA	68.952        	CHI	40.244        
PIT	72.729        	CHI	45.059        	ATL	67.304        	CLE	40.184        
JAC	72.044        	SFO	41.995        	HOU	66.415        	DET	38.006        
MIA	71.632        	HOU	41.834        	ARI	66.105        	KAN	37.538        
TEN	68.602        	BUF	41.179        	SFO	65.996        	ATL	37.500        
CAR	67.101        	CLE	41.156        	GNB	65.693        	BUF	35.123        
MIN	67.065        	CIN	39.393        	NOR	65.288        	NYJ	22.827        
BUF	66.372        	NOR	26.865        	DET	63.978        	DEN	21.607        
OAK	64.299        	DET	19.035        	CHI	60.565        	OAK	14.164        
SFO	60.235        	MIN	18.631        	KAN	57.978        	MIA	5.477        

...and a standard strength of schedule/victory analysis. In each column, the second ratio is strength of schedule excluding the team in question.

		SoS						SoV
		incl			excl			incl			excl
NWE	15- 0	102-123 (.4533)		102-108 (.4857)		102-123 (.4533)		102-108 (.4857)
IND	13- 2	113-112 (.5022)		111- 99 (.5286)		 88-107 (.4513)		 88- 94 (.4835)
DAL	13- 2	110-115 (.4889)		108-102 (.5143)		 88-107 (.4513)		 88- 94 (.4835)
GNB	12- 3	106-119 (.4711)		103-107 (.4905)		 81- 99 (.45)		 81- 87 (.4821)
JAC	11- 4	117-108 (.52)		113- 97 (.5381)		 75- 90 (.4545)		 75- 79 (.487)
SDG	10- 5	116-109 (.5156)		111- 99 (.5286)		 66- 84 (.44)		 66- 74 (.4714)
NYG	10- 5	108-117 (.48)		103-107 (.4905)		 54- 96 (.36)		 54- 86 (.3857)
PIT	10- 5	102-123 (.4533)		 97-113 (.4619)		 60- 90 (.4)		 60- 80 (.4286)
SEA	10- 5	 94-131 (.4178)		 89-121 (.4238)		 55- 95 (.3667)		 55- 85 (.3929)
TEN	 9- 6	107-118 (.4756)		101-109 (.481)		 52- 83 (.3852)		 52- 74 (.4127)
TAM	 9- 6	106-119 (.4711)		100-110 (.4762)		 53- 82 (.3926)		 53- 73 (.4206)
CLE	 9- 6	 97-128 (.4311)		 91-119 (.4333)		 45- 90 (.3333)		 45- 81 (.3571)
WAS	 8- 7	122-103 (.5422)		115- 95 (.5476)		 49- 71 (.4083)		 49- 63 (.4375)
MIN	 8- 7	114-111 (.5067)		107-103 (.5095)		 51- 69 (.425)		 51- 61 (.4554)
PHI	 7- 8	131- 94 (.5822)		123- 87 (.5857)		 47- 58 (.4476)		 47- 51 (.4796)
DET	 7- 8	118-107 (.5244)		110-100 (.5238)		 43- 62 (.4095)		 43- 55 (.4388)
BUF	 7- 8	115-110 (.5111)		107-103 (.5095)		 26- 79 (.2476)		 26- 72 (.2653)
HOU	 7- 8	114-111 (.5067)		106-104 (.5048)		 37- 68 (.3524)		 37- 61 (.3776)
NOR	 7- 8	108-117 (.48)		100-110 (.4762)		 45- 60 (.4286)		 45- 53 (.4592)
ARI	 7- 8	102-123 (.4533)		 94-116 (.4476)		 48- 57 (.4571)		 48- 50 (.4898)
CHI	 6- 9	126- 99 (.56)		117- 93 (.5571)		 45- 45 (.5)		 45- 39 (.5357)
CAR	 6- 9	119-106 (.5289)		110-100 (.5238)		 35- 55 (.3889)		 35- 49 (.4167)
DEN	 6- 9	118-107 (.5244)		109-101 (.519)		 38- 52 (.4222)		 38- 46 (.4524)
CIN	 6- 9	109-116 (.4844)		100-110 (.4762)		 32- 58 (.3556)		 32- 52 (.381)
SFO	 5-10	103-122 (.4578)		 93-117 (.4429)		 32- 43 (.4267)		 32- 38 (.4571)
KAN	 4-11	119-106 (.5289)		108-102 (.5143)		 28- 32 (.4667)		 28- 28 (.5)
BAL	 4-11	114-111 (.5067)		103-107 (.4905)		 18- 42 (.3)		 18- 38 (.3214)
OAK	 4-11	113-112 (.5022)		102-108 (.4857)		 20- 40 (.3333)		 20- 36 (.3571)
NYJ	 3-12	122-103 (.5422)		110-100 (.5238)		 12- 33 (.2667)		 12- 30 (.2857)
ATL	 3-12	117-108 (.52)		105-105 (.5)		 18- 27 (.4)		 18- 24 (.4286)
STL	 3-12	116-109 (.5156)		104-106 (.4952)		 15- 30 (.3333)		 15- 27 (.3571)
MIA	 1-14	122-103 (.5422)		108-102 (.5143)		  4- 11 (.2667)		  4- 10 (.2857)

New data and code.


[ permalink | 0 comments (add one you lazy bastard!) ]

Tue, 18 Dec 2007

ain't no dollar short

Only a couple weeks until James and I get our asses kicked at Giants stadium. I am psyched.

combined              	offense               	defense               
NWE	100.000        	NWE	100.000        	PIT	100.000        
IND	87.299        	DAL	88.799        	TAM	98.917        
GNB	86.205        	IND	85.330        	IND	92.640        
DAL	84.669        	GNB	83.911        	NWE	91.703        
JAC	73.349        	CLE	79.743        	SEA	87.818        
PIT	65.448        	SDG	78.730        	GNB	86.782        
SDG	65.237        	JAC	76.365        	JAC	85.521        
TAM	63.496        	NOR	75.080        	MIN	82.794        
SEA	62.470        	PIT	73.759        	SDG	81.548        
NYG	61.005        	HOU	73.652        	PHI	81.290        
CLE	60.814        	ARI	73.544        	WAS	75.354        
MIN	55.584        	MIN	73.393        	TEN	73.470        
TEN	54.100        	CIN	73.356        	DAL	73.289        
WAS	47.508        	SEA	72.628        	BUF	72.923        
NOR	46.339        	DET	71.634        	NYG	70.644        
HOU	46.132        	DEN	70.123        	KAN	68.614        
BUF	43.938        	NYG	69.883        	CAR	64.580        
PHI	41.405        	TAM	67.885        	CHI	62.336        
DET	37.476        	PHI	67.054        	OAK	60.647        
DEN	36.905        	TEN	65.821        	HOU	58.949        
ARI	36.097        	WAS	65.813        	NOR	57.761        
CAR	35.233        	CHI	64.574        	BAL	57.481        
CIN	31.052        	OAK	61.390        	NYJ	57.050        
CHI	29.838        	NYJ	60.897        	SFO	55.682        
BAL	21.616        	BAL	59.430        	ATL	49.940        
KAN	20.910        	MIA	58.659        	STL	49.883        
OAK	20.819        	CAR	55.887        	CIN	49.634        
NYJ	16.381        	BUF	55.583        	CLE	47.292        
SFO	16.207        	STL	55.171        	ARI	44.356        
ATL	12.770        	KAN	51.503        	DEN	44.241        
STL	12.403        	ATL	49.489        	MIA	43.679        
MIA	0.000        	SFO	49.243        	DET	38.718        

passing offense       	passing defense       	rushing offense       	rushing defense       
NWE	100.000        	IND	100.000        	MIN	100.000        	MIN	100.000        
GNB	95.962        	PIT	79.472        	JAC	87.437        	BAL	89.156        
NOR	92.751        	TAM	79.025        	PIT	87.391        	PIT	82.301        
DAL	91.153        	MIA	75.957        	TEN	85.633        	JAC	76.632        
CIN	89.608        	NWE	65.958        	OAK	82.962        	DAL	71.052        
DET	88.200        	OAK	63.291        	NYG	81.854        	PHI	70.034        
HOU	86.935        	DEN	62.230        	SDG	81.200        	TEN	66.995        
SEA	86.458        	KAN	61.423        	DEN	80.394        	IND	66.615        
IND	84.065        	TEN	60.448        	PHI	80.142        	WAS	66.328        
DEN	83.042        	NYG	60.094        	TAM	79.670        	NOR	66.022        
ARI	82.598        	NYJ	58.950        	WAS	76.645        	NWE	65.165        
PHI	81.692        	JAC	54.535        	NWE	75.908        	NYG	63.893        
CHI	79.333        	CAR	53.729        	DAL	75.667        	ARI	62.535        
CLE	78.697        	ARI	53.173        	CAR	75.336        	SEA	61.375        
WAS	78.428        	PHI	52.710        	BUF	73.295        	GNB	60.463        
STL	75.108        	ATL	52.535        	CLE	72.630        	SDG	58.627        
NYG	74.559        	DAL	50.783        	BAL	72.073        	TAM	58.546        
TAM	74.097        	WAS	49.806        	IND	71.520        	CAR	54.062        
ATL	73.731        	STL	49.785        	NYJ	69.837        	STL	50.192        
BAL	72.484        	GNB	48.819        	MIA	67.591        	HOU	50.092        
SDG	72.392        	SDG	48.783        	STL	67.535        	BUF	47.262        
KAN	72.163        	SFO	48.261        	CIN	66.045        	CLE	44.210        
NYJ	71.666        	SEA	47.689        	HOU	65.879        	SFO	43.750        
MIA	71.523        	HOU	46.095        	ATL	65.347        	CIN	43.061        
PIT	70.235        	BAL	44.803        	ARI	65.170        	CHI	42.099        
JAC	69.982        	CHI	41.370        	SEA	65.159        	KAN	40.649        
TEN	68.269        	CIN	39.863        	NOR	64.564        	ATL	36.255        
CAR	66.817        	CLE	36.129        	SFO	64.246        	DET	35.746        
BUF	66.186        	BUF	35.502        	GNB	62.915        	DEN	24.334        
MIN	65.263        	NOR	27.030        	DET	60.616        	NYJ	23.580        
OAK	64.555        	DET	24.301        	KAN	57.297        	OAK	20.169        
SFO	60.110        	MIN	20.745        	CHI	56.634        	MIA	11.090        

data


[ permalink | 0 comments (add one you lazy bastard!) ]

Mon, 10 Dec 2007

another one bites the dust

combined              	offense               	defense               
NWE	100.000        	NWE	100.000        	PIT	100.000        
DAL	89.822        	DAL	90.351        	TAM	88.205        
IND	85.988        	IND	84.798        	IND	86.466        
GNB	85.537        	GNB	81.785        	NWE	84.689        
PIT	70.829        	CLE	80.893        	JAC	82.309        
JAC	70.389        	SDG	73.729        	SEA	82.165        
SEA	67.774        	CIN	73.413        	GNB	81.664        
NYG	66.274        	JAC	73.301        	MIN	77.028        
SDG	62.794        	SEA	73.042        	SDG	75.722        
TAM	61.223        	NOR	72.558        	PHI	72.961        
CLE	58.273        	MIN	72.547        	TEN	69.547        
MIN	53.866        	ARI	71.913        	WAS	69.023        
TEN	51.696        	PIT	71.898        	NYG	68.940        
BUF	50.089        	DET	71.234        	KAN	67.700        
WAS	45.102        	HOU	70.902        	DAL	67.049        
DET	44.225        	DEN	70.225        	BUF	65.568        
NOR	44.069        	NYG	70.121        	CHI	59.727        
HOU	43.470        	PHI	67.383        	CAR	57.775        
DEN	42.949        	CHI	64.190        	OAK	57.319        
ARI	42.471        	TAM	63.836        	BAL	56.220        
PHI	38.986        	WAS	63.783        	NOR	55.836        
CIN	37.578        	TEN	63.013        	NYJ	53.734        
CHI	35.956        	NYJ	60.686        	HOU	53.401        
CAR	32.960        	OAK	60.501        	ATL	52.712        
BAL	27.529        	BAL	58.247        	STL	50.915        
KAN	26.223        	BUF	57.292        	SFO	50.896        
OAK	25.203        	MIA	55.988        	CIN	48.519        
NYJ	20.290        	CAR	55.010        	ARI	45.325        
ATL	17.745        	STL	53.917        	DET	45.202        
STL	17.203        	ATL	50.276        	DEN	44.802        
SFO	15.702        	KAN	49.480        	MIA	41.482        
MIA	0.000        	SFO	46.916        	CLE	38.969        

passing offense       	passing defense       	rushing offense       	rushing defense       
NWE	100.000        	IND	100.000        	MIN	100.000        	MIN	100.000        
GNB	94.333        	PIT	84.137        	PIT	87.012        	PIT	97.420        
DAL	89.831        	MIA	79.923        	TEN	83.947        	BAL	91.635        
NOR	89.249        	TAM	74.246        	JAC	82.651        	JAC	80.913        
CIN	87.234        	OAK	69.815        	DEN	81.322        	DAL	77.610        
HOU	85.129        	NWE	67.499        	OAK	81.046        	IND	73.253        
DET	84.721        	DEN	65.722        	NYG	80.249        	WAS	72.682        
SEA	84.116        	TEN	65.327        	PHI	78.770        	NYG	71.549        
IND	80.887        	KAN	64.569        	DAL	76.944        	GNB	69.906        
ARI	80.712        	NYG	61.741        	TAM	76.267        	PHI	69.780        
DEN	80.561        	ARI	60.900        	SDG	74.833        	TEN	69.354        
PHI	80.039        	NYJ	58.959        	NWE	74.644        	NOR	69.348        
CLE	78.268        	CAR	58.873        	CAR	74.187        	NWE	67.656        
CHI	77.909        	SDG	56.363        	WAS	74.142        	ARI	66.728        
WAS	77.033        	PHI	55.166        	BUF	72.550        	SEA	65.010        
ATL	74.958        	STL	53.878        	IND	72.450        	TAM	61.806        
TAM	73.956        	JAC	53.822        	NYJ	69.466        	SDG	55.332        
STL	73.046        	SFO	53.451        	BAL	69.402        	BUF	54.966        
NYG	72.805        	DAL	53.303        	CLE	69.001        	CAR	51.398        
SDG	71.389        	BAL	52.954        	MIA	67.490        	DET	49.282        
BAL	70.222        	SEA	52.131        	CIN	66.587        	CIN	49.059        
NYJ	70.222        	WAS	52.108        	SEA	66.133        	HOU	48.956        
PIT	69.720        	GNB	51.900        	ARI	63.863        	STL	48.484        
KAN	69.341        	HOU	50.959        	ATL	63.632        	CLE	46.298        
JAC	67.223        	ATL	50.854        	GNB	63.538        	CHI	45.395        
MIA	67.033        	CHI	46.767        	STL	63.282        	KAN	44.528        
TEN	65.902        	CIN	43.209        	NOR	62.548        	ATL	43.030        
BUF	65.133        	CLE	36.239        	HOU	62.476        	SFO	42.258        
CAR	63.854        	BUF	35.616        	DET	62.316        	DEN	28.574        
OAK	63.664        	NOR	30.694        	SFO	60.750        	NYJ	25.561        
MIN	61.666        	DET	24.997        	CHI	57.821        	OAK	16.917        
SFO	57.576        	MIN	22.588        	KAN	55.695        	MIA	14.288        

data


[ permalink | 1 comment ]

Mon, 03 Dec 2007

this just in

combined              	offense               	defense               
NWE	100.000        	NWE	100.000        	PIT	100.000        
DAL	90.507        	DAL	90.971        	TAM	86.841        
IND	86.448        	IND	82.543        	IND	82.682        
GNB	85.885        	CLE	81.880        	SEA	78.677        
PIT	76.479        	GNB	80.224        	NWE	77.681        
JAC	68.156        	CIN	74.689        	GNB	72.804        
TAM	67.674        	SDG	73.787        	JAC	72.382        
SEA	66.180        	PIT	73.372        	KAN	70.639        
NYG	64.851        	MIN	72.092        	SDG	70.372        
SDG	60.517        	ARI	72.084        	MIN	68.388        
TEN	56.809        	NYG	71.203        	PHI	66.943        
CLE	56.283        	JAC	70.971        	TEN	65.553        
MIN	50.736        	NOR	70.930        	DAL	64.920        
DET	48.348        	DET	70.273        	WAS	63.523        
ARI	47.582        	SEA	70.053        	NYG	62.167        
BUF	47.534        	HOU	69.722        	BUF	60.480        
PHI	42.574        	PHI	68.743        	BAL	58.636        
WAS	41.242        	DEN	66.839        	CAR	58.477        
NOR	40.163        	TAM	64.947        	OAK	57.653        
CHI	39.734        	CHI	64.663        	CHI	56.484        
HOU	38.863        	TEN	63.109        	ATL	52.720        
DEN	37.945        	WAS	62.939        	NYJ	49.916        
CAR	37.162        	OAK	62.553        	NOR	49.826        
CIN	33.551        	NYJ	61.115        	SFO	48.476        
BAL	29.581        	BAL	57.244        	ARI	47.807        
KAN	29.559        	CAR	57.119        	HOU	46.990        
OAK	27.067        	MIA	55.685        	STL	45.796        
NYJ	21.933        	STL	55.378        	MIA	43.547        
ATL	20.019        	BUF	53.070        	DET	42.019        
STL	19.278        	KAN	50.968        	CIN	41.075        
SFO	17.962        	ATL	50.371        	DEN	36.435        
MIA	0.000        	SFO	48.561        	CLE	34.285        

passing offense       	passing defense       	rushing offense       	rushing defense       
NWE	100.000        	IND	100.000        	MIN	100.000        	MIN	100.000        
GNB	96.504        	PIT	95.037        	PIT	83.290        	PIT	91.622        
DAL	91.780        	MIA	78.431        	TEN	82.026        	BAL	89.325        
CIN	91.160        	TAM	72.183        	OAK	80.749        	DAL	84.505        
NOR	90.006        	OAK	71.421        	NYG	79.076        	JAC	77.856        
HOU	88.265        	KAN	64.672        	JAC	79.019        	NYG	76.510        
DET	86.849        	NWE	64.545        	DAL	76.767        	NWE	74.867        
SEA	85.484        	TEN	63.420        	NWE	76.569        	IND	74.458        
PHI	83.287        	ARI	62.031        	TAM	76.462        	TEN	74.422        
DEN	82.284        	DEN	59.353        	DEN	76.343        	PHI	72.183        
IND	81.793        	CAR	59.140        	PHI	76.110        	WAS	70.761        
ARI	81.132        	NYG	57.082        	WAS	75.995        	GNB	69.724        
CLE	81.129        	NYJ	55.330        	CAR	75.053        	ARI	66.480        
CHI	78.003        	SEA	54.033        	IND	72.616        	NOR	65.643        
WAS	76.690        	WAS	53.429        	SDG	71.598        	SEA	61.743        
STL	76.215        	BAL	53.330        	BAL	67.947        	TAM	60.560        
ATL	75.242        	ATL	53.055        	MIA	67.556        	SDG	58.646        
TAM	75.193        	PHI	52.079        	NYJ	67.375        	CAR	58.085        
NYG	74.480        	DAL	51.102        	BUF	66.797        	STL	57.462        
SDG	73.072        	HOU	49.212        	CLE	65.702        	KAN	53.163        
BAL	72.700        	SDG	48.722        	SEA	65.219        	BUF	53.007        
KAN	72.635        	CHI	48.653        	ATL	64.673        	DET	49.062        
PIT	71.838        	STL	48.649        	ARI	64.130        	CIN	48.721        
NYJ	70.385        	SFO	48.507        	HOU	62.092        	CLE	48.330        
TEN	69.144        	GNB	45.945        	STL	61.921        	ATL	47.817        
MIA	68.023        	JAC	45.386        	CIN	60.957        	HOU	47.091        
CAR	67.313        	CIN	36.178        	SFO	59.643        	SFO	43.156        
JAC	67.216        	CLE	34.718        	NOR	58.761        	CHI	40.173        
BUF	66.815        	BUF	30.923        	GNB	58.724        	NYJ	29.473        
OAK	65.787        	NOR	28.577        	DET	57.450        	MIA	22.825        
MIN	63.250        	DET	20.790        	CHI	57.378        	OAK	22.712        
SFO	57.949        	MIN	16.881        	KAN	57.290        	DEN	22.168        

As always, new data available.


[ permalink | 0 comments (add one you lazy bastard!) ]

Tue, 27 Nov 2007

week 12 power rankings

combined              	offense               	defense               
NWE	100.000        	NWE	100.000        	PIT	100.000        
GNB	91.348        	DAL	88.412        	TAM	91.899        
DAL	87.502        	CLE	81.795        	IND	88.280        
IND	84.628        	IND	81.040        	SEA	83.732        
PIT	73.969        	GNB	78.505        	NWE	83.169        
JAC	73.190        	CIN	75.524        	GNB	80.832        
TAM	63.483        	SDG	72.373        	JAC	77.369        
SEA	61.943        	PIT	72.216        	KAN	74.473        
NYG	61.109        	DET	71.292        	PHI	72.405        
CLE	59.826        	ARI	70.420        	DAL	69.258        
SDG	56.212        	NYG	70.343        	SDG	69.141        
DET	53.405        	NOR	69.105        	TEN	67.777        
TEN	51.866        	JAC	68.731        	MIN	66.864        
PHI	45.569        	HOU	68.715        	WAS	64.877        
MIN	44.916        	MIN	67.397        	NYG	62.132        
WAS	44.288        	SEA	67.305        	BAL	61.330        
CHI	42.684        	PHI	66.754        	BUF	61.091        
NOR	42.629        	DEN	65.643        	OAK	59.663        
BUF	42.103        	CHI	64.351        	CAR	58.424        
HOU	41.820        	WAS	62.505        	CHI	58.162        
DEN	41.362        	TAM	62.311        	ATL	57.281        
ARI	41.339        	TEN	60.242        	SFO	53.944        
CIN	35.116        	OAK	58.616        	NOR	53.142        
KAN	32.132        	NYJ	55.344        	MIA	51.429        
CAR	30.489        	MIA	55.247        	HOU	50.821        
BAL	29.212        	BAL	53.785        	DET	49.637        
ATL	20.853        	CAR	52.832        	NYJ	49.264        
OAK	19.455        	STL	51.484        	ARI	48.391        
SFO	18.359        	BUF	51.433        	STL	45.438        
NYJ	14.322        	KAN	50.767        	CIN	42.556        
STL	11.407        	ATL	48.921        	DEN	41.844        
MIA	0.000        	SFO	47.145        	CLE	36.398        

passing offense       	passing defense       	rushing offense       	rushing defense       
NWE	100.000        	PIT	100.000        	MIN	100.000        	MIN	100.000        
GNB	96.487        	IND	93.316        	JAC	85.481        	PIT	96.717        
CIN	91.415        	MIA	84.576        	PIT	85.406        	BAL	95.448        
NOR	90.787        	OAK	75.990        	TEN	81.914        	DAL	93.793        
DAL	90.072        	TAM	73.950        	OAK	80.568        	NWE	87.075        
HOU	88.177        	NWE	69.465        	DEN	78.990        	TEN	81.780        
DET	86.451        	TEN	66.651        	WAS	78.721        	PHI	80.144        
IND	86.087        	KAN	65.019        	IND	78.708        	NYG	78.202        
SEA	85.777        	DEN	63.093        	NYG	78.328        	NOR	75.435        
CLE	85.650        	ATL	62.469        	DAL	78.313        	WAS	74.430        
ARI	85.513        	NYG	62.175        	NWE	78.269        	GNB	73.229        
PHI	82.731        	WAS	60.301        	PHI	76.086        	JAC	72.006        
DEN	81.538        	CAR	58.975        	TAM	74.879        	IND	68.346        
CHI	76.256        	STL	58.883        	CAR	73.957        	SEA	68.256        
WAS	76.106        	SEA	57.932        	MIA	71.569        	KAN	62.558        
NYG	74.211        	BAL	57.409        	CLE	71.393        	TAM	61.679        
SDG	73.406        	NYJ	55.063        	ARI	69.885        	STL	59.905        
STL	72.539        	HOU	54.241        	SDG	68.897        	SDG	59.488        
TAM	72.128        	DAL	53.992        	BUF	67.623        	ARI	58.839        
KAN	71.935        	ARI	52.965        	NYJ	66.070        	DET	57.621        
ATL	71.133        	GNB	52.897        	BAL	65.125        	CAR	55.492        
JAC	71.051        	PHI	52.479        	ATL	64.762        	BUF	51.748        
PIT	70.923        	SDG	50.298        	SEA	64.094        	HOU	51.553        
BAL	70.810        	CHI	49.698        	STL	62.251        	CIN	48.104        
NYJ	68.722        	SFO	48.823        	CIN	62.240        	ATL	48.050        
MIA	67.803        	CIN	36.637        	SFO	61.845        	SFO	47.780        
CAR	67.090        	JAC	35.728        	HOU	61.282        	CHI	44.510        
TEN	66.896        	NOR	34.315        	DET	61.212        	CLE	38.427        
OAK	63.995        	BUF	31.657        	NOR	59.513        	MIA	23.702        
BUF	63.564        	CLE	24.313        	CHI	59.096        	DEN	23.594        
MIN	61.092        	DET	22.418        	KAN	57.651        	NYJ	20.708        
SFO	57.466        	MIN	16.898        	GNB	57.358        	OAK	16.649        

...or you can have the updated data.


[ permalink | 0 comments (add one you lazy bastard!) ]

Mon, 19 Nov 2007

week 11 power rankings

A couple changes this week: I included individual yards for/against data for each team, and for the off/def rankings (including yardages) I scaled to 100 but did not shift; this lets us say, e.g., "Dallas has been 88% as effective as New England on offense this year."

combined              	offense               	defense               
NWE	100.000        	NWE	100.000        	PIT	100.000        
GNB	89.948        	DAL	88.125        	TAM	98.084        
DAL	87.434        	CLE	81.142        	NWE	96.117        
IND	84.182        	IND	79.909        	IND	94.656        
PIT	72.766        	GNB	76.340        	SEA	92.243        
JAC	70.157        	PIT	75.912        	GNB	91.090        
NYG	67.255        	CIN	73.013        	JAC	82.399        
TAM	59.928        	NYG	70.745        	PHI	81.381        
TEN	58.593        	SDG	70.119        	KAN	80.971        
DET	58.409        	DET	70.034        	TEN	79.308        
SEA	57.878        	HOU	69.357        	NYG	76.497        
CLE	55.563        	ARI	68.045        	BUF	73.135        
SDG	51.351        	NOR	66.693        	SDG	72.200        
PHI	48.928        	SEA	66.328        	BAL	71.062        
WAS	48.751        	JAC	65.021        	MIN	70.304        
ARI	46.286        	PHI	64.132        	WAS	70.139        
HOU	46.240        	WAS	63.292        	DAL	68.006        
BUF	46.227        	TEN	62.536        	CHI	67.927        
DEN	45.535        	MIN	62.337        	CAR	67.404        
MIN	38.415        	DEN	61.969        	ATL	64.935        
CHI	37.000        	TAM	61.747        	OAK	63.164        
KAN	35.755        	CHI	60.339        	SFO	62.156        
NOR	35.554        	MIA	58.782        	ARI	60.005        
CAR	35.457        	NYJ	57.953        	DET	57.693        
BAL	32.697        	OAK	57.090        	NYJ	56.483        
CIN	27.393        	CAR	54.860        	HOU	55.949        
ATL	22.319        	BAL	53.537        	NOR	51.081        
NYJ	15.555        	BUF	50.768        	DEN	50.339        
OAK	12.721        	STL	49.504        	STL	48.884        
STL	12.007        	KAN	49.457        	MIA	48.326        
SFO	11.159        	ATL	48.534        	CIN	39.694        
MIA	0.000        	SFO	40.331        	CLE	36.990        

passing offense       	passing defense       	rushing offense       	rushing defense       
NWE	100.000        	PIT	100.000        	MIN	100.000        	MIN	100.000        
GNB	96.241        	IND	94.924        	PIT	86.426        	BAL	96.494        
DAL	93.756        	MIA	83.989        	JAC	84.965        	PIT	93.830        
NOR	92.684        	TAM	83.613        	TEN	83.786        	DAL	92.796        
CIN	92.543        	NWE	80.982        	NWE	80.100        	TEN	90.362        
HOU	90.274        	OAK	74.020        	NYG	78.808        	NWE	84.442        
DET	89.256        	TEN	72.574        	OAK	77.840        	NYG	81.602        
SEA	88.335        	ATL	65.589        	IND	77.661        	GNB	79.707        
IND	87.520        	SFO	64.217        	PHI	77.610        	WAS	76.569        
CLE	87.004        	KAN	63.288        	WAS	77.385        	PHI	76.410        
ARI	81.640        	CAR	62.229        	DEN	77.383        	JAC	73.582        
DEN	81.265        	DEN	61.431        	CAR	76.143        	IND	71.732        
PHI	80.910        	BAL	60.435        	DAL	74.956        	NOR	71.138        
CHI	78.497        	PHI	60.345        	TAM	74.224        	SEA	70.164        
TAM	76.287        	STL	59.110        	MIA	73.060        	KAN	68.557        
STL	75.044        	NYG	58.184        	ARI	69.101        	TAM	64.435        
NYG	74.965        	ARI	56.332        	SDG	68.567        	ARI	64.271        
WAS	74.907        	HOU	56.049        	CLE	67.940        	STL	59.606        
KAN	74.813        	SEA	54.899        	BUF	66.412        	DET	59.124        
ATL	73.792        	CHI	54.203        	NYJ	66.374        	CAR	58.095        
PIT	73.721        	WAS	52.424        	BAL	65.870        	HOU	57.049        
BAL	73.254        	NYJ	51.089        	SEA	63.124        	SDG	55.997        
SDG	73.207        	GNB	50.571        	ATL	62.646        	BUF	54.536        
NYJ	71.848        	DAL	47.193        	HOU	60.938        	ATL	50.168        
MIA	70.683        	SDG	45.577        	STL	60.199        	SFO	47.750        
JAC	69.687        	CIN	36.339        	SFO	58.075        	CHI	47.443        
CAR	69.304        	BUF	33.569        	CIN	57.624        	CIN	44.197        
TEN	66.335        	JAC	32.741        	DET	57.485        	CLE	36.528        
OAK	65.296        	NOR	27.343        	NOR	56.993        	NYJ	25.887        
BUF	63.750        	DET	24.614        	CHI	56.371        	DEN	24.843        
MIN	63.215        	CLE	20.395        	GNB	55.273        	OAK	21.659        
SFO	55.519        	MIN	11.868        	KAN	52.643        	MIA	20.537        

Updated code for those following along at home.


[ permalink | 0 comments (add one you lazy bastard!) ]

Wed, 14 Nov 2007

moooooooore powerrrrrrrrrr

...rankings.

I was bored and decided to write some code to produce NFL power rankings. Perhaps one of my perenially disappointed faithful readers might care to peruse. (Gautham actually suggested splitting the offensive and defensive power rankings; previously I'd only looked at overall power rankings, which I present below.)

First, a little explanation: these are split offensive and defensive power rankings; in other words, normalized rankings by points for and points against considering the record of the opposition as given by the same ranking. My assumption here is that my rankings should be zero-sum when offense and defense are combined. That is, every (adjusted) point counted towards an offense is counted precisely the same against the opposing defense. The rankings are determined as follows:

  1. Rank offenses and defenses by adding up points for and points against. Normalize to a 0-100 scale, with 100 being most points for and least points against.
  2. Given the above rankings, normalize the points scored: pnorm = pscore * (1 - (offensive_rating - opposing_defensive_rating)). Note that this is zero-sum, since the defensive rating for the team on defense is used against the offensive rating of the team on offense.
  3. Repeat the above, but this time use the rankings returned in the last step. Continue iterating until the algorithm converges on a set of rankings. These are now both perfectly self-consistent (that is, using the rankings to normalize the scores yields exactly the same rankings) and zero-sum (all points counted for a defense are also counted against an offense).

Note that this is very much a discrete feedback system, and as such is subject to instability. To ameliorate this problem, we add a "gain" term as such: pnorm = pscore * (1 - gain*(offensive_rating - opposing_defensive_rating)), where gain < 1. While monitoring the state variables, we experiment with gain until we get close to the largest value that yields a stable system, in this case 1/4. Yes, this is hacky. Bite me, Hippo.

Finally, using approximately the same algorithm (details if you insist), I do the same thing for total performance, taking into account win/loss, point differential, defensive performance, and home field advantage.

So now we have a mess of numbers. What are they? Well, in one sentence, they are normalized offensive and defensive ratings adjusted for relative strength of schedule. How, relative? Well, we look at the difference between the opposing defense and our offense (or vice-versa), not our defense versus the league average or some such. Think of it this way: if the worst team in the league had to play a bunch of mediocre teams, those would be hard-fought wins; conversely, the best team in the league should have little trouble with those same teams. Relative strength of schedule takes this into account.

Here are the numbers:

combined                offense                 defense
NWE	100.000        	NWE	100.000		PIT	100.000
GNB	88.877        	DAL	83.321		SEA	89.290
DAL	85.341        	IND	72.842		TAM	85.638
IND	83.189        	CLE	67.917		NWE	84.650
PIT	80.843        	PIT	64.065		GNB	83.451
JAC	66.579        	GNB	58.556		IND	81.508
TEN	66.043        	DET	54.766		TEN	76.748
DET	64.926        	CIN	54.511		BUF	70.769
NYG	63.272        	NYG	53.387		JAC	66.878
SDG	56.904        	SDG	51.525		KAN	59.164
TAM	53.994        	HOU	49.478		BAL	56.930
SEA	53.481        	NOR	48.993		PHI	56.024
WAS	52.787        	ARI	41.471		SDG	53.106
CLE	51.385        	PHI	40.369		CAR	51.544
BUF	50.391        	JAC	38.916		CHI	51.263
PHI	43.508        	SEA	37.553		MIN	49.928
CHI	41.806        	TEN	36.275		NYG	49.785
HOU	40.583        	WAS	34.992		ATL	49.339
ARI	40.051        	MIA	34.039		WAS	49.119
DEN	39.732        	MIN	32.003		DAL	45.858
NOR	39.701        	CHI	29.441		OAK	43.484
KAN	38.975        	TAM	29.306		ARI	36.620
CAR	38.408        	DEN	28.936		SFO	30.923
BAL	36.894        	NYJ	26.355		DET	23.899
MIN	32.504        	OAK	23.123		NYJ	21.136
CIN	31.475        	CAR	21.660		NOR	19.135
ATL	26.070        	BUF	17.196		HOU	18.749
OAK	15.436        	KAN	15.675		DEN	15.649
SFO	13.263        	ATL	15.238		MIA	7.479
NYJ	6.447        	BAL	14.313		STL	6.008
STL	3.783        	STL	14.185		CIN	5.766
MIA	0.000        	SFO	0.000		CLE	0.000

Sucks for Cleveland that they have a terrible defense, since their offense pretty much rocks...

I'll keep these updated weekly until the end of the season.

Edit: here's the code if you want to play with it yourself.


[ permalink | 0 comments (add one you lazy bastard!) ]