Free Statistics

of Irreproducible Research!

Author's title

Author*Unverified author*
R Software Modulerwasp_multipleregression.wasp
Title produced by softwareMultiple Regression
Date of computationTue, 25 Nov 2008 08:58:44 -0700
Cite this page as followsStatistical Computations at FreeStatistics.org, Office for Research Development and Education, URL https://freestatistics.org/blog/index.php?v=date/2008/Nov/25/t1227628798jui85nqydwre3bg.htm/, Retrieved Thu, 09 May 2024 02:56:56 +0000
Statistical Computations at FreeStatistics.org, Office for Research Development and Education, URL https://freestatistics.org/blog/index.php?pk=25586, Retrieved Thu, 09 May 2024 02:56:56 +0000
QR Codes:

Original text written by user:
IsPrivate?No (this computation is public)
User-defined keywords
Estimated Impact352
Family? (F = Feedback message, R = changed R code, M = changed R Module, P = changed Parameters, D = changed Data)
F       [Multiple Regression] [Q1 the seatbelt l...] [2008-11-25 15:58:44] [c8dc05b1cdf5010d9a4f2d773adefb82] [Current]
-         [Multiple Regression] [seatbelt] [2008-12-01 15:26:06] [072df11bdb18ed8d65d8164df87f26f2]
Feedback Forum
2008-11-30 10:04:57 [Steven Vercammen] [reply
De student(e) maakt goed opsplitsing tussen de 3 modellen: de verschillende combinaties met of zonder seasonal dummies/linear trend. Op die manier ziet men duidelijk dat het invoeren van seasonal dummies en een linear trend een groot effect heeft op de R^2 en het aantal slachtoffers. Het wel zo dat dit niet effectief nodig was omdat de hint in de vraag reeds vermeld dat beiden moeten worden opgenomen in het model. Bijgevolg zal ik enkel onder deze berekening commentaar plaatsen.

De vraag werd correct beantwoord. De student(e) mag echter wel alle elementen in de besproken tabellen bespreken, op die manier worden ze toch wel een stuk duidelijker. De eerste 'tabel' geeft de estimated multiple linear regression-formule weer waarmee het aantal slachtoffers kan worden geschat. De verschillende elementen daarin zijn:

t(t) = het aantal doden of zwaargewonden

+ 2324.06337310277= dit is het constante deel van de multiple lineair estimated regression formule die het aantal slachtoffers per maand berekend.

D= Dit is een variabele, die 2 waarden kan aan nemen: een 0 (de seatbelt law is nog niet van kracht) of een 1 (de seatbelt law is wel van kracht). Uit de multiple lineair estimated regression formule (Equation t[t] = + 2324.06337310277 -226.385033602658D[t] -….) kunnen we afleiden dat wanneer D=0 (en men dus niet verplicht is de gordel te dragen) de parameter -226.3850 wegvalt uit de formule en er dus bijgevolg 226 meer doden of zwaargewonden zullen vallen.

M1 ev. = Dit zijn de zogenaamde dummies, het zijn exogene variabele effecten van elke maand ten opzichte van een bepaalde referentiemaand (in dit geval December) wat betreft het aantal doden of zwaargewonden. Omdat alle getallen negatief zijn wil dit zeggen dat in December de meeste doden en zwaargewonden vallen. Voor januari wordt bv M1 gelijk aan 1, de andere M’s blijven dan 0.

(t) = Dit stelt de lange termijntrend voor, in tabel 2 kan men zien dat dit een negatief getal is, het aantal slachtoffers daalt met gemiddeld 1.76. Dit is toe te schrijven aan een verbeterd wegennet, veiligere auto’s,…

e(t)= de voorspellingsfout

De tweede tabel is die van de multiple linear regression: ordinary least squares. Deze heeft volgende elementen:

De parameters geven voor elke variabele een soort van gewicht weer, een bepaalde invloed op het aantal slachtoffers. Als dit een negatief getal is, zorgt het er dus voor dat het aantal slachtoffers daalt. De parameters zijn onderhevig aan een bepaalde onzekerheid en moeten geïnterpreteerd worden met een verdeling: hier de T-verdeling.

De S.D. = de standaarddeviatie, die aangeeft hoe breed de verdeling rond de parameter is. Met andere woorden hoe ver men naar boven of beneden kan afwijken, hoe groot de fout is.

T-STAT wordt bepaald door volgende formule : (â – H0 ) / SDâ met â = geschatte waarde van de parameter. De nulhypothese is in dit geval nul (H0 valt weg). De uitkomst van deze formule geeft ons een soort kritische waarde. Als de absolute waarde hiervan groter is als 2 is de kans dat je je vergist bij het verwerpen van de nulhypothese kleiner dan 5 procent. In dit geval is die kans dus voor elke variabele kleiner dan 5%.

1-tailed p-value : we nemen hier een eenzijdige toets omdat we veronderstellen dat er enkel een positief effect van de gordel kan zijn (voor D parameter) en omdat men verwacht dat december de slechtste maand zal zijn (voor de M-parameters). De p-waarde is hier telkens kleiner dan 0.05, wat betekent dat er geen sprake is van toeval.

Uit deze 2 tabellen kan men dus de conclusie trekken dat het aantal doden significant lager door invoering van de seatbelt law. Er worden gemiddeld 226 slachtoffers gemaakt.

2008-11-30 10:29:25 [Steven Vercammen] [reply
Q2: De student(e) trekt de juist conclusie: het model is zeker nog voor verbetering vatbaar. Het zou echter handiger zijn wanneer men de grafieken waaruit men deze conclusies trekt opneemt in het word document. Ik zal kort voor elke tabel/grafiek opsommen wat er valt uit af te leiden.

1) De tabel met regression statistics: De ‘Adjusted R-squared’ geeft aan dat we 72% van de schommelingen in het aantal verkeersslachtoffers kunnen verklaren met dit model. Dit percentage is dus vrij hoog en wijst op een goed model. De R kwadraat heeft ook een verdeling: de F-verdeling (F-test). De p-value is hier ook nul dus is er sprake van significantie. We kunnen de R kwadraat ook interpreteren als een indicator van de significantie van de hele groep parameters, op die manier moeten we niet naar de p-value van elke parameter apart kijken.

2)De actuals en interpolation grafiek: toont ons een dalende trend. Rond de 170ste periode is er een niveauverschil merkbaar. De oorzaak hiervan is het invoeren van de Seatbelt Law, die een daling van het niveau tot gevolg had.

