Calculate Bare Soil Line Intercept using R

I am using an R package called BSL (Bare soil line), package is at https://rdrr.io/cran/landsat/man/BSL.html. The BSL package uses R's lmodel2 function (https://cran.r-project.org/web/packages/lmodel2/vignettes/mod2user.pdf) to build the model II regression.

The soil line is a linear relationship between reflectance values between Red and Near-infrared wavelengths and is defined by the equation: NIR = αRed + β where NIR and Red correspond to the near-infrared and red bands of the satellite image, alpha is the slope, and beta the y intercept.

I've used it successfully to create a regression line from the satellite image of my soil study area. It is Model II regression because there is error in the NIR and Red values, and I am using the MA (major axis) method to calculate the regression (see output below). For my research, I have difficulty determining if the y-intercept β is significant or not. I know the hypothesis test to determine if the Y intercept is significant: H0:ß=0 H1:ß≠0

For example, the BSL package generates this output, but it doesn't provide any statistical test (e.g. P-value) to to determine if the Y intercept is significant:

> result.bsl\$BSL
Intercept       Slope
1323.007184    0.640505
> result.bsl\$summary

Model II regression

Call: lmodel2(formula = bsl.joint[ratio43 < quantile(ratio43, llimit), 2]~ bsl.joint[ratio43 < quantile(ratio43, llimit), 1])

n = 3   r = 0.9878535   r-square = 0.9758546
Parametric P-values:   2-tailed = 0.09932547    1-tailed = 0.04966273
Angle between the two OLS regression lines = 0.6373716 degrees

Regression results
Method Intercept     Slope Angle (degrees) P-perm (1-tailed)
1    OLS  1350.359 0.6359507        32.45435                NA
2     MA  1323.007 0.6405050        32.63976                NA
3    SMA  1303.397 0.6437702        32.77223                NA

Confidence intervals
Method 2.5%-Intercept 97.5%-Intercept 2.5%-Slope 97.5%-Slope
1    OLS      -6286.498        8987.216 -0.6351029    1.907004
2     MA      48805.536        9004.094 -0.6384682   -7.265783
3    SMA     -11020.651        4246.396  0.1537332    2.695840

Eigenvalues: 66506.64 336.0233

H statistic used for computing C.I. of MA: 0.8240161

There is a Parametric P-value to determine regression significance, but no p-value to determine significance of the y-intercept. The confidence interval for the Intercept (48805.536, 9004.094) also is unclear to me. The above output is the only output that I get from the regression using lmodel2. I also read the lmodel2 user manual but it doesn't any useful info about determining the statistical significance of the y intercept. Can anyone help me determine statistical significance of the Y Intercept from the above output?

• What does a scatterplot of your data with the regression lines on it look like? Section 5.5 of vignette("mod2user") shows what can happen with random data with no structure and looking at the wild variations here I suspect that might be the case. – Spacedman Jan 8 at 19:07
• I guess your issue with the CI for MA is that the interval doesn't contain the estimate. But the slope error is so large that the intercept might not be between the two values, but from the highest value up to +Inf and then -Inf to the lowest value as the regression line swings round by >90 degrees. Section 5.5 in the vignette shows an example where the CIs are NA because the slope could be in any direction. – Spacedman Jan 8 at 19:10
• @Spacedman It looks like I solved the problem by changing the quantile parameters by decreasing the upper limit and increasing the lower limit in the BSL function and the results seem better: >result.bsl<-BSL(red, nir, method = "quantile", ulimit = 0.98, llimit = 0.02) >Intercept Slope 64.0498347 0.8622859 Parametric P-values: 2-tailed=0.00021862 1-tailed=0.00010931 Confidence interval MA: Method 2.5%-Intercept 97.5%-Intercept 2.5%-Slope 97.5%-Slope MA -2027.078 1619.472 0.6032886 1.210485 H-statistic for C.I. of MA: 0.0282071 – J. P. Jan 10 at 18:51
• @Spacedman Do you know what the H statistic describes and what's an acceptable H statistic? Is it feasible to test the y-intercept significance with the quantile parameter as BSL(red, nir, method = "quantile", ulimit = 0.98, llimit = 0.02)? See new results in my first comment. For my project, I am testing the regression being greater than 0 (1-tailed test) because Bare soil lines must always be greater than zero. Thanks. – J. P. Jan 10 at 19:00