Giffen Effect

[From Rick Marken (2002.11.08.1330)]

Bill Williams (UMKC 8 November 2002 3:00 PM CST) --

I would agree that there is lots remaining in the Giffen Effect to explore.
There is a Giffen "Curve" which predicts that as the slopes of the budget
and caloric curves become more similiar as a result of a price change the
rate of reaction to a price change will increase.

How does it do that? What is the mechanism that produces the increase in rate of
reaction to a price change? Has such an increase been observed or is it just a
prediction that falls out of the Giffen "Curve" model (if it is a model).

The thing I like about the control model is that I can understand the mechanism
that produces the observed phenomenon (the Giffen effect, in this case). I'm not a
big fan of the graphical approach to modeling because it's never clear to me how
things work. I might be able to figure out how to find the "solution points" on
these graphs, for example, but the graphs don't tell me how the behaving systems
(whose behavior the graphs are presumably trying to explain) find those points.

And, there is a Giffen Surface which results as a
combination of Giffen curves with a change in income. The Giffen Surface
predicts the survival behavior of an organism under the Giffen effect.

How does the Giffen Surface model work?

If you wish to continue this, I suggest a new thread heading-- "Giffen
Effect."

Done!

You've been speculating, or rather making assumptions about my attitude
toward you. They're not much if at all better than my speculations about
what Fred was concerned about.

I guess I'm glad to hear that.

Best regards

Rick

···

--
Richard S. Marken, Ph.D.
The RAND Corporation
PO Box 2138
1700 Main Street
Santa Monica, CA 90407-2138
Tel: 310-393-0411 x7971
Fax: 310-451-7018
E-mail: rmarken@rand.org

[From Rick Marken (2002.11.08.1640)]

Bill Williams (UMKC 8 November 2002 5:00 PM CST) --

At least in the case of the Giffen Effect I think a graphic approach has
value because: If we assume that the caloric requirement is based upon a
thermodynamic law then either consuming too few calories or too many
calories will be fatal. Death will result either from starvation or from
the organism being crushed by an accumulation of excess fat. And, if the
budget is assumed to be enforced by the banks and the police then-- the
consumer will move to the point where as much of the higher level good is
consumed consistent with the caloric requirement and the budget.

I agree that a real consumer will consume goods at a level that is consistent with
their caloric requirement (they consume enough to keep themselves alive) and their
budget (they generally only consume what they can pay for; very few consumers
steal). But what is the explanation of this behavior? If the explanation lies
with the law of thermodynamics and police/bank enforcement of the law ,then the
explanation is not part of the graph. All the graph tells us is the nature of the
relationship between certain variables; for example, the relationships between
consumption and caloric intake price and budget. But the graph doesn't tell us
whether (and certainly not _how_) consumers will control, say, their caloric
levels and expenditures. There is nothing in a the graph to which you refer but a
description of relationships between variables. It is a description of the
constraints under which a model of a consumer might have to operate. But the graph
provides no explanation of how or why consumers behave as they do under these
constraints.

THe budget
intersects the caloric line from below. Now with each price increase the
budget line pivots inward and the angle between the two schedules
decreases. So, as the price increases continue the increase in consumption
of the least desired good increases, but at an increasing ratio to the
change in price.

The graph doesn't really show changes in consumption as a function of price
increase. Consumption is only an independent variable in the graph. The graph
provides no explanation of how or why a consumer would vary it's level of
consumption of the two goods. All the graph shows is what _would_ happen to
caloric intake and budget _if_ the consumer consumed goods at certain levels.

It seems to me to be nearly as certain as euclid's geometry. Surprizingly
no one that I know of has noticed this relationship, nor ( of course ) has
it been tested. But, it could-- maybe even with cockroaches.

The relationship you have observed on the graph (increasing rate of change in
consumption with increasing price) is one of many possible relationships you could
actually observe, depending on how consumers actually work.

Do the graph and see what you think.

I think the graph may be a useful first step for some people (I don't find such
graphs particularly useful at all). My experience has been that the real
understanding of how a system (such as a consumer) works comes from developing a
model that will actually behave like the real system.

Best regards

Rick

···

--
Richard S. Marken, Ph.D.
The RAND Corporation
PO Box 2138
1700 Main Street
Santa Monica, CA 90407-2138
Tel: 310-393-0411 x7971
Fax: 310-451-7018
E-mail: rmarken@rand.org

[From Bill Williams UMKC 8 November 2002 5:00 PM CST]

At least in the case of the Giffen Effect I think a graphic approach has
value because: If we assume that the caloric requirement is based upon a
thermodynamic law then either consuming too few calories or too many
calories will be fatal. Death will result either from starvation or from
the organism being crushed by an accumulation of excess fat. And, if the
budget is assumed to be enforced by the banks and the police then-- the
consumer will move to the point where as much of the higher level good is
consumed consistent with the caloric requirement and the budget. THe budget
intersects the caloric line from below. Now with each price increase the
budget line pivots inward and the angle between the two schedules
decreases. So, as the price increases continue the increase in consumption
of the least desired good increases, but at an increasing ratio to the
change in price. This could be tested, but I think the thought experiement
is conclusive. Plot out the two schedules and then draw the shift inward
of the buget function which determines how much of the inferior good can be
consumed when the entire budget is spent on the inferior good.

