de David Lillis, Ph.D.

în partea 3 am folosit comanda lm() pentru a efectua cele mai mici regresii pătrate. În partea 4 vom analiza aspecte mai avansate ale modelelor de regresie și vom vedea ce are de oferit R.

o modalitate de a verifica neliniaritatea datelor dvs. este de a se potrivi unui model polinomial și de a verifica dacă modelul polinomial se potrivește datelor mai bine decât un model liniar. Cu toate acestea, ați putea dori, de asemenea, să se potrivească unui model pătratic sau superior, deoarece aveți motive să credeți că relația dintre variabile este în mod inerent polinomială în natură. Să vedem cum se potrivește un model pătratic în R.

vom folosi un set de date de numărări ale unei variabile care scade în timp. Tăiați și lipiți următoarele date în spațiul de lucru R.

A <- structure(list(Time = c(0, 1, 2, 4, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 29, 30), Counts = c(126.6, 101.8, 71.6, 101.6, 68.1, 62.9, 45.5, 41.9, 46.3, 34.1, 38.2, 41.7, 24.7, 41.5, 36.6, 19.6, 22.8, 29.6, 23.5, 15.3, 13.4, 26.8, 9.8, 18.8, 25.9, 19.3)), .Names = c("Time", "Counts"),row.names = c(1L, 2L, 3L, 5L, 7L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 19L, 20L, 21L, 22L, 23L, 25L, 26L, 27L, 28L, 29L, 30L, 31L),class = "data.frame")

să atașăm întregul set de date, astfel încât să ne putem referi la toate variabilele direct după nume.

attach(A)
names(A)

mai întâi, să stabilim un model liniar, deși într-adevăr ar trebui să complotăm mai întâi și abia apoi să efectuăm regresia.

linear.model <-lm(Counts ~ Time)

acum obținem informații detaliate despre regresia noastră prin comanda summary ().

summary(linear.model)Call:lm(formula = Counts ~ Time)Residuals: Min 1Q Median 3Q Max -20.084 -9.875 -1.882 8.494 39.445 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 87.1550 6.0186 14.481 2.33e-13 ***Time -2.8247 0.3318 -8.513 1.03e-08 ***---Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1Residual standard error: 15.16 on 24 degrees of freedomMultiple R-squared: 0.7512, Adjusted R-squared: 0.7408 F-statistic: 72.47 on 1 and 24 DF, p-value: 1.033e-08

modelul explică peste 74% Din varianță și are coeficienți foarte semnificativi pentru interceptare și variabila independentă și, de asemenea, o valoare generală a modelului P extrem de semnificativă. Cu toate acestea, să complotăm numărul în timp și să suprapunem modelul nostru liniar.

plot(Time, Counts, pch=16, ylab = "Counts ", cex.lab = 1.3, col = "red" )abline(lm(Counts ~ Time), col = "blue")

tn_image001

tn_image001

aici sintaxa cex.laborator = 1.3 etichete axis produse de o dimensiune frumos.

modelul arată bine, dar putem vedea că complotul are curbură care nu este explicată bine de un model liniar. Acum ne potrivim cu un model care este pătratic în timp. Creăm o variabilă numită timp2 care este pătratul timpului variabil.

Time2 <- Time^2
quadratic.model <-lm(Counts ~ Time + Time2)

rețineți sintaxa implicată în montarea unui model liniar cu doi sau mai mulți predictori. Includem fiecare predictor și punem un semn plus între ele.

summary(quadratic.model)Call:lm(formula = Counts ~ Time + Time2)Residuals: Min 1Q Median 3Q Max -24.2649 -4.9206 -0.9519 5.5860 18.7728 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 110.10749 5.48026 20.092 4.38e-16 ***Time -7.42253 0.80583 -9.211 3.52e-09 ***Time2 0.15061 0.02545 5.917 4.95e-06 ***---Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1Residual standard error: 9.754 on 23 degrees of freedomMultiple R-squared: 0.9014, Adjusted R-squared: 0.8928F-statistic: 105.1 on 2 and 23 DF, p-value: 2.701e-12

modelul nostru pătratic este în esență un model liniar în două variabile, dintre care una este pătratul celeilalte. Vedem că, oricât de bun a fost modelul liniar, un model pătratic funcționează și mai bine, explicând încă 15% din varianță. Acum să trasăm modelul pătratic prin configurarea unei grile de valori de timp care rulează de la 0 la 30 de secunde în trepte de 0,1 s.

timevalues <- seq(0, 30, 0.1)
predictedcounts <- predict(quadratic.model,list(Time=timevalues, Time2=timevalues^2))
plot(Time, Counts, pch=16, xlab = "Time (s)", ylab = "Counts", cex.lab = 1.3, col = "blue")

acum includem modelul pătratic la complot folosind comanda lines ().

lines(timevalues, predictedcounts, col = "darkgreen", lwd = 3)

tn_image002

modelul pătratic pare să se potrivească datelor mai bine decât modelul liniar. Ne vom uita din nou la montarea modelelor curbate în următoarea noastră postare pe blog.

vedeți seria noastră completă de tutoriale R și alte postări de blog cu privire la programarea R.

despre autor: David Lillis a predat R multor cercetători și statisticieni. Compania sa, Sigma Statistics and Research Limited, oferă atât instruire on-line și față-în-față ateliere de lucru pe R, și servicii de codificare în R. David deține un doctorat în Statistică Aplicată.

marcați și partajați

Lasă un răspuns

Adresa ta de email nu va fi publicată.