Free Statistics

of Irreproducible Research!

Author's title

Author*The author of this computation has been verified*
R Software Modulerwasp_boxcoxlin.wasp
Title produced by softwareBox-Cox Linearity Plot
Date of computationWed, 12 Nov 2008 12:53:50 -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/12/t1226519668pvlys48a9lo0n9g.htm/, Retrieved Sun, 19 May 2024 06:14:25 +0000
Statistical Computations at FreeStatistics.org, Office for Research Development and Education, URL https://freestatistics.org/blog/index.php?pk=24421, Retrieved Sun, 19 May 2024 06:14:25 +0000
QR Codes:

Original text written by user:
IsPrivate?No (this computation is public)
User-defined keywords
Estimated Impact148
Family? (F = Feedback message, R = changed R code, M = changed R Module, P = changed Parameters, D = changed Data)
-     [Box-Cox Linearity Plot] [Box-Cox Linearity...] [2008-11-11 17:49:01] [12d343c4448a5f9e527bb31caeac580b]
F    D    [Box-Cox Linearity Plot] [task 8 box-cox ] [2008-11-12 19:53:50] [0458bd763b171003ec052ce63099d477] [Current]
Feedback Forum
2008-11-23 14:51:58 [Nathalie Daneels] [reply
Evaluatie opdracht 3 - Blok 8 (Q3)

De conclusie van de student is onvolledig. De student zou ook eventueel de tabel van de Box-Cox linearity plot erbij kunnen zetten.

Dit zou de conclusie kunnen zijn (uitgebreider):

Tijdens het uitvoeren van een lineaire verband van Y ten opzichte van X, kan een aangewezen/gepaste transformatie van X het verband vaak beduidend verbeteren.
De transformatie box-Cox (Box en Cox, 1964) is een bijzonder nuttige familie van transformaties. Het wordt gedefinieerd als:
T(X) = (X^lambda - 1) / lambda
waarbij X de variabele is die wordt omgezet/getransformeerd en lambda de transformatieparameter is.
Als lambda = 0, dan wordt de transformatie ‘log’ genomen van de gegevens en wordt de bovengenoemde formule niet gebruikt.
De box-Cox linearity plot is een plot van de correlatie tussen Y en de getransformeerde X voor bepaalde waarden van lambda . Namelijk: lambda is de coördinaat voor de variabele van de horizontale, en de waarde van de correlatie tussen Y en de getransformeerde X is de coördinaat voor de verticaal as van de plot.
De optimale waarde van lambda is dan die waarde die overeenstemt met de maximum correlatie (of het minimum voor een negatieve correlatie) op de plot. We kunnen hieruit concluderen dat het omzetten/transformeren van X wordt gebruikt om het verband (tussen Y en X) te verbeteren.
Definitie van de Box-Cox linearity plots: Deze plots worden gevormd door :
- Op de verticale (y-) as: De coëfficiënt van de correlatie van de Y en de getransformeerde X.
- Op de horizontale (x-) as: De waarde die lambda aanneemt.

Wat ik hierboven heb vermeld is de theorie over de Box-Cox Linearity Plot die ik uit EDA heb gehaald.

De conclusie zou vervolgens nog aangevuld kunnen worden met het volgende:
De Box-Cox Linearity Plot brengt 2 variabelen met elkaar in verband. Er wordt geprobeerd om daar een rechte door te trekken om eventueel wetmatigheid te construeren en voorspellingen te maken. Nu moeten we ons de volgende vraag stellen: Is het mogelijk om een variabele te transformeren zodat de scatterplot wordt gelinealiseerd (lineairder wordt gemaakt), zodat we nog een betere rechte (een rechte die dichter bij de aanduiding van het lineair verband ligt) erdoor kunnen trekken? Om deze vraag op te lossen moeten we gaan kijken naar de R-code. Daarin kan je zien dat x getransformeerd wordt naar x1.
Box Cox Linearity Plot gaat lambda (= parameter) laten variëren van -2 tot 2 (zie horizontale as van de grafiek) en al deze transformaties toepassen op de variabele x. Voor elke waarde van lambda gaat men de (gewijzigde) correlatie tussen de getransformeerde x en variabele y berekenen en deze correlatie wordt getoond op de verticale as. Vervolgens moeten we op de grafiek gaan kijken of er zich ergens een maximum voordoet en voor welke waarde van lambda dit is. Voor die waarde van lambda gaat de scatterplot een betere lineaire vorm bereiken, gaat er een hogere correlatie bestaan tussen de variabelen x en y (na transformatie van x). In dit geval kunnen we stellen dat lambda een maximum bereikt in de waarde 1,03. We kunnen met zekerheid stellen dat de curve gaat dalen na 1,03 als waarde voor lambda. Als deze curve geen maximum moest bereiken, dan zouden we eventueel de het interval op de x-as kunnen opschuiven naar links of rechts (hangt er vanaf hoe de rechte loopt), maar dit gaan we dan niet doen. Als er geen maximum zou bereikt worden, dan mogen we concluderen dat er geen zinvolle transformatie bestaat die de correlatie tussen de 2 variabelen zou verbeteren.
Als we wel een maximum kunnen aanduiden, dan moeten we nog nagaan of deze transformatie ook echt de correlatie tussen de 2 variabelen voldoende verbetert. Dit kunnen we zien aan de schaal van de y-as. In dit geval is er een verbetering van slechts 0,05 (ongeveer). We kunnen dus stellen dat de transformatie verloren moeite is geweest: We hebben er moeite ingestopt voor maar weinig effect. Ook als we naar de 2 scatterplots (Lineair fit of original data en Lineair fit of transformed data) kijken, kunnen we vaststellen dat de transformatie weinig effect heeft gehad. De 2 scatterplots lijken nog sterk op elkaar en de punten liggen niet dichter of op de getrokken rechte, na transformatie van de variabele x.
We kunnen er eveneens bij vermelden dat als lambda een waarde nul aanneemt in het maximum van de grafiek, dat de transformatie dan uit een 'log' bestaat, maar dit is eerder bijkomende informatie.

2008-11-24 12:43:15 [Anouk Greeve] [reply
Conclusie is nogal gebrekig. We gaan hier op zoek naar de beste transformatie van een niet zo lineaire rechte naar een lineaire rechte. De Box-Cox Linearity plot is een plot dat de correlatie tussen Y en de veranderlijke X weergeeft, voor gegeven waarden van de lambda. De waarde die het best beantwoordt aan de maximumcorrelatie (of minimum voor negatieve correlatie) in de plot is de optimale keuze voor de lambda.

Post a new message
Dataseries X:
78,4
114,6
113,3
117
99,6
99,4
101,9
115,2
108,5
113,8
121
92,2
90,2
101,5
126,6
93,9
89,8
93,4
101,5
110,4
105,9
108,4
113,9
86,1
69,4
101,2
100,5
98
106,6
90,1
96,9
125,9
112
100
123,9
79,8
83,4
113,6
112,9
104
109,9
99
106,3
128,9
111,1
102,9
130
87
87,5
117,6
103,4
110,8
112,6
102,5
112,4
135,6
105,1
127,7
137
91
90,5
122,4
123,3
124,3
120
118,1
119
142,7
123,6
129,6
151,6
110,4
99,2
130,5
136,2
129,7
128
121,6
135,8
143,8
147,5
136,2
156,6
123,3
100,4
Dataseries Y:
97,8
107,4
117,5
105,6
97,4
99,5
98
104,3
100,6
101,1
103,9
96,9
95,5
108,4
117
103,8
100,8
110,6
104
112,6
107,3
98,9
109,8
104,9
102,2
123,9
124,9
112,7
121,9
100,6
104,3
120,4
107,5
102,9
125,6
107,5
108,8
128,4
121,1
119,5
128,7
108,7
105,5
119,8
111,3
110,6
120,1
97,5
107,7
127,3
117,2
119,8
116,2
111
112,4
130,6
109,1
118,8
123,9
101,6
112,8
128
129,6
125,8
119,5
115,7
113,6
129,7
112
116,8
127
112,1
114,2
121,1
131,6
125
120,4
117,7
117,5
120,6
127,5
112,3
124,5
115,2
105,4




Summary of computational transaction
Raw Inputview raw input (R code)
Raw Outputview raw output of R engine
Computing time1 seconds
R Server'Gwilym Jenkins' @ 72.249.127.135

\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 & 1 seconds \tabularnewline
R Server & 'Gwilym Jenkins' @ 72.249.127.135 \tabularnewline
\hline
\end{tabular}
%Source: https://freestatistics.org/blog/index.php?pk=24421&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]1 seconds[/C][/ROW]
[ROW][C]R Server[/C][C]'Gwilym Jenkins' @ 72.249.127.135[/C][/ROW]
[/TABLE]
Source: https://freestatistics.org/blog/index.php?pk=24421&T=0

Globally Unique Identifier (entire table): ba.freestatistics.org/blog/index.php?pk=24421&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 time1 seconds
R Server'Gwilym Jenkins' @ 72.249.127.135







Box-Cox Linearity Plot
# observations x85
maximum correlation0.68610403923515
optimal lambda(x)1.03
Residual SD (orginial)7.09877505591096
Residual SD (transformed)7.09874363810496

\begin{tabular}{lllllllll}
\hline
Box-Cox Linearity Plot \tabularnewline
# observations x & 85 \tabularnewline
maximum correlation & 0.68610403923515 \tabularnewline
optimal lambda(x) & 1.03 \tabularnewline
Residual SD (orginial) & 7.09877505591096 \tabularnewline
Residual SD (transformed) & 7.09874363810496 \tabularnewline
\hline
\end{tabular}
%Source: https://freestatistics.org/blog/index.php?pk=24421&T=1

[TABLE]
[ROW][C]Box-Cox Linearity Plot[/C][/ROW]
[ROW][C]# observations x[/C][C]85[/C][/ROW]
[ROW][C]maximum correlation[/C][C]0.68610403923515[/C][/ROW]
[ROW][C]optimal lambda(x)[/C][C]1.03[/C][/ROW]
[ROW][C]Residual SD (orginial)[/C][C]7.09877505591096[/C][/ROW]
[ROW][C]Residual SD (transformed)[/C][C]7.09874363810496[/C][/ROW]
[/TABLE]
Source: https://freestatistics.org/blog/index.php?pk=24421&T=1

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

As an alternative you can also use a QR Code:  

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

Box-Cox Linearity Plot
# observations x85
maximum correlation0.68610403923515
optimal lambda(x)1.03
Residual SD (orginial)7.09877505591096
Residual SD (transformed)7.09874363810496



Parameters (Session):
Parameters (R input):
R code (references can be found in the software module):
n <- length(x)
c <- array(NA,dim=c(401))
l <- array(NA,dim=c(401))
mx <- 0
mxli <- -999
for (i in 1:401)
{
l[i] <- (i-201)/100
if (l[i] != 0)
{
x1 <- (x^l[i] - 1) / l[i]
} else {
x1 <- log(x)
}
c[i] <- cor(x1,y)
if (mx < abs(c[i]))
{
mx <- abs(c[i])
mxli <- l[i]
}
}
c
mx
mxli
if (mxli != 0)
{
x1 <- (x^mxli - 1) / mxli
} else {
x1 <- log(x)
}
r<-lm(y~x)
se <- sqrt(var(r$residuals))
r1 <- lm(y~x1)
se1 <- sqrt(var(r1$residuals))
bitmap(file='test1.png')
plot(l,c,main='Box-Cox Linearity Plot',xlab='Lambda',ylab='correlation')
grid()
dev.off()
bitmap(file='test2.png')
plot(x,y,main='Linear Fit of Original Data',xlab='x',ylab='y')
abline(r)
grid()
mtext(paste('Residual Standard Deviation = ',se))
dev.off()
bitmap(file='test3.png')
plot(x1,y,main='Linear Fit of Transformed Data',xlab='x',ylab='y')
abline(r1)
grid()
mtext(paste('Residual Standard Deviation = ',se1))
dev.off()
load(file='createtable')
a<-table.start()
a<-table.row.start(a)
a<-table.element(a,'Box-Cox Linearity Plot',2,TRUE)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'# observations x',header=TRUE)
a<-table.element(a,n)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'maximum correlation',header=TRUE)
a<-table.element(a,mx)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'optimal lambda(x)',header=TRUE)
a<-table.element(a,mxli)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'Residual SD (orginial)',header=TRUE)
a<-table.element(a,se)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'Residual SD (transformed)',header=TRUE)
a<-table.element(a,se1)
a<-table.row.end(a)
a<-table.end(a)
table.save(a,file='mytable.tab')