It seems to me to be nearly as certain as euclid's geometry. Surprizingly
no one that I know of has noticed this relationship, nor ( of course ) has
it been tested. But, it could-- maybe even with cockroaches.

Do the graph and see what you think.

best

bill williams

[From Fred Nickols (2002.11.09.0655)] --

[From Rick Marken (2002.11.08.1640)]

I agree that a real consumer will consume goods at a level that is
consistent with
their caloric requirement (they consume enough to keep themselves alive)
and their
budget (they generally only consume what they can pay for; very few consumers
steal).

Here's a question that puzzling me: How does the Giffen effect account for
the almost epidemic scale of obesity in this country? I ask because it
seems to me that the Giffen effect is part of the rational, economic man
scheme of things and, further, that people are demonstrably consuming well
beyond their caloric requirement -- so, it also seems to me that they are
eating in ways that serve to control some perception other than caloric
requirements.

Fred Nickols
nickols@safe-t.net

[From Bill Williams, UMKC 9 November 2002 9:40 AM CST]

Fred Nichols observed that, it seems "...to me that they [consumers]
are eating in ways that serve to control some perception other than
caloric requirements." For Fred the evidence of this is what he
describes as "almost an epidemic" of obesity. I think it has gone
beyond the "almost" stage. But, Fred's question is "What does this
have to do, if perhaps anything, with the Giffen effect? Fred also
makes a reference to the contrast between a control theory conception
of behavior and the orthodox model of economic man. And, this is where
in my mind the explaination starts.

You won't find in the orthodox conception of economic man any mention
of inherent reference levels. Instead it is assumed on an _a priori_
basis that consumers will maximize the utility which can be obtained
from a given budget. The utility obtained from each good consumed is
specified by a utility function. You can think of this as a look up
linking the quantity of a good being consumed with how much utility
the good provides. (Or, you can think of it as an equation in which
Usubx = f(x). Ordinarily this relationship is left implicit. ) THis
whole pattern of reasoning however, appears to me to be an indirect
way of developing an argument that capitalism is "stable, efficient,
and beyond that an inherently ( at least in principle) just" way of
organizing production and consumption. In order to complete a
reasonably complete arguement to this effect has required the
construction of an intellectual structure which is comparable to
the most complex conceptual edifices fabricated by the church fathers
in the middle ages. In confronting this monstrousity I think it is
helpful to keep in mind the motivations for and conditions underwhich
it was constructed. Orthodox economic theory had its beginnings in
the period when the European economy was making a transition to a
monetary market system. In order to develop arguments in favor of
accelerating the move away from feudalism with its pattern of fixed
obligations to a more flexible arrangement it was obligatory to
demonstrate that a "free market" would be "stable, efficient and
equitable." Adam Smith 1776 and his _Wealth of Nations_ is ordinarily
designated as the "founder" of the orthodox pattern of thought. But,
it was not until the end of the 19th century that this system of thought
obtained what can be considered to be something approaching internal
consistency. Alfred Marshall's _Principles of Economics_ is widely
considered to be a prominent exemplar of the completion of the effort
to develop a secular justification for economic society. In this sense
it is the counterpart to the medevial theological arguments justifying
the feudal order-- the divine right of kings and all that.

The downward sloping property of the demand curve is a neccesary
element in the "proof" that an idealized model of a capitalist market
economy will be "stable, efficient and just." The existence of, or
at least suspicion that something like a giffen effect was possible
had been known almost from the initial efforts to think about
economic affairs in secular terms-- by 1800 at any rate. THere are
a couple of obscure texts in which the effect is considered. But,
it was Marshall who gave the effect prominence. In 1895 he included
a reference to the effect in the third edition of his _Principles of
Economics_ text. This was only five years after he had published the
first edition in 1890. There are letters in which Marshall argues
that the effect is genuine and ought to be followed up. But, confesses
to not having the energy to do so and descibes it as a task for a
youner man. For many years there appears to have been little or no
thought given to the effect. However, as a result of orthodox theorists
attempts to strengthen the arguments that demand functions can be
expected to slope downward, fundamental gaps in the orthodox "proofs"
began to be more apparent. When George Stigler attempted to put an
end to speculations about the effect in 1947? he did so in a dogmatic
way that provoked something of a revolt. Stigler's argument that
economists should stop worrying about the Giffen effect perversely
generated a contrary effect in which it has become a minor economic
specialty to in someway refute Stigler.

When the Giffen effect is considered in the context of control theory
everyone appears to acknowledge that what is happening is in someway
due to the neccesity for an "economic man" to consume enough calories
to survive. This recognition can be considered to be a very much delayed
adjustment in economic "theology." The theology of the middle ages
justified the existing order in terms of "God's reasons." Something
of the same style of reasoning was carried over into the proportedly
secular arguments of the Clasical tradition in economics. Now however
it is slowly becoming apparent that "economic man" is the sort of
creature with inherent requirements such as calories.

But, the inherent reference levels for caloric consumption are it
seems to me the product of an evolutionary context quite different
than the environment characteristic of contemporary American life.
It seems to me that it would be possible to construct a control theory
explaination, using the same principles employed in the control theory
explaination of the Giffen effect, to explain why so many people now
are becoming dangerously obese.The details of the analysis would differ
from the Giffen explaination, but the core of the explaination would
depend upon control theory. The model of this phenomen, it seems to me,
could be experimentally tested. There is some experimental evidence
scattered about that might provide something of a start for such an
effort.

