J.K Kim
J.K Kim

Reputation: 934

How to calculate R-squared in nls package (non-linear model) in R?

I analyzed non-linear regression using nls package.

power<- nls(formula= agw~a*area^b, data=calibration_6, start=list(a=1, b=1))
summary(power)

I heard in non-linear model, R-squared is not valid and rather than R-squared, we usually show residual standard error which R provides

However, I just want to know what R-squared is. Is that possible to check R-squared in nls package?

Many thanks!!!

enter image description here

Upvotes: 0

Views: 2548

Answers (1)

J.K Kim
J.K Kim

Reputation: 934

I found the solution. This method might not be correct in terms of statistics (As R^2 is not valid in non-linear model), but I just want see the overall goodness of fit for my non-linear model.

Step 1> to transform data as log (common logarithm)

When I use non-linear model, I can't check R^2

nls(formula= agw~a*area^b, data=calibration, start=list(a=1, b=1))

Therefore, I transform my data to log

x1<- log10(calibration$area)
y1<- log10(calibration$agw)  

cal<- data.frame (x1,y1)

Step 2> to analyze linear regression

logdata<- lm (formula= y1~ x1, data=cal)
summary(logdata)

Call:
lm(formula = y1 ~ x1)

enter image description here

This model provides, y= -0.122 + 1.42x

But, I want to force intercept to zero, therefore,

Step 3> to force intercept to zero

logdata2<- lm (formula= y1~ 0 + x1)
summary(logdata2)

enter image description here

Now the equation is y= 1.322x, which means log (y) = 1.322 log (x),

so it's y= x^1.322.

In power curve model, I force intercept to zero. The R^2 is 0.9994

Upvotes: 1

Related Questions