R - Doğrusal Olmayan En Küçük Kare

Regresyon analizi için gerçek dünya verilerini modellerken, nadiren modelin denkleminin doğrusal bir grafik veren doğrusal bir denklem olduğunu gözlemliyoruz. Çoğu zaman, gerçek dünya verileri modelinin denklemi, 3'ün bir üssü veya bir günah işlevi gibi daha yüksek derecede matematiksel işlevleri içerir. Böyle bir senaryoda, modelin grafiği bir çizgi yerine bir eğri verir. Hem doğrusal hem de doğrusal olmayan regresyonun amacı, verilerinize en yakın çizgiyi veya eğriyi bulmak için modelin parametrelerinin değerlerini ayarlamaktır. Bu değerleri bulduktan sonra yanıt değişkenini iyi bir doğrulukla tahmin edebileceğiz.

En Küçük Kareler regresyonunda, regresyon eğrisinden farklı noktaların dikey uzaklıklarının karelerinin toplamının minimize edildiği bir regresyon modeli oluşturuyoruz. Genellikle tanımlanmış bir modelle başlar ve katsayılar için bazı değerler alırız. Daha sonra uygularıznls() Güven aralıkları ile birlikte daha doğru değerleri elde etmek için R'nin fonksiyonu.

Sözdizimi

R'de doğrusal olmayan bir en küçük kare testi oluşturmak için temel sözdizimi -

nls(formula, data, start)

Aşağıda kullanılan parametrelerin açıklaması verilmiştir -

  • formula değişkenleri ve parametreleri içeren doğrusal olmayan bir model formülüdür.

  • data formüldeki değişkenleri değerlendirmek için kullanılan bir veri çerçevesidir.

  • start başlangıç ​​tahminlerinin adlandırılmış bir listesi veya adlandırılmış sayısal vektörüdür.

Misal

Katsayılarının başlangıç ​​değerlerinin varsayıldığı doğrusal olmayan bir modeli ele alacağız. Daha sonra, bu varsayılan değerlerin güven aralıklarının ne olduğunu göreceğiz, böylece bu değerlerin modele ne kadar iyi girdiğine karar verebiliriz.

Öyleyse bu amaç için aşağıdaki denklemi ele alalım -

a = b1*x^2+b2

Başlangıç ​​katsayılarının 1 ve 3 olduğunu varsayalım ve bu değerleri nls () fonksiyonuna sığdıralım.

xvalues <- c(1.6,2.1,2,2.23,3.71,3.25,3.4,3.86,1.19,2.21)
yvalues <- c(5.19,7.43,6.94,8.11,18.75,14.88,16.06,19.12,3.21,7.58)

# Give the chart file a name.
png(file = "nls.png")


# Plot these values.
plot(xvalues,yvalues)


# Take the assumed values and fit into the model.
model <- nls(yvalues ~ b1*xvalues^2+b2,start = list(b1 = 1,b2 = 3))

# Plot the chart with new data by fitting it to a prediction from 100 data points.
new.data <- data.frame(xvalues = seq(min(xvalues),max(xvalues),len = 100))
lines(new.data$xvalues,predict(model,newdata = new.data))

# Save the file.
dev.off()

# Get the sum of the squared residuals.
print(sum(resid(model)^2))

# Get the confidence intervals on the chosen values of the coefficients.
print(confint(model))

Yukarıdaki kodu çalıştırdığımızda şu sonucu verir -

[1] 1.081935
Waiting for profiling to be done...
       2.5%    97.5%
b1 1.137708 1.253135
b2 1.497364 2.496484

B1'in değerinin 1'e, b2'nin değerinin 3'e değil 2'ye daha yakın olduğu sonucuna varabiliriz.