I ought to have thought of Fred's question myself. I've been concerned
with control theory and also with the problem of obesity. But, it didn't
occur to me to attmpt to model the p;roblem.

The recent Nobel award to T and K may have some relevance to such an
effort. Their argument may have an evolutionary basis.

best

Bill williams
subject to experimental test.

way

[From Rick Marken (2002.11.09.0950)]

Fred Nickols (2002.11.09.0655) --

Here's a question that puzzling me: How does the Giffen effect account for
the almost epidemic scale of obesity in this country?

The Giffen effect is a phenomenon itself (like the observed prevalence of
obesity). The phenomenon is an observed increase in consumption of foods like
bread and potatoes when there is an increase in the _price_ of these foods. So
the Giffen effect doesn't really explain anything; it is a phenomenon to be
explained. The control model (with two higher order systems controlling for
calories and expenditures by manipulating the references of two lower level food
control systems) is one explanation.

I ask because it
seems to me that the Giffen effect is part of the rational, economic man
scheme of things

Actually, I think the Giffen effect is interesting because it _seems_ to
contradict the idea of a rational economic man. A rational person is assumed to
consume less of a product as that product becomes more expensive. In the Giffen
effect we see the opposite; people consume more of a product as that product
becomes more expensive. The control model suggests that rationality has nothing
to do with this Giffen phenomenon. The increase in consumption with increasing
price does not occur because people are irrational and want to pay more money (at
least, not in the control model); rather, it occurs because it is the only way a
person on a limited budget can successfully control caloric intake and
expenditures in a world where some sources of calories are much more expensive
than others.

it also seems to me that they are
eating in ways that serve to control some perception other than caloric
requirements.

I think that is true. In the control model of the Giffen effect people eat in
ways that serve to control only two different references, one for caloric intake
and the other for expenditures. Obviously, real people have far more than two
higher level goals and probably far more than two goals are served by eating. My
guess is that obesity in the US, such as it is, probably results (as a side
effect) from the fact that people do a lot of their eating to control for taste
and boredom.

Best regards

Rick

···

--
Richard S. Marken
MindReadings.com
marken@mindreadings.com
310 474-0313

[From Bill Williams UMKC 9 November 2002 12:30 AM CST]

Rick posted a comment on Fred's question concerning the Giffen Effect

[From Rick Marken (2002.11.9.095o)]

I would endorse much of what Rick says. However, Rick seems to have a basic
misconception concerning how the Giffen effect is generated. Rick says,

  "The increase in consumption [ of the inferior good in response to
   a price increase ] "...is the only way a person on a limited budget
   can successfully control caloric intake and expenditure in a world
   where some sources of calories are much more expensive than others."

First, it is not neccesary that some sources of calories have to be "much
more expensive than others." All that is required is that the calories
which the more preferred good supplies be a little bit more expensive. As
long as the diference in price is larger than zero the effect can occur.
While my "graphical" analysis may not tell Rick anything, it tells me this
much and more.

Second: if we consider a consumer controlling for expenditure ( that is the
budget control loop controls for not exceeding the budget ) and also for
the caloric intake to match the caloric reference, these two reference
levels can be satisfied by any value for caloric intake that the consumer
can purchase. Rick in the passage above appears to assume that the GIffen
models have been constructed simply through the use of a hierichal stacking
of control loops, but this is not neccesarily so. It isn't clear to me that
Rick's demo of the Giffen effect actually generates a giffen effect. I
haven't said anything about this in the past but maybe now's the time.
Where in your Giffen demo does a price inter into the consumer's behavior?
I've assumed that you had it right, but I could never make sense of what
you were doing.

Anyway the,
The result is that there is an absence of a unique value for the mix of the
two goods for which a purely two level control system model controls. This
creates a difficulty. if There are instead an infinity of values on the
line of the caloric function for which the purchase price is less than the
budget, then It is not assured that increasing the price of the inferior
good will neccesarily generate a giffen effect for all of these values. It
will tyupically for some, but not for others. Unless the price increase is
so extreme that it results in the consumer being compelled to consume only
the inferior good to survive and the consumer starts on a point of the line
such that a price increase compells consuming more bread, then the effect
will not occur. Among these possible solutions which a two loop model
allows in one in which the consumer purchases and consumes _only_ bread.
THis would satisfies both the reference level for calories and an
expenditure which does not exceed the budget -- a _purely_ two loop model.
If the consumer chooses to do this then the will not be genrated a giffen
effect-- there can not be a response to the price increase by increasing
the consumptioon of bread regardless of how large the price is.

So, this model, the purely two loop version, can not be dependend upon to
generate as Rick expects, a Giffen effect.

The explaination for this involves the history of the effect. Initially I
used the example of meat and bread to illustrate the Giffen effect.
Recently I've seen that the model and explaination can be simplified by a
small change. Rather than meat and bread, if the choice of goods is
specified in terms of sweet and bitter gruel the explaination can be
simplified. THe sweet and bitter gruel are identical except that one good,
the sweet gruel, tastes better than the bitter gruel. Now the model is
specified in terms of three control loops. The most basic is the budget,
next in order of importance is the caloric requirement, and third is a
preference for sweet gruel. The interaction of these three loops can or
does generate a giffen effect in response to a price change ( when the
Consumer is within what can be called the Giffen domain) -- for the less
prefered good. As I've said A comparable two loop model can not be
dependend upon to do so.

I appears to me that Rick's mistake in thinking that a _purely_ two loop
model could generate a giffen effect may be the result of a quite different
but superficially similar argument between Bill Powers and myself about
how best to construct an analysis and explaination of the Giffen effect.
POwers and I (if my memory and understanding are correct ) aggree about the
causal properties of his two and my three loop models of the Giffen effect.
Where we differ is in respect to the style used to construct the model.
Power's model can be said to be "cheaper" than mine because it only uses
two loops. While my preferrred version a three loop model is simpler in the
respect that it uses only one componate-- a control loop and stacks them in
order of their priority. Both version work. Looking at how they behave in
terms of the equilibrium values there is nothing of signficance which one
could use to tell them appart from looking only at their behavior.

Where Rick makes a mistake is in thinking that Powers' version of the
Giffen effect program is simply a two layer model. Bill's version of the
model generates a Giffen effect with two control loops and a subtle trick.
I think it is clever, but I think it makes it more difficult to explain
what is happening-- witness Rick's misundertanding.

best

Bill Williams

[From Rick Marken (2002.11.09.1620)]

Bill Williams (UMKC 9 November 2002 12:30 AM CST) --

Rick posted a comment on Fred's question concerning the Giffen Effect

[From Rick Marken (2002.11.9.095o)]

I would endorse much of what Rick says. However, Rick seems to have a basic
misconception concerning how the Giffen effect is generated. Rick says,

  "The increase in consumption [ of the inferior good in response to
   a price increase ] "...is the only way a person on a limited budget
   can successfully control caloric intake and expenditure in a world
   where some sources of calories are much more expensive than others."

First, it is not neccesary that some sources of calories have to be "much
more expensive than others." All that is required is that the calories
which the more preferred good supplies be a little bit more expensive. As
long as the diference in price is larger than zero the effect can occur.
While my "graphical" analysis may not tell Rick anything, it tells me this
much and more.

You're right. It's the relative cost of the calories in each caloric source
that matters, not the difference in the price of the caloric sources.

Second: if we consider a consumer controlling for expenditure ( that is the
budget control loop controls for not exceeding the budget ) and also for
the caloric intake to match the caloric reference, these two reference
levels can be satisfied by any value for caloric intake that the consumer
can purchase. Rick in the passage above appears to assume that the GIffen
models have been constructed simply through the use of a hierichal stacking
of control loops, but this is not neccesarily so. It isn't clear to me that
Rick's demo of the Giffen effect actually generates a giffen effect. I
haven't said anything about this in the past but maybe now's the time.
Where in your Giffen demo does a price inter into the consumer's behavior?
I've assumed that you had it right, but I could never make sense of what
you were doing.

If you look at the bottom of the display you will see the price of meat and
bread shown as the "Cost of Meat" and "Cost of Bread". As you vary the amount
of meat and bread consumed (by moving the cursor relative to the meat and
bread consumption axes) these prices determine the cost (lower right) of the
total consumed. When this cost exceeds the budget (also in the lower right)
the program won't let you consume more meat or bread. In order to control the
calories (the level of the moving horizontal bar on the right) you must adjust
the relative amount of bread and meat you consume in order to get the calorie
bar between the two horizontal hash marks (also on the right). As the price of
bread goes up (after you click the mouse), while the price of bread remains
constant, you find that you have to buy more bread than meat in order to keep
the calories under control. At the end of a trial you see a plot of the amount
of bread you consumed as a function of the price of the bread. You will see
that bread consumption slopes up as price _increases_. This effect shows up
only when the budget is relatively small (the "Poor Man" part of the demo;
when you are a Rich Man your budget allows you to control calories with just
meat consumption, if you want) and when you try to consume as much meat as
possible (if you are poor you can always control calories and stay in budget
by consuming only bread, regardless of the price of bread).

This demo demonstrates the Giffen phenomenon. It doesn't _explain_ why it
happens. I can explain what is seen in the demo using a two level model with
two systems at each level. I have attached a spreadsheet implementation of the
model so you can fiddle around with it if you like. The model has two upper
level systems, one controlling calories and the other controlling
expenditures. There are also two lower level systems, one controlling for the
consumption of meat, the other for the consumption of bread. The reference for
meat consumption is determined by the output of both the calorie and
expenditure control system; the reference for bread consumption is determined
by the output of only the calorie control system. Look at the content of the
cells to see how it works. The outputs of the meat and bread consumption
systems (cells B8 and D8) will change appropriately when you change the price
of bread (by entering a number into the gray "Price of Bread" cell). If you
enter a price number that corresponds to one of those in cells F13 to F16 then
things should work OK because this is the range of bread prices (disturbances)
within which the models is able to control both calories and expenditures.

Anyway the,
The result is that there is an absence of a unique value for the mix of the
two goods for which a purely two level control system model controls. This
creates a difficulty. if There are instead an infinity of values on the
line of the caloric function for which the purchase price is less than the
budget, then It is not assured that increasing the price of the inferior
good will neccesarily generate a giffen effect for all of these values. It
will tyupically for some, but not for others. Unless the price increase is
so extreme that it results in the consumer being compelled to consume only
the inferior good to survive and the consumer starts on a point of the line
such that a price increase compells consuming more bread, then the effect
will not occur. Among these possible solutions which a two loop model
allows in one in which the consumer purchases and consumes _only_ bread.
THis would satisfies both the reference level for calories and an
expenditure which does not exceed the budget -- a _purely_ two loop model.
If the consumer chooses to do this then the will not be genrated a giffen
effect-- there can not be a response to the price increase by increasing
the consumptioon of bread regardless of how large the price is.

