2016-07-08 11 views
1

Ich bin interessiert, Ergebnisse von der GNU-Plugin zu MS Word WordMat in R zu reproduzieren, aber ich kann sie nicht zu ähnlichen Ergebnissen kommen (Ich suche nicht nach identisch, sondern einfach ähnlich).Verschiedene Ergebnisse, die gleichen Daten und Methode (?), Bei der Verwendung von WordMat und R

Ich habe einige y und x Werte und eine Potenzfunktion, y = bx^a

folgende Daten unter Verwendung,

x <- c(15,31,37,44,51,59) 
y <- c(126,71,61,53,47,42) 

ich a = -0,8051 und b = 1117,7472 in WordMat, aber a = -0,8026 und B = 1108,2533 in R, leicht unterschiedliche Werte.

Funktioniere ich die nls-Funktion falsch oder gibt es eine bessere (transparentere) Möglichkeit, sie in R zu berechnen?

Daten und R-Code,

# x <- c(15,31,37,44,51,59) 
# y <- c(126,71,61,53,47,42) 
df <- data.frame(x,y) 
moD <- nls(y~a*x^b, df, start = list(a = 1,b=1)) 
summary(moD) 

Formula: y ~ a * x^b 

Parameters: 
    Estimate Std. Error t value Pr(>|t|)  
a 1.108e+03 1.298e+01 85.35 1.13e-07 *** 
b -8.026e-01 3.626e-03 -221.36 2.50e-09 *** 
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 0.3296 on 4 degrees of freedom 

Number of iterations to convergence: 19 
Achieved convergence tolerance: 5.813e-06 
+0

Nun, meine Bauchmuskeln. Fehler sind: MAE_WordMat = 0,218, MAE_R = 0,195, also geht es R eindeutig besser. –

+0

Vielen Dank für die Beantwortung meiner Frage. Wie haben Sie den mittleren absoluten Fehler (MAE) von WordMat und von R erhalten? Könnten Sie mir eine Referenz geben, die mir helfen kann, meinen Lehrer davon zu überzeugen, dass es R besser geht und WordMat nicht? –

+0

Nur berechnet 'y_WordMat' und' y_R' und verglichen mit 'y', es zeigte nur, dass beide nahe sind, aber R ist näher. –

Antwort

1

Es sieht aus wie WordMat die Parameter von y=b*x^a Abschätzen von der Log-Log-Regression zu tun und nicht durch die nichtlineare Least-Squares-Problem zu lösen:

> x <- c(15,31,37,44,51,59) 
> y <- c(126,71,61,53,47,42) 
> 
> (m1 <- lm(log(y)~log(x))) 

Call: 
lm(formula = log(y) ~ log(x)) 

Coefficients: 
(Intercept)  log(x) 
    7.0191  -0.8051 
> exp(coef(m1)[1]) 
(Intercept) 
    1117.747 

Um zu erklären, was hier ein wenig mehr passiert: Wenn y=b*x^a, die Logarithmus auf beiden Seiten gibt log(y)=log(b)+a*log(x), die die Form einer linearen Regression (lm() in R) hat. Log-Transformation beeinflusst jedoch auch die Varianz der Fehler (die implizit auf der rechten Seite der Frage enthalten sind), was bedeutet, dass Sie tatsächlich ein anderes Problem lösen. Was richtig ist, hängt davon ab, wie Sie das Problem genau angeben. This question on CrossValidated gibt weitere Details.

+0

Danke, das ist super hilfreich! –

+0

StackOverflow missbilligt [Kommentare verwenden, um "Danke" zu sagen] (http://meta.stackoverflow.com/questions/258004/should-thank-you-comments-be-flagged?lq=1); Wenn diese Antwort nützlich ist, können Sie sie aufwerten (wenn Sie eine ausreichende Reputation haben), und in jedem Fall, wenn sie Ihre Frage zufriedenstellend beantwortet, werden Sie ermutigt, das Häkchen anzuklicken, um sie zu akzeptieren. –

+0

Ich schätze es, dass Sie mich über SO-Kultur erziehen, ich denke, das ist kein direktes "Danke". Ich entschuldige mich für nicht _check-mark, um Ihre Antwort zu akzeptieren. Ich war zu konzentriert, um dir die Belohnung zu belohnen. –

Verwandte Themen