I dunno. I've given it a try and while it's easy enough to reproduce the exponential fit (and the generated regression line does fit the 81 nations very nicely), I think I screwed up somehow reproducing the smart fraction equation because the regression looks weird and trying out the smart-fraction function (using his specified constants) on specific IQs I don't get the same results as in La Griffe's table. And I can't figure out what I'm doing wrong, my function looks like it's doing the same thing as his. So I give up. Here is my code if you want to try to fix it:
lynn <- read.table(stdin(),header=TRUE,sep="")
Country IQ rGDPpc
Argentina 96 12013
Australia 98 22452
Austria 102 23166
Barbados 78 12001
Belgium 100 23223
Brazil 87 6625
Bulgaria 93 4809
Canada 97 23582
China 100 3105
Colombia 89 6006
Congo 65 822
Congo 73 995
Croatia 90 6749
Cuba 85 3967
CzechRepublic 97 12362
Denmark 98 24218
Ecuador 80 3003
Egypt 83 3041
EquatorialGuinea 59 1817
Ethiopia 63 574
Fiji 84 4231
Finland 97 20847
France 98 21175
Germany 102 22169
Ghana 71 1735
Greece 92 13943
Guatemala 79 3505
Guinea 66 1782
HongKong 107 20763
Hungary 99 10232
India 81 2077
Indonesia 89 2651
Iran 84 5121
Iraq 87 3197
Ireland 93 21482
Israel 94 17301
Italy 102 20585
Jamaica 72 3389
Japan 105 23257
Kenya 72 980
Lebanon 86 4326
Malaysia 92 8137
MarshallIslands 84 3000
Mexico 87 7704
Morocco 85 3305
Nepal 78 1157
Netherlands 102 22176
NewZealand 100 17288
Nigeria 67 795
Norway 98 26342
Peru 90 4282
Philippines 86 3555
Poland 99 7619
Portugal 95 14701
PuertoRico 84 8000
Qatar 78 20987
Romania 94 5648
Russia 96 6460
SierraLeone 64 458
Singapore 103 24210
Slovakia 96 9699
Slovenia 95 14293
SouthAfrica 72 8488
SouthKorea 106 13478
Spain 97 16212
Sudan 72 1394
Suriname 89 5161
Sweden 101 20659
Switzerland 101 25512
Taiwan 104 13000
Tanzania 72 480
Thailand 91 5456
Tonga 87 3000
Turkey 90 6422
UKingdom 100 20336
Uganda 73 1074
UnitedStates 98 29605
Uruguay 96 8623
WesternSamoa 87 3832
Zambia 77 719
Zimbabwe 66 2669
em <- lm(log(lynn$rGDPpc) ~ lynn$IQ); summary(em)
Call:
lm(formula = log(lynn$rGDPpc) ~ lynn$IQ)
Residuals:
Min 1Q Median 3Q Max
-1.6124 -0.3866 -0.0429 0.3363 2.0311
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.77760 0.51848 3.43 0.00097
lynn$IQ 0.07876 0.00583 13.52 < 2e-16
Residual standard error: 0.624 on 79 degrees of freedom
Multiple R-squared: 0.698, Adjusted R-squared: 0.694
F-statistic: 183 on 1 and 79 DF, p-value: <2e-16
# plot
plot (log(lynn$rGDPpc) ~ lynn$IQ)
abline(em)

# an attempt at La Griffe
erf <- function(x) 2 * pnorm(x * sqrt(2)) - 1
sf <- function(iq) ((69321/2) * (1 + erf(((iq - 108)/15) / sqrt(2))))
# check for sigmoid
# plot(c(85:130), sf(c(85:130)))
lg <- lm(log(lynn$rGDPpc) ~ sf(lynn$IQ)); summary(lg)
Call:
lm(formula = log(lynn$rGDPpc) ~ sf(lynn$IQ))
Residuals:
Min 1Q Median 3Q Max
-2.5788 -0.6857 0.0678 1.0521 1.5901
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 8.705620 0.126152 69.01 <2e-16
sf(lynn$IQ) 0.000121 0.000102 1.19 0.24
Residual standard error: 1.13 on 79 degrees of freedom
Multiple R-squared: 0.0175, Adjusted R-squared: 0.0051
F-statistic: 1.41 on 1 and 79 DF, p-value: 0.239
# same plotting code

(In retrospect, I'm not sure it's even meaningful to try to fit the sf function with the constants already baked in, but since I apparently didn't write it right, it doesn't matter.
Hm, one thing I notice is that you look like you're fitting sf against log(gdp). I managed to replicate his results in octave, and got a meaningful result plotting smart fraction against gdp.
My guess at how to change your code (noting that I don't know R):
sf <- function(iq,c) ((69321/2) * (1 + erf(((iq - c)/15) / sqrt(2))))
lg <- lm(lynn$rGDPpc ~ sf(lynn$IQ,108)); summary(lg)
That should give you some measure of how good it fits, and you might be able to loop it to see how well the smart fraction does with various thresholds.
(I also probably should have linked to the refinement.)
Here's the new thread for posting quotes, with the usual rules: