af David Lillis, Ph. D.

i Del 3 brugte vi kommandoen lm() til at udføre mindst kvadratregressioner. I Del 4 vil vi se på mere avancerede aspekter af regressionsmodeller og se, hvad R har at tilbyde.

en måde at kontrollere for ikke-linearitet i dine data er at passe til en polynommodel og kontrollere, om polynommodellen passer bedre til dataene end en lineær model. Du kan dog også ønske at passe til en kvadratisk eller højere model, fordi du har grund til at tro, at forholdet mellem variablerne i sagens natur er polynomisk. Lad os se, hvordan du passer til en kvadratisk model i R.

vi bruger et datasæt med tællinger af en variabel, der falder over tid. Klip og indsæt følgende data i dit r-arbejdsområde.

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")

lad os vedhæfte hele datasættet, så vi kan henvise til alle variabler direkte ved navn.

attach(A)
names(A)

lad os først oprette en lineær model, selvom vi virkelig skal plotte først og først derefter udføre regressionen.

linear.model <-lm(Counts ~ Time)

vi får nu detaljerede oplysninger om vores regression gennem kommandoen resume ().

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

modellen forklarer over 74% af variansen og har meget signifikante koefficienter for Aflytningen og den uafhængige variabel og også en meget signifikant samlet model p-værdi. Lad os dog plotte tællingerne over tid og overlejre vores lineære model.

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

tn_image001

tn_image001

her er syntaksen.lab = 1.3 producerede akseetiketter af en flot størrelse.

modellen ser godt ud, men vi kan se, at plottet har krumning, der ikke forklares godt af en lineær model. Nu passer vi til en model, der er kvadratisk i tide. Vi opretter en variabel kaldet Time2, som er kvadratet af variablen tid.

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

Bemærk syntaksen involveret i montering af en lineær model med to eller flere forudsigere. Vi inkluderer hver forudsigelse og sætter et plustegn mellem dem.

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

vores kvadratiske model er i det væsentlige en lineær model i to variabler, hvoraf den ene er kvadratet af den anden. Vi ser, at uanset hvor god den lineære model var, fungerer en kvadratisk model endnu bedre og forklarer yderligere 15% af variansen. Lad os nu plotte den kvadratiske model ved at oprette et gitter med tidsværdier, der løber fra 0 til 30 sekunder i trin på 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")

nu inkluderer vi den kvadratiske model til plottet ved hjælp af kommandoen lines ().

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

tn_image002

den kvadratiske model ser ud til at passe dataene bedre end den lineære model. Vi vil se igen på passende buede modeller i vores næste blogindlæg.

se vores fulde r Tutorial serie og andre blogindlæg vedrørende R Programmering.

om forfatteren: David Lillis har undervist R til mange forskere og statistikere. Hans firma, Sigma Statistics and Research Limited, leverer både onlineinstruktion og ansigt til ansigt-værksteder om R, og kodningstjenester i R. David har en doktorgrad i Anvendt Statistik.

 bogmærke og del

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.