2016-09-21 3 views
-1

Ich versuche, die beste Verteilung für drei Variablen anzupassen, die über .csv-Datei gesammelt werden. Ich habe versucht, mit bereitgestellten Distributionen in r zu bewerten. Dann werde ich die kleinste als eine am besten angepasste Verteilung auswählen. Ich kann die Schleife jedoch nicht abschließen, da einige Fehler auftreten können, wenn Verteilungen nicht für Daten angepasst werden können.Wie kann ich Fehler verhindern, um die Schleife zu beenden?

zum Beispiel; Beta-Verteilung:

Fehler in fitdistr (xx1 [k], Verteilungen [i]): 'start' muss eine benannte Liste

So sein, wie diese Fehler überspringen kann? Hier

ist die Datei hochgeladen werden: http://www.filedropper.com/samplest

Hier ist der Code:

library(fitdistrplus) 

importeddata <- read.csv(file.choose(), sep=";",na.strings = "", stringsAsFactors=FALSE, header = TRUE) 

for(i in 1:tail(ncol(importeddata))){ 
    importeddata[,i] <- gsub(",", ".", importeddata[ , i])} 

xx1<- as.matrix(as.data.frame(lapply(importeddata, as.numeric))) 

distributions <- c("beta", "cauchy", "chi-squared", "exponential", "f", "gamma", "geometric", "log-normal", "lognormal", "logistic", "negative binomial", "normal", "Poisson", "t", "weibull") 


for(k in 1:ncol(xx1)) 
for(i in 1:length(distributions)) 
{ 
aa <- fitdistr(xx1[,k], distributions[i])$loglik 
suppressMessages(aa) 
print(aa) 
} 
+2

die Dokumentation lesen. Bei einigen Distributionen müssen Sie Startwerte für die numerische Optimierung angeben. – Roland

Antwort

1

Wenn Sie wollen einfach nur einen Code überspringen, wenn der Fehler auftritt Sie die try() Funktion verwenden können. Alles, was in der Funktion enthalten ist, wird den Code nicht brechen, wenn ein Fehler auftritt.

In Ihrem Beispiel nur Ersatz:

aa <- fitdistr(xx1[,k], distributions[i])$loglik

für

try({aa <- fitdistr(xx1[,k], distributions[i])$loglik})

Verwandte Themen