3)De residuals grafiek:Residuals is de Engelse term voor voorspellingsfouten. Normaal gezien moet het gemiddelde van deze fouten constant zijn en gelijk aan nul. In dit geval is dat duidelijk niet zo. We zien een golvend patroon wat erop wijst dat ons model niet volledig is: we missen nog een of meerdere variabelen (vooral om de hoge waarden in het begin te verklaren). Misschien evolueert het niveau van de technologie niet lineair, misschien is er een nieuwe wet ingevooerd,… Er is nog sprake van autocorrelatie: we kunnen termen verklaren op basis van vorige termen.

4)Het histogram: Het residual histogram zou normaal verdeeld moeten zijn. Er is sprake van een lichte rechtsscheefheid.

5)Density Plot: Ook deze curve zou een normaalverdeling (klokvorm, Gauss-curve) moeten aangeven, dit is min of meer het geval.

6)Q-Q Plot: Uit de Normal Q-Q Plot kunnen we dezelfde conclusie trekken: er is min of meer sprake van een normaalverdeling van de voorspellingsfouten. Bij een perfecte normaalverdeling zouden alle punten op de diagonaal liggen (Sample Quantiles=Theoretical Quantiles).

7)Residual Lag Plot: Deze grafiek toont het verband tussen de voorspellingsfout van periode t en de voorspellingsfout van periode t-1. Dit vertoont een positieve correlatie. Er is dus voorspelbaarheid op basis van het verleden mogelijk en dit zou niet mogen om van een goed model te spreken.

8)De residual autocorrelation function: De blauwe stippellijn op deze grafiek is het 95% betrouwbaarheidsinterval. Alle verticale lijntjes buiten deze horizontale stippellijn zijn significant verschillend. Dit wil zeggen dat die voorspellingsfout waarschijnlijk niet aan het toeval te wijten is. Dit is bv het geval bij lag 40: dit betekent dat informatie van 40 maanden geleden om de waarde nu te voorspellen. Er is ook een duidelijk patroon merkbaar.