So, this model, the purely two loop version, can not be dependend upon to
generate as Rick expects, a Giffen effect.

There are definitely limits to the conditions under which the model will work
(in terms of successfully controlling calories and expenditures and in terms
of showing a Giffen effect -- a positive relationship between price and
consumption). But this is true in the real world too. People can't control for
calories and budget if, for example, they are so poor that they can't afford
any food. What I am sending is, I think, the simplest possible model that will
show the Giffen effect. More complexity (food preferences, for example) can
be added if there is data that can be explained only by adding such
complexities to the model. Right now I think we can say that a simple, two
level control model can produce the Giffen effect. If also produces the
standard demand curve (increased consumption with decreased price) for the the
non "Giffen good" (the meat in this case). Try it with the spreadsheet. When
you decrease the the price of meat, consumption of meat goes up.

The explaination for this involves the history of the effect. Initially I
used the example of meat and bread to illustrate the Giffen effect.
Recently I've seen that the model and explaination can be simplified by a
small change. Rather than meat and bread, if the choice of goods is
specified in terms of sweet and bitter gruel the explaination can be
simplified. THe sweet and bitter gruel are identical except that one good,
the sweet gruel, tastes better than the bitter gruel. Now the model is
specified in terms of three control loops. The most basic is the budget,
next in order of importance is the caloric requirement, and third is a
preference for sweet gruel. The interaction of these three loops can or
does generate a giffen effect in response to a price change ( when the
Consumer is within what can be called the Giffen domain) -- for the less
prefered good. As I've said A comparable two loop model can not be
dependend upon to do so.

I appears to me that Rick's mistake in thinking that a _purely_ two loop
model could generate a giffen effect may be the result of a quite different
but superficially similar argument between Bill Powers and myself about
how best to construct an analysis and explaination of the Giffen effect.

I didn't mean to say (if I did) that a two loop model could generate a Giffen
effect. What I would say is that a two level model, with two systems at each
level, could do it. And it can, as demonstrated by the attached spreadsheet
model.

POwers and I (if my memory and understanding are correct ) aggree about the
causal properties of his two and my three loop models of the Giffen effect.

If you can produce the Giffen effect using only three control system then you
are doing much better than I am. The are four control systems in the attached
spreadsheet. I think Bill's "two loop" model is basically the same as the
attached two level model. But if Bill can actually get the Giffen effect using
only two control loops then he has the best model (by Occam's razor).

Where we differ is in respect to the style used to construct the model.
Power's model can be said to be "cheaper" than mine because it only uses
two loops. While my preferrred version a three loop model is simpler in the
respect that it uses only one componate-- a control loop and stacks them in
order of their priority. Both version work. Looking at how they behave in
terms of the equilibrium values there is nothing of signficance which one
could use to tell them appart from looking only at their behavior.

Could you post a diagram of your three loop model. Then I could implement it
quickly in the spreadsheet.

Where Rick makes a mistake is in thinking that Powers' version of the
Giffen effect program is simply a two layer model.

Yes, I think it's a two layer model with two systems at each layer (like the
one in the spreadsheet).

Bill's version of the
model generates a Giffen effect with two control loops and a subtle trick.

Is it two control loops or two control _layers_? If it's two layers of two
control systems then no subtle tricks are needed to produce the Giffen effect,
as you can see from the spreadsheet model.

Best regards

Rick

···

---
Richard S. Marken
MindReadings.com
marken@mindreadings.com
310 474-0313

[From Rick Marken (2002.11.09.1622)]

Oops. Forgot to attach the spreadsheet. Here it is.

Best

Rick

Giffen.xls (92 Bytes)

···

--
Richard S. Marken
MindReadings.com
marken@mindreadings.com
310 474-0313

[From Bill Powers (2002.11.09.1723 MST)]

Bill Williams UMKC 9 November 2002 12:30 AM CST--

> Bill's version of the

model generates a Giffen effect with two control loops and a subtle trick.
I think it is clever, but I think it makes it more difficult to explain
what is happening-- witness Rick's misundertanding.

My model uses three loops: a budget loop, a loop for calorie control, and a
"prestige" loop that establishes a bias in favor of meat over bread. The
bias is necessary, otherwise all the calories can come from bread at any price.

Also, my model is not hierarchical. The three loops all operate at once, in
parallel. Actually, I thought "my" model was the same as "your" model.

I attach the source and the .exe program -- it's not very long. I think the
instructions on the screen may be enough to figure out how to work it -- if
not I'll supply a writeup.

best

Bill Williams

program giffen;
uses dos,crt,graph,grUtils,textunit;

const labels: array[0..4] of string[10] =
  ('Refer','Gain','Slow','BredVal','MeatVal');
      Esc = $1b;

type variablekind = (calories,cost,prestige);
     arraytype = array[calories..prestige] of real;

const categories: array[0..2] of string[8] =
                  ('Calories','Cost ','Prestige');

var RefSignal,Perception,error,Output,gain,loopgain,slowing,
    meatfactor,breadfactor,meataction,breadaction: arraytype;
    meat,bread: real;
    i,j: integer;
    outdevname: string[30];
    ch: char;
    cmd: byte;
    ctsystem: variablekind;
    changed: boolean;
    numstr: string[30];
    frameheight: integer;
    color1,color2,color3: integer;
    vsize,hsize,vcenter,hcenter: integer;

procedure initscreen;
begin
initgraphics;
hsize := getmaxx; vsize := getmaxy;
end;

procedure initialize;
begin

RefSignal[calories] := 5000.0;
RefSignal[cost] := 5000.0;
RefSignal[prestige] := 5000.0;

meatfactor[calories] := 100.0; { input effects of meat }
meatfactor[cost] := 200.0;
meatfactor[prestige] := 100.0;

breadfactor[calories] := 66.0; { input effects of bread }
breadfactor[cost] := 30.0;
breadfactor[prestige] := -10.0;

meataction[calories] := 1.0; { all 3 ctsystems affect meat purchases }
meataction[cost] := 1.0; { when budget goes over, meat reduced }
meataction[prestige] := 1.0;

breadaction[calories] := 1.0;
breadaction[cost] := 0.0; { cost considerations don't affect bread }
breadaction[prestige] := -1.0; { bread affects prestige negatively }

gain[calories] := 9.0; { higher gain means more importance }
gain[cost] := 5.0;
gain[prestige] := 0.1; { a minor factor with a big effect ! }

slowing[calories] := 0.7; { adjusted for stability. Relative to }
slowing[cost] := 0.8; { optimum slowing factor of 1.00 }
slowing[prestige] := 0.4

end;

procedure changevar;
const j: variablekind = calories;
      k: integer = 0;
var datamatrix:
     array[0..1] of array[calories..prestige] of array[0..4] of real;
    error,xx,yy,x,y,i,n,l: integer;
    realstr: string[15];
    realvar: real;
    m: variablekind;

procedure writeval(j: variablekind; k: integer);
begin
case k of
  0: write(RefSignal[j]:7:0);
  1: write(gain[j]:7:3);
  2: write(slowing[j]:7:3);
  3: write(breadfactor[j]:7:3);
  4: write(meatfactor[j]:7:3)
end;
end;

begin
restorecrtmode;
textcolor(white);
clrscr;
gotoxy(1,25); write('Arrows = move (enter values) End = plot');
gotoxy(1,1);
for m := calories to prestige do
  begin
   y := 10 * ord(m) + 2;
   gotoxy(1,y);
   write(categories[ord(m)]:8);
   for n := 0 to 4 do
   begin
    gotoxy(10*n + 10,y+1); write(labels[n]:7);
    gotoxy(10*n + 10,y+2);
     writeval(m,n);
   end;
  end;
repeat
y := 10 * ord(j) + 4;
x := 10 * k + 10;
for m := calories to prestige do
begin
  loopgain[m] := (breadfactor[m] + meatfactor[m])*gain[m];
  gotoxy(30, 10 * ord(m) + 1); write('Loop gain = ', loopgain[m]:7:2);
end;
textattr := $70;
gotoxy(x,y); writeval(j,k);
case k of
  0: realvar := RefSignal[j];
  1: realvar := gain[j];
  2: realvar := slowing[j];
  3: realvar := breadfactor[j];
  4: realvar := meatfactor[j];
end;
cmd := getrealstr(realvar,7);
case k of
  0: RefSignal[j] := realvar;
  1: gain[j] := realvar;
  2: slowing[j] := realvar;
  3: breadfactor[j] := realvar;
  4: meatfactor[j] := realvar;
end;
textattr := $0f;
gotoxy(x,y); blanks(7); writeval(j,k);
case cmd of
  Left: if k > 0 then k := k - 1 else k := 4;
  Right: if k < 4 then inc(k) else k := 0;
  Up: if j > calories then dec(j) else j := prestige;
  Down: if j < prestige then inc(j) else j := calories;
end;
until cmd = EndKey;
setgraphmode(graphmode);
end;

procedure plotit(i: integer);
var loc: word;
    z2,z3: integer;
begin
settextjustify(CenterText,BottomText);
loc := frameheight;
z2 := hsize div 3; z3 := z2 + z2 + i;
z2 := z2 + i;
putpixel(i,loc - round(RefSignal[calories]/100.0),color1);
putpixel(i,loc - round(Perception[calories]/100.0),color2);
putpixel(z2,loc - round(RefSignal[cost]/100.0),color1);
putpixel(z2,loc - round(Perception[cost]/100.0),color2);
putpixel(z3,loc - round(RefSignal[prestige]/100.0),color1);
putpixel(z3,loc - round(Perception[prestige]/100.0),color2);
putpixel(z2,vsize - 1,color3);
putpixel(z2,vsize - 2 - round(meat/2.0),color1);
putpixel(z2,vsize - 2 - round(bread/2.0),color2);
end;

begin
textattr := $0f;
clrscr; initialize;
textattr := $0f;
initscreen;
color3 := getmaxcolor;
color2 := color3 - 1;
if color2 < 1 then color2 := 1;
color1 := color3 - 2;
if color1 < 1 then color1 := 1;
restorecrtmode;
repeat
changevar;
setgraphmode(graphmode);
hsize := getmaxx + 1;
vsize := getmaxy + 1;
hcenter := hsize div 2;
vcenter := vsize div 2;
frameheight := (3 * vsize div 4);
settextjustify(CenterText,BottomText);
outtextxy(hsize div 6,9,'CALORIES');
str(RefSignal[calories]:5:0,numstr);
numstr := 'REF = ' + numstr;
outtextxy(hsize div 6,18,numstr);
outtextxy(hcenter,9,'BUDGET');
str(RefSignal[cost]:3:0,numstr);
numstr := 'REF = $' + numstr;
outtextxy(hcenter,18,numstr);
outtextxy((5 * hsize) div 6,9,'PRESTIGE');
str(RefSignal[prestige]:5:0,numstr);
numstr := 'REF = ' + numstr;
outtextxy((5 * hsize) div 6,18,numstr);
setcolor(color1);
str(meatfactor[cost]/100.0:3:2,numstr);
settextjustify(LeftText,CenterText);
numstr := ' MEAT: $' + numstr;
outtextxy(3,vsize - (2 * (vsize - frameheight)) div 3,numstr);
setcolor(color2);
str(breadfactor[cost]/100.0:3:2,numstr);
numstr := 'BREAD: $' + numstr;
outtextxy(3,vsize - (vsize - frameheight) div 3,numstr);

meat := 0.0; bread := 0.0;
for ctsystem := calories to prestige do
  begin
   Output[ctsystem] := 0;
   Perception[ctsystem] := 0;
  end;
   for j := 0 to frameheight do
   begin
    putpixel(hsize div 3,j,color3);
    putpixel((hsize + hsize) div 3,j,color3);
   end;
   for j := 0 to vsize - 1 do
   begin
    putpixel(0,j,color3);
    putpixel(hsize - 1,j,color3)
   end;

   for j := 0 to hsize - 1 do
    begin
     putpixel(j,frameheight,color3);
     putpixel(j,0,color3);
     putpixel(j,vsize - 1,color3);
    end;

{ calculate effects of each control ctsystem on meat and bread purchases }

for i := 1 to 3 * hsize - 3 do
begin
   for ctsystem := calories to prestige do {see declaration, enumerated var}
   begin

    { Value computed from meat and bread factors (calories, cost,
     or prestige value) and amount obtained. This is the perceptual signal
     for calories, cost, and prestige }

    Perception[ctsystem] := meat * meatfactor[ctsystem]
                       + bread * breadfactor[ctsystem];

    { error in calories, cost, and prestige. "RefSignal" is reference
    signal.}

    error[ctsystem] := RefSignal[ctsystem] - Perception[ctsystem];

    {If the Perception expenditures are less than the budgeted expenditures,
     there is no error. If calories exceed RefSignals there is no error.}

    if ctsystem = cost then if error[ctsystem] > 0 then error[ctsystem] := 0;
    if ctsystem = calories then if error[ctsystem] < 0 then error[ctsystem] := 0;

    {
     "Output" is the tendency to buy bread and meat. There are three control
     ctsystems. See the next comment below. The equation below is equivalent to

       "Output[ctsystem] := error[ctsystem] * gain[ctsystem]",

     but contains a slowing factor which complicates it. "Loopgain[ctsystem]"
     is computed when the constants are entered.
    }

    Output[ctsystem] := Output[ctsystem]
                     + slowing[ctsystem]/(1.0 + loopgain[ctsystem]) *
                     (error[ctsystem] * gain[ctsystem] - Output[ctsystem]);
   end;
   meat := 0; bread := 0;
   for ctsystem := calories to prestige do
   begin

    { The Output of each control ctsystem, reflecting the error, loop gain,
      and slowing factor, is multiplied by the "meataction" or "breadaction"
      constants, which are meant to be 1, 0, or -1. If the action is 0,
      there is no connection. The +1 or -1 is chosen for negative feedback.
      Each ctsystem's Output represents either an amount purchased or a
      negative amount, cancelling other amounts purchased. The net amount
      purchased is the sum of the Outputs times their gain constants. Note
      that "ctsystem" is an enumerated variable with values "calories", "cost"
      and "prestige". These have the ordinal values 0,1, and 2.}

      { These are the actual purchases }

    meat := meat + Output[ctsystem] * meataction[ctsystem];
    bread := bread + Output[ctsystem] * breadaction[ctsystem];

   end;

   { Real world: don't let meat or bread go negative }

   if meat < 0.0 then meat := 0.0;
   if bread < 0.0 then bread := 0.0;

  if i mod 9 = 0 then plotit(i div 9);
end;
settextjustify(CenterText,BottomText);
str(100.0 * Perception[calories]/RefSignal[calories]:3:0,numstr);
numstr := numstr + '%';
outtextxy(hsize div 6,frameheight - 2,numstr);
str(100.0 * Perception[cost]/RefSignal[cost]:3:0,numstr);
numstr := numstr + '%';
outtextxy(hcenter,frameheight - 2,numstr);
if RefSignal[prestige] > 0.0001 then
begin
  str(100.0 * Perception[prestige]/RefSignal[prestige]:3:0,numstr);
  numstr := numstr + '%';
  outtextxy((5 * hsize) div 6,frameheight - 2,numstr);
end;
settextjustify(CenterText,BottomText);
if (meat + bread) <> 0 then
  begin
   str(100.0 * bread/(meat + bread):3:0,numstr);
   numstr := numstr + '% BREAD';
   outtextxy(hcenter - 1,frameheight + 9,numstr);
  end;
setcolor(color3);
settextjustify(RightText,BottomText);
outtextxy(hsize - 1,vsize - 1, 'Quit= Esc');
outtextxy(hsize - 1,vsize - 21,'More=Space');
cmd := getcod;
until cmd = Esc;
closegraph;
end.

GIFFEN2.EXE (47.8 KB)

[From Rick Marken (2002.11.09.1725)]

Bill Powers (2002.11.09.1723 MST)--

My model uses three loops: a budget loop, a loop for calorie control, and a
"prestige" loop that establishes a bias in favor of meat over bread. The
bias is necessary, otherwise all the calories can come from bread at any price.

My model looks to be exactly the same as yours but without the "prestige" loop. My
model must work because of a judicious choice of reference (and price) values.

Also, my model is not hierarchical. The three loops all operate at once, in
parallel.

I guess mine is also not hierarchical. I was counting the lower level consumption
calculations as the reference for lower level consumption control systems. But I
suppose they can be counted as "outputs" since that is their functional relationship
to the perceptions of calories and expenditures.

Best

Rick

···

--
Richard S. Marken
MindReadings.com
marken@mindreadings.com
310 474-0313

This is Phil Runkel on Saturday 9 Nov at 5:30 pm Pacific
saying THANK YOU to Bill Williams for his explanation datred today at
08:35:53.

Since I am an ignoramus about economics and get lost easily in most of
what I read about economics (which isn't much, for obvious reasons), I
am grateful to you for the clarity of your comment today. I am glad to
learn, too, that some economists (including you) are kicking up their
heels��protesting.

[From Bill Williams UMKC 10 November 2002 00:30 AM CST]

I think this is developing into an interesting thread.

A variety of "Giffen" type models have emerged. There it seems to me
nothing wrong with this unless one of us wants to claim that their "Giffen"
model is for all purposes and under all criteria the "correct" way of
modeling the phenomena. I don't think the data generated by the Giffen
experiements is close to being sufficiently accurate to allow a
discrimination between the various giffen models. The experiements which
I'm aware of have all been directed by a neo-classical pattern of
assumptions, and may not be entirely correct.

I would argue for a model that would take into account not only caloric
consumption, and the budget but also the cumulative errors which occur as
the model attempts to control for taste, calories and the budget. The
nearest I've come to such a model is a version that eventually attains an
equilibrium state where the budget and caloric errors converge to zero. So,
I'm ignoring the effect of errors that occur during the approach to
equilibirum. My giffen consumer ends up with zero current errors in the
budget and the consumption of calories. But, the consumer might in a sense
be said to end up in equilibrium with the effects of cumulative errors so
that she would also be deeply in debt and weigh 10,000 or more pounds.

It seems possible to me that there would be many ways in which a system
that controlled current rate errors for the budget and calories and also
the intergral of these errors could be constructed. Various programs
could be written implementing the same or similiar results by way of
superficially different models. There is it seems to me an analogy here
with biology where various organisms have evolved using quite different
structures to carry on identical or at least highly similar functions.

But, maybe it is time to think about what should be the ultimate
characteristics of a canonical Giffen model.

There is an article:

McDough, Terrance, and Eisenhauer, Joseph. 1995 "Sir Robert Giffen and the
Great Potatoe Famine: A discussion of the Role of a Legend in Neo-Classical
Economics." Journal of Economic Issues Vol 29 # 3 September p. 747-59.

which you might find interesting. It represents something of a unfortunate
consensus regarding the way which the Giffen effect is viewed by at least
one segment of the heterodox economnic community. THat is the Giffen
paradox is a part of systematic and fraudulent attempt by orthodox
economists to obscure genuinely important econmic issues. There is in a
wide segment of the heterodox economic community an inclination to think
that it is utterly impossible to develop a theoretical system capable of
out competing the orthodox model. I find what McDough and Eisenhauer have
to say about this to be a modern day counterpart to Simon Necomb's comments
about the impossiblity of power heavier than air flight 3 years after the
WRight brother first flight. If you don't have ready access to a library
carrying the Journal of Economic Issues I can snail mail copies.

Phil: thanks for the kind remarks about my attempt to provide a historical
context for the Giffen paradox and the Giffen Effect. I'm sure that it
required some sympathetic reading to make sense of it. I think I should
have included something like the following as a conclusion.

Orthodox economic theorists have frequently attempted to prove that
uncontrolled markets _always_ generate the best result possible.
Some at least of the economic radicals have argued that markets _never_
generate the right result. Using control theory I think it is possible to
arrive at a somewhat more mature judgement concerning the question and
discriminate between various situations and what happens when various kinds
of markets "direct" the economic process. THis would be an improvement upon
the use of ideological _a priori_ specification about what to do regarding
economic questions. I don't regard being willing to make such
discriminations as being a "compromise" solution which attempts to arrive
at a balance between two equally mistaken conclusions. I don't regard it as
in anysense being a compromise. Rather it seems to me that approaching
economic questions this way rather than being a compromise is instead just
a more intelligent way of approaching economic questions. As an example, in
a life boat it doesn't make much sense to conduct an auction as a way to
distribute drinking water. It can be antisipated that those without the
funds to purchase water through an auction would quickly become willing to
do what ever it would take to obtain drinking water. But, under other
conditions there may be a place for auctions.

Since you liked what I had to say about economic theology, maybe this is
the time to ask if there's a possiblity of your considering adding a small
economics section to your forthcoming book?

Best

Bill Williams