Archive for the ‘Statistik & Zahlen’ Category.
2015-05-17, 16:55
To highlight how confidence intervals cover in 1-\alpha cases the true parameter I hacked together a little R code based on code from http://paleocave.sciencesortof.com/2013/03/writing-a-for-loop-in-r/ and http://www.cyclismo.org/tutorial/R/confidence.html
- I define a function which takes as parameter „runs“ the number of confidence intervals to compute
- result is the vector of results, it will contain TRUE values for those intervals that cover the true parameter and FALSE for those which don’t
- for each run I draw a sample of 10000 points from N(0,1)
- I then calculate the mean and standard deviation of the sample
- before calculating the limits of the confidence interval, „left“ and „right“
- Since I know the true mu is 0 I can check if 0 falls into this interval, the result of this check is stored in the i-th column of the result vector
- finally I calculate the summary of the result vector. On average 95% percent of all intervals will cover the true mu, 0.
If I find some more time I will add some functionality to run this code on multiple cores as well as a graphical visualisation of the intervals.
confInt <- function(runs){
result<-NULL
for (i in 1:runs) {
data<-rnorm(10000)
n<-length(data)
a<-mean(data)
s<-sd(data)
error <- qnorm(0.975)*s/sqrt(n)
left <- a-error
right <- a+error
result[i] = left<0 & 0<right
}
result
}
summary(confInt(100)) |
confInt <- function(runs){
result<-NULL
for (i in 1:runs) {
data<-rnorm(10000)
n<-length(data)
a<-mean(data)
s<-sd(data)
error <- qnorm(0.975)*s/sqrt(n)
left <- a-error
right <- a+error
result[i] = left<0 & 0<right
}
result
}
summary(confInt(100))
EDIT: Using some more ggplot2 code I have the graphical visualization ready:
confInt <- function(runs){
x<-1:runs
mu<-NULL
sigma<-NULL
result<-NULL
vleft<-NULL
vright<-NULL
for (i in 1:runs) {
data<-rnorm(1000)
n<-length(data)
a<-mean(data)
mu[i]<-a
s<-sd(data)
sigma[i]<-s
error <- qnorm(0.975)*s/sqrt(n)
left <- a-error
right <- a+error
result[i] = left<0 & 0<right
vleft[i] = left
vright[i] = right
}
data.frame(x,mu,sigma,result,vleft,vright)
}
df<-confInt(100)
require(ggplot2)
myplot<-ggplot(df, aes(x = x, y = mu)) +
geom_point(size = 2) +
geom_errorbar(aes(ymax = vleft, ymin = vright,colour=result*3))
myplot + theme_bw()
summary(df) |
confInt <- function(runs){
x<-1:runs
mu<-NULL
sigma<-NULL
result<-NULL
vleft<-NULL
vright<-NULL
for (i in 1:runs) {
data<-rnorm(1000)
n<-length(data)
a<-mean(data)
mu[i]<-a
s<-sd(data)
sigma[i]<-s
error <- qnorm(0.975)*s/sqrt(n)
left <- a-error
right <- a+error
result[i] = left<0 & 0<right
vleft[i] = left
vright[i] = right
}
data.frame(x,mu,sigma,result,vleft,vright)
}
df<-confInt(100)
require(ggplot2)
myplot<-ggplot(df, aes(x = x, y = mu)) +
geom_point(size = 2) +
geom_errorbar(aes(ymax = vleft, ymin = vright,colour=result*3))
myplot + theme_bw()
summary(df)
See http://stackoverflow.com/questions/30289894/plotting-confidence-intervals-from-a-dataframe/30290123#30290123 for an alternative solution.
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
More Posts - Website
2013-03-02, 07:36
Nach Hinweisen auf einen kleinen Fehler (danke Axel!) in meiner Herleitung der Gleichung für die lineare Regression habe eben eine neue Version hochgeladen: linreg.pdf.
Zusätzlich zur Fehlerbeseitigung habe ich mehr erläuternde Kommentare und Formeln hinzugefügt. Selbstredend wurde das Dokument in LaTeX gesetzt; es ist auch ein schönes Beispiel, was mit LaTeX & Co geht:
– die Grafik wurde in Metapost erstellt (heute würde ich sicher TikZ nehmen)
– alle Quelldateien sind im PDF-Container hinterlegt und verlinkt.
Wenn ich mal passenden R-Code finde (Hinweise werden gern entgegen genommen) werde ich noch mehr Beispiele für die Auswirkungen von Anstieg und Achsenabschnitt der Regressionsgeraden auf die Quadratsumme einfügen.
Update 24.06.2018: Ich bin mit den Dateien nach Github umgezogen: https://github.com/UweZiegenhagen/Introduction_Linear_Regression
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
More Posts - Website
2011-03-19, 18:14
Unter http://www.insidesql.org/blogs/frankkalis/2004/07/13/median-berechnen und http://quantmeditate.blogspot.com/2005/03/computing-interquartile-range.html habe ich Informationen zur Berechnung von Median und Quartilen in T-SQL gefunden.
DROP TABLE #data
CREATE TABLE #data(NUMBER FLOAT)
INSERT INTO #data VALUES(1.0);INSERT INTO #data VALUES(2.0);
INSERT INTO #data VALUES(3.0);INSERT INTO #data VALUES(4.0);
INSERT INTO #data VALUES(5.0);INSERT INTO #data VALUES(6.0);
INSERT INTO #data VALUES(7.0);INSERT INTO #data VALUES(8.0);
INSERT INTO #data VALUES(9.0);INSERT INTO #data VALUES(10.0);
INSERT INTO #data VALUES(11.0);INSERT INTO #data VALUES(12.0);
INSERT INTO #data VALUES(13.0);INSERT INTO #data VALUES(14.0);
INSERT INTO #data VALUES(15.0);INSERT INTO #data VALUES(16.0);
INSERT INTO #data VALUES(17.0);INSERT INTO #data VALUES(18.0);
INSERT INTO #data VALUES(19.0);INSERT INTO #data VALUES(20.0);
INSERT INTO #data VALUES(21.0);INSERT INTO #data VALUES(22.0);
INSERT INTO #data VALUES(23.0);INSERT INTO #data VALUES(24.0);
INSERT INTO #data VALUES(25.0);INSERT INTO #data VALUES(26.0);
INSERT INTO #data VALUES(27.0);INSERT INTO #data VALUES(28.0);
INSERT INTO #data VALUES(29.0);INSERT INTO #data VALUES(30.0);
INSERT INTO #data VALUES(31.0);INSERT INTO #data VALUES(32.0);
INSERT INTO #data VALUES(33.0);INSERT INTO #data VALUES(34.0);
INSERT INTO #data VALUES(35.0);INSERT INTO #data VALUES(36.0);
INSERT INTO #data VALUES(37.0);INSERT INTO #data VALUES(38.0);
INSERT INTO #data VALUES(39.0);INSERT INTO #data VALUES(40.0);
INSERT INTO #data VALUES(-100.0);INSERT INTO #data VALUES(100.0);
DECLARE @median FLOAT
DECLARE @perc25 FLOAT
DECLARE @perc75 FLOAT
DECLARE @iqr FLOAT
SET @median = (SELECT MAX(NUMBER) AS Median FROM (SELECT TOP 50 PERCENT NUMBER FROM #data ORDER BY NUMBER) a)
SET @perc25 = (SELECT MAX(NUMBER) AS Median FROM (SELECT TOP 25 PERCENT NUMBER FROM #data ORDER BY NUMBER) a)
SET @perc75 = (SELECT MAX(NUMBER) AS Median FROM (SELECT TOP 75 PERCENT NUMBER FROM #data ORDER BY NUMBER) a)
print @median
print @perc25
print @perc75
SET @iqr = @perc75-@perc25
print 'IQR'
print @iqr
SELECT * FROM #data WHERE NUMBER < (@median + 1.5* @iqr) AND
NUMBER > (@median - 1.5* @iqr)
print 'number of outliers'
SELECT COUNT(*) FROM #data WHERE NUMBER < (@median - 1.5* @iqr)
OR NUMBER > (@median + 1.5* @iqr) |
Drop table #data
Create Table #data(number float)
insert into #data values(1.0);insert into #data values(2.0);
insert into #data values(3.0);insert into #data values(4.0);
insert into #data values(5.0);insert into #data values(6.0);
insert into #data values(7.0);insert into #data values(8.0);
insert into #data values(9.0);insert into #data values(10.0);
insert into #data values(11.0);insert into #data values(12.0);
insert into #data values(13.0);insert into #data values(14.0);
insert into #data values(15.0);insert into #data values(16.0);
insert into #data values(17.0);insert into #data values(18.0);
insert into #data values(19.0);insert into #data values(20.0);
insert into #data values(21.0);insert into #data values(22.0);
insert into #data values(23.0);insert into #data values(24.0);
insert into #data values(25.0);insert into #data values(26.0);
insert into #data values(27.0);insert into #data values(28.0);
insert into #data values(29.0);insert into #data values(30.0);
insert into #data values(31.0);insert into #data values(32.0);
insert into #data values(33.0);insert into #data values(34.0);
insert into #data values(35.0);insert into #data values(36.0);
insert into #data values(37.0);insert into #data values(38.0);
insert into #data values(39.0);insert into #data values(40.0);
Insert into #data values(-100.0);insert into #data values(100.0);
Declare @median float
Declare @perc25 float
Declare @perc75 float
Declare @iqr float
set @median = (SELECT MAX(number) AS Median FROM (SELECT TOP 50 PERCENT number FROM #data ORDER BY number) a)
set @perc25 = (SELECT MAX(number) AS Median FROM (SELECT TOP 25 PERCENT number FROM #data ORDER BY number) a)
set @perc75 = (SELECT MAX(number) AS Median FROM (SELECT TOP 75 PERCENT number FROM #data ORDER BY number) a)
print @median
print @perc25
print @perc75
set @iqr = @perc75-@perc25
print 'IQR'
print @iqr
select * from #data where number < (@median + 1.5* @iqr) and
number > (@median - 1.5* @iqr)
print 'number of outliers'
select COUNT(*) from #data where number < (@median - 1.5* @iqr)
OR number > (@median + 1.5* @iqr)
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
More Posts - Website
2011-03-19, 17:47
Im Mai 2011 findet der „LibraryHack 2011“ in Australien statt, bei dem die Teilnehmer aus öffentlichen Daten neue und nützliche Informationen generieren sollen. Mehr Informationen dazu unter der folgenden URL: http://data.gov.au/tag/libraryhack-2011/.
Ein interessanter Datensatz ist z.B. der zu den britischen Verurteilten, die im Zeitraum 1787-1867 nach Australien deportiert wurden: http://data.gov.au/dataset/british-convict-transportation-registers/.
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
More Posts - Website
2011-03-19, 17:43
Golem hatte vor ein paar Tagen eine Meldung, dass Australien Verwaltungsinformationen zur freien Verfügung herausgibt. Hier der Link zu Meldung: http://www.golem.de/1103/82037.html.
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
More Posts - Website
2011-03-19, 17:42
Golem hat vor ein paar Tagen gemeldet, dass der Freistaat Bayern Luftbilder mit einer 2m-Auflösung freigibt. Hier der Link zum Artikel: (http://www.golem.de/1103/82039.html)
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
More Posts - Website
2011-01-08, 20:45
Am 08.01.2011 fand im CoWoCo eine Veranstaltung zum Thema „Open Data / Open Government“ statt. Aus einer der Sessions ging die Idee hervor, eine einführende Präsentation zu erstellen, was „Open Data“ ist und wofür es gut ist.
Die Präsentation lege ich unter einer eigenen Seite, http://uweziegenhagen.de/?page_id=1214 ab.
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
More Posts - Website
2009-12-26, 10:42
Anfang 2009 war ein interessanter Artikel zu R in der NY Times: http://www.nytimes.com/2009/01/07/technology/business-computing/07program.html?_r=3.
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
More Posts - Website
Schlagwörter:
R Category:
Statistik & Zahlen |
Kommentare deaktiviert für Artikel zu R in der NY Times
2009-12-20, 21:27
Heute habe ich ein Paper von Naor und Shamir (der Shamir aus „RSA“) wiedergefunden, das sich mit visueller Kryptografie beschäftigt. Letztlich geht es darum, dass zwei oder mehr Folien, die jeweils mit einem scheinbar zufälligen Muster bedruckt werden, übereinandergelegt ein Bild ergeben. Googeln hat daraufhin auch einen interessanten Link ausgespuckt: http://klaue.net16.net/programme/ownprogs/java/visualcryptography.php#download.
Muss ich mir gelegentlich mal anschauen…
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
More Posts - Website
2009-12-19, 18:33
Da ich momentan beruflich viel mit der Ähnlichkeit von Strings zu tun habe und ich eine handliche Lösung suchte, die ohne installiertes R auskommt, habe ich mir mit C# schnell ein entsprechendes Programm geschrieben. Die Implementierung des Levenshtein-Algorithmus gab es unter http://www.merriampark.com/ldcsharp.htm, daher musste ich nur die entsprechende Anwendung drum herum stricken. Und wenn man aus der Java-Welt kommt, ist C# echt einfach.
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
More Posts - Website
Schlagwörter:
C# Category:
Statistik & Zahlen,
C# |
Kommentare deaktiviert für Levenshtein Distanz mit C# berechnen