We kunnen uit al deze grafieken dus concluderen dat het model niet helemaal voldoet aan de assumpties. Er is sprake van autocorrelatie, maw voorspelbaarheid op basis van het verleden. Dit zou niet mogen volgens de assumpties.
2008-12-01 15:32:45 [Erik Geysen] [reply
Het is inderdaad zo dat er gemiddeld per maand minstens 266 mensenlevens gered worden. Per maand is dit natuurlijk verschillend. Dit komt omdat er nog andere variabelen zijn zoals het weer (regen en/of sneeuw), de staat van het wegdek, ook de auto's zelf,...
De residuals geeft het verschil weeer tussen het aantal werkelijke slachteroffers en het geschatte aantal. In een perfect model zou dit gemiddelde gelijk moeten zijn aan nul wat hier niet het geval is. Het model is dus nog niet helemaal op punt. De student had best de normal Q-Q plot, residual autocorrelation fucntion, het histogram en de density plot opgenomen in zijn of haar werk. Ik heb dit gereproduceerd: http://www.freestatistics.org/blog/index.php?v=date/2008/Dec/01/t12281452043h0fzjdbentpblt.htm

Voor de autocorrelation function zien we dat bijna alle staafjes buiten (onder of boven) het betrouwbaarheidsinterval komen. Ze zijn dus significant verschillend. De voorspellingsfout zal waarschijnlijk niet aan het toeval te wijten zijn. Er is autocorrelatie, d.w.z. dat er voorpsellingen gedaan worden op basis van het verleden wat geen goede zaak is. Het histogram laat ook geen normaal verdeling zien (het is rechtsscheef) en op de Q-Q plot zien we dat helemaal niet alle puntjes op de lineaire regressie liggen. Het model laat zien dat er mensenlevens gered worden, maar het kan nog zeker en vast verbeterd worden.

2008-12-01 15:37:41 [Erik Geysen] [reply
D = een variabele die 2 waarden kan aannemen: 0 en 1
0 = het dragen van de gordel is nog niet verplicht
1 = het dragen van de gordel is verplicht.
wanneer d = 0 zullen er 266 meer zwaargewonden of doden vallen.

Post a new message
Dataseries X:
1687	0
1508	0
1507	0
1385	0
1632	0
1511	0
1559	0
1630	0
1579	0
1653	0
2152	0
2148	0
1752	0
1765	0
1717	0
1558	0
1575	0
1520	0
1805	0
1800	0
1719	0
2008	0
2242	0
2478	0
2030	0
1655	0
1693	0
1623	0
1805	0
1746	0
1795	0
1926	0
1619	0
1992	0
2233	0
2192	0
2080	0
1768	0
1835	0
1569	0
1976	0
1853	0
1965	0
1689	0
1778	0
1976	0
2397	0
2654	0
2097	0
1963	0
1677	0
1941	0
2003	0
1813	0
2012	0
1912	0
2084	0
2080	0
2118	0
2150	0
1608	0
1503	0
1548	0
1382	0
1731	0
1798	0
1779	0
1887	0
2004	0
2077	0
2092	0
2051	0
1577	0
1356	0
1652	0
1382	0
1519	0
1421	0
1442	0
1543	0
1656	0
1561	0
1905	0
2199	0
1473	0
1655	0
1407	0
1395	0
1530	0
1309	0
1526	0
1327	0
1627	0
1748	0
1958	0
2274	0
1648	0
1401	0
1411	0
1403	0
1394	0
1520	0
1528	0
1643	0
1515	0
1685	0
2000	0
2215	0
1956	0
1462	0
1563	0
1459	0
1446	0
1622	0
1657	0
1638	0
1643	0
1683	0
2050	0
2262	0
1813	0
1445	0
1762	0
1461	0
1556	0
1431	0
1427	0
1554	0
1645	0
1653	0
2016	0
2207	0
1665	0
1361	0
1506	0
1360	0
1453	0
1522	0
1460	0
1552	0
1548	0
1827	0
1737	0
1941	0
1474	0
1458	0
1542	0
1404	0
1522	0
1385	0
1641	0
1510	0
1681	0
1938	0
1868	0
1726	0
1456	0
1445	0
1456	0
1365	0
1487	0
1558	0
1488	0
1684	0
1594	0
1850	0
1998	0
2079	0
1494	0
1057	1
1218	1
1168	1
1236	1
1076	1
1174	1
1139	1
1427	1
1487	1
1483	1
1513	1
1357	1
1165	1
1282	1
1110	1
1297	1
1185	1
1222	1
1284	1
1444	1
1575	1
1737	1
1763	1




Summary of computational transaction
Raw Inputview raw input (R code)
Raw Outputview raw output of R engine
Computing time5 seconds
R Server'Sir Ronald Aylmer Fisher' @ 193.190.124.24

\begin{tabular}{lllllllll}
\hline
Summary of computational transaction \tabularnewline
Raw Input & view raw input (R code)  \tabularnewline
Raw Output & view raw output of R engine  \tabularnewline
Computing time & 5 seconds \tabularnewline
R Server & 'Sir Ronald Aylmer Fisher' @ 193.190.124.24 \tabularnewline
\hline
\end{tabular}
%Source: https://freestatistics.org/blog/index.php?pk=25586&T=0

[TABLE]
[ROW][C]Summary of computational transaction[/C][/ROW]
[ROW][C]Raw Input[/C][C]view raw input (R code) [/C][/ROW]
[ROW][C]Raw Output[/C][C]view raw output of R engine [/C][/ROW]
[ROW][C]Computing time[/C][C]5 seconds[/C][/ROW]
[ROW][C]R Server[/C][C]'Sir Ronald Aylmer Fisher' @ 193.190.124.24[/C][/ROW]
[/TABLE]
Source: https://freestatistics.org/blog/index.php?pk=25586&T=0

Globally Unique Identifier (entire table): ba.freestatistics.org/blog/index.php?pk=25586&T=0

As an alternative you can also use a QR Code:  

The GUIDs for individual cells are displayed in the table below:

Summary of computational transaction
Raw Inputview raw input (R code)
Raw Outputview raw output of R engine
Computing time5 seconds
R Server'Sir Ronald Aylmer Fisher' @ 193.190.124.24



Parameters (Session):
par1 = 1 ; par2 = Include Monthly Dummies ; par3 = Linear Trend ;
Parameters (R input):
par1 = 1 ; par2 = Include Monthly Dummies ; par3 = Linear Trend ;
R code (references can be found in the software module):
library(lattice)
library(lmtest)
n25 <- 25 #minimum number of obs. for Goldfeld-Quandt test
par1 <- as.numeric(par1)
x <- t(y)
k <- length(x[1,])
n <- length(x[,1])
x1 <- cbind(x[,par1], x[,1:k!=par1])
mycolnames <- c(colnames(x)[par1], colnames(x)[1:k!=par1])
colnames(x1) <- mycolnames #colnames(x)[par1]
x <- x1
if (par3 == 'First Differences'){
x2 <- array(0, dim=c(n-1,k), dimnames=list(1:(n-1), paste('(1-B)',colnames(x),sep='')))
for (i in 1:n-1) {
for (j in 1:k) {
x2[i,j] <- x[i+1,j] - x[i,j]
}
}
x <- x2
}
if (par2 == 'Include Monthly Dummies'){
x2 <- array(0, dim=c(n,11), dimnames=list(1:n, paste('M', seq(1:11), sep ='')))
for (i in 1:11){
x2[seq(i,n,12),i] <- 1
}
x <- cbind(x, x2)
}
if (par2 == 'Include Quarterly Dummies'){
x2 <- array(0, dim=c(n,3), dimnames=list(1:n, paste('Q', seq(1:3), sep ='')))
for (i in 1:3){
x2[seq(i,n,4),i] <- 1
}
x <- cbind(x, x2)
}
k <- length(x[1,])
if (par3 == 'Linear Trend'){
x <- cbind(x, c(1:n))
colnames(x)[k+1] <- 't'
}
x
k <- length(x[1,])
df <- as.data.frame(x)
(mylm <- lm(df))
(mysum <- summary(mylm))
if (n > n25) {
kp3 <- k + 3
nmkm3 <- n - k - 3
gqarr <- array(NA, dim=c(nmkm3-kp3+1,3))
numgqtests <- 0
numsignificant1 <- 0
numsignificant5 <- 0
numsignificant10 <- 0
for (mypoint in kp3:nmkm3) {
j <- 0
numgqtests <- numgqtests + 1
for (myalt in c('greater', 'two.sided', 'less')) {
j <- j + 1
gqarr[mypoint-kp3+1,j] <- gqtest(mylm, point=mypoint, alternative=myalt)$p.value
}
if (gqarr[mypoint-kp3+1,2] < 0.01) numsignificant1 <- numsignificant1 + 1
if (gqarr[mypoint-kp3+1,2] < 0.05) numsignificant5 <- numsignificant5 + 1
if (gqarr[mypoint-kp3+1,2] < 0.10) numsignificant10 <- numsignificant10 + 1
}
gqarr
}
bitmap(file='test0.png')
plot(x[,1], type='l', main='Actuals and Interpolation', ylab='value of Actuals and Interpolation (dots)', xlab='time or index')
points(x[,1]-mysum$resid)
grid()
dev.off()
bitmap(file='test1.png')
plot(mysum$resid, type='b', pch=19, main='Residuals', ylab='value of Residuals', xlab='time or index')
grid()
dev.off()
bitmap(file='test2.png')
hist(mysum$resid, main='Residual Histogram', xlab='values of Residuals')
grid()
dev.off()
bitmap(file='test3.png')
densityplot(~mysum$resid,col='black',main='Residual Density Plot', xlab='values of Residuals')
dev.off()
bitmap(file='test4.png')
qqnorm(mysum$resid, main='Residual Normal Q-Q Plot')
qqline(mysum$resid)
grid()
dev.off()
(myerror <- as.ts(mysum$resid))
bitmap(file='test5.png')
dum <- cbind(lag(myerror,k=1),myerror)
dum
dum1 <- dum[2:length(myerror),]
dum1
z <- as.data.frame(dum1)
z
plot(z,main=paste('Residual Lag plot, lowess, and regression line'), ylab='values of Residuals', xlab='lagged values of Residuals')
lines(lowess(z))
abline(lm(z))
grid()
dev.off()
bitmap(file='test6.png')
acf(mysum$resid, lag.max=length(mysum$resid)/2, main='Residual Autocorrelation Function')
grid()
dev.off()
bitmap(file='test7.png')
pacf(mysum$resid, lag.max=length(mysum$resid)/2, main='Residual Partial Autocorrelation Function')
grid()
dev.off()
bitmap(file='test8.png')
opar <- par(mfrow = c(2,2), oma = c(0, 0, 1.1, 0))
plot(mylm, las = 1, sub='Residual Diagnostics')
par(opar)
dev.off()
if (n > n25) {
bitmap(file='test9.png')
plot(kp3:nmkm3,gqarr[,2], main='Goldfeld-Quandt test',ylab='2-sided p-value',xlab='breakpoint')
grid()
dev.off()
}
load(file='createtable')
a<-table.start()
a<-table.row.start(a)
a<-table.element(a, 'Multiple Linear Regression - Estimated Regression Equation', 1, TRUE)
a<-table.row.end(a)
myeq <- colnames(x)[1]
myeq <- paste(myeq, '[t] = ', sep='')
for (i in 1:k){
if (mysum$coefficients[i,1] > 0) myeq <- paste(myeq, '+', '')
myeq <- paste(myeq, mysum$coefficients[i,1], sep=' ')
if (rownames(mysum$coefficients)[i] != '(Intercept)') {
myeq <- paste(myeq, rownames(mysum$coefficients)[i], sep='')
if (rownames(mysum$coefficients)[i] != 't') myeq <- paste(myeq, '[t]', sep='')
}
}
myeq <- paste(myeq, ' + e[t]')
a<-table.row.start(a)
a<-table.element(a, myeq)
a<-table.row.end(a)
a<-table.end(a)
table.save(a,file='mytable1.tab')
a<-table.start()
a<-table.row.start(a)
a<-table.element(a,hyperlink('ols1.htm','Multiple Linear Regression - Ordinary Least Squares',''), 6, TRUE)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'Variable',header=TRUE)
a<-table.element(a,'Parameter',header=TRUE)
a<-table.element(a,'S.D.',header=TRUE)
a<-table.element(a,'T-STAT
H0: parameter = 0',header=TRUE)
a<-table.element(a,'2-tail p-value',header=TRUE)
a<-table.element(a,'1-tail p-value',header=TRUE)
a<-table.row.end(a)
for (i in 1:k){
a<-table.row.start(a)
a<-table.element(a,rownames(mysum$coefficients)[i],header=TRUE)
a<-table.element(a,mysum$coefficients[i,1])
a<-table.element(a, round(mysum$coefficients[i,2],6))
a<-table.element(a, round(mysum$coefficients[i,3],4))
a<-table.element(a, round(mysum$coefficients[i,4],6))
a<-table.element(a, round(mysum$coefficients[i,4]/2,6))
a<-table.row.end(a)
}
a<-table.end(a)
table.save(a,file='mytable2.tab')
a<-table.start()
a<-table.row.start(a)
a<-table.element(a, 'Multiple Linear Regression - Regression Statistics', 2, TRUE)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a, 'Multiple R',1,TRUE)
a<-table.element(a, sqrt(mysum$r.squared))
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a, 'R-squared',1,TRUE)
a<-table.element(a, mysum$r.squared)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a, 'Adjusted R-squared',1,TRUE)
a<-table.element(a, mysum$adj.r.squared)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a, 'F-TEST (value)',1,TRUE)
a<-table.element(a, mysum$fstatistic[1])
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a, 'F-TEST (DF numerator)',1,TRUE)
a<-table.element(a, mysum$fstatistic[2])
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a, 'F-TEST (DF denominator)',1,TRUE)
a<-table.element(a, mysum$fstatistic[3])
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a, 'p-value',1,TRUE)
a<-table.element(a, 1-pf(mysum$fstatistic[1],mysum$fstatistic[2],mysum$fstatistic[3]))
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a, 'Multiple Linear Regression - Residual Statistics', 2, TRUE)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a, 'Residual Standard Deviation',1,TRUE)
a<-table.element(a, mysum$sigma)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a, 'Sum Squared Residuals',1,TRUE)
a<-table.element(a, sum(myerror*myerror))
a<-table.row.end(a)
a<-table.end(a)
table.save(a,file='mytable3.tab')
a<-table.start()
a<-table.row.start(a)
a<-table.element(a, 'Multiple Linear Regression - Actuals, Interpolation, and Residuals', 4, TRUE)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a, 'Time or Index', 1, TRUE)
a<-table.element(a, 'Actuals', 1, TRUE)
a<-table.element(a, 'Interpolation
Forecast', 1, TRUE)
a<-table.element(a, 'Residuals
Prediction Error', 1, TRUE)
a<-table.row.end(a)
for (i in 1:n) {
a<-table.row.start(a)
a<-table.element(a,i, 1, TRUE)
a<-table.element(a,x[i])
a<-table.element(a,x[i]-mysum$resid[i])
a<-table.element(a,mysum$resid[i])
a<-table.row.end(a)
}
a<-table.end(a)
table.save(a,file='mytable4.tab')
if (n > n25) {
a<-table.start()
a<-table.row.start(a)
a<-table.element(a,'Goldfeld-Quandt test for Heteroskedasticity',4,TRUE)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'p-values',header=TRUE)
a<-table.element(a,'Alternative Hypothesis',3,header=TRUE)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'breakpoint index',header=TRUE)
a<-table.element(a,'greater',header=TRUE)
a<-table.element(a,'2-sided',header=TRUE)
a<-table.element(a,'less',header=TRUE)
a<-table.row.end(a)
for (mypoint in kp3:nmkm3) {
a<-table.row.start(a)
a<-table.element(a,mypoint,header=TRUE)
a<-table.element(a,gqarr[mypoint-kp3+1,1])
a<-table.element(a,gqarr[mypoint-kp3+1,2])
a<-table.element(a,gqarr[mypoint-kp3+1,3])
a<-table.row.end(a)
}
a<-table.end(a)
table.save(a,file='mytable5.tab')
a<-table.start()
a<-table.row.start(a)
a<-table.element(a,'Meta Analysis of Goldfeld-Quandt test for Heteroskedasticity',4,TRUE)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'Description',header=TRUE)
a<-table.element(a,'# significant tests',header=TRUE)
a<-table.element(a,'% significant tests',header=TRUE)
a<-table.element(a,'OK/NOK',header=TRUE)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'1% type I error level',header=TRUE)
a<-table.element(a,numsignificant1)
a<-table.element(a,numsignificant1/numgqtests)
if (numsignificant1/numgqtests < 0.01) dum <- 'OK' else dum <- 'NOK'
a<-table.element(a,dum)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'5% type I error level',header=TRUE)
a<-table.element(a,numsignificant5)
a<-table.element(a,numsignificant5/numgqtests)
if (numsignificant5/numgqtests < 0.05) dum <- 'OK' else dum <- 'NOK'
a<-table.element(a,dum)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'10% type I error level',header=TRUE)
a<-table.element(a,numsignificant10)
a<-table.element(a,numsignificant10/numgqtests)
if (numsignificant10/numgqtests < 0.1) dum <- 'OK' else dum <- 'NOK'
a<-table.element(a,dum)
a<-table.row.end(a)
a<-table.end(a)
table.save(a,file='mytable6.tab')
}