Hoe een normale verdeling in r te plotten


Om een normale verdeling in R te plotten, kunnen we basis R gebruiken of een geavanceerder pakket zoals ggplot2 installeren.

BaseR gebruiken

Hier zijn drie voorbeelden van het maken van een normale verdelingsplot met behulp van Base R.

Voorbeeld 1: normale verdeling met gemiddelde = 0 en standaarddeviatie = 1

Om een normale verdelingsplot te maken met gemiddelde = 0 en standaarddeviatie = 1, kunnen we de volgende code gebruiken:

 #Create a sequence of 100 equally spaced numbers between -4 and 4
x <- seq(-4, 4, length=100)

#create a vector of values that shows the height of the probability distribution
#for each value in x
y <- dnorm(x)

#plot x and y as a scatterplot with connected lines (type = "l") and add
#an x-axis with custom labels
plot(x,y, type = "l", lwd = 2, axes = FALSE, xlab = "", ylab = "")
axis(1, at = -3:3, labels = c("-3s", "-2s", "-1s", "mean", "1s", "2s", "3s"))

Dit levert het volgende plot op:

Voorbeeld 2: Normale verdeling met gemiddelde = 0 en standaarddeviatie = 1 (zonder code)

We kunnen ook een normale verdelingsplot maken zonder x en y te definiëren, en eenvoudigweg de functie „curve“ te gebruiken met behulp van de volgende code:

 curve(dnorm, -3.5, 3.5, lwd=2, axes = FALSE, xlab = "", ylab = "")
axis(1, at = -3:3, labels = c("-3s", "-2s", "-1s", "mean", "1s", "2s", "3s"))

Dit genereert precies dezelfde plot:

Voorbeeld 3: Normale verdeling met aangepast gemiddelde en standaarddeviatie

Om een normale verdelingsplot te maken met door de gebruiker gedefinieerde gemiddelde en standaarddeviatie, kunnen we de volgende code gebruiken:

 #define population mean and standard deviation
population_mean <- 50
population_sd <- 5

#define upper and lower bound
lower_bound <- population_mean - population_sd
upper_bound <- population_mean + population_sd

#Create a sequence of 1000 x values based on population mean and standard deviation
x <- seq(-4, 4, length = 1000) * population_sd + population_mean

#create a vector of values that shows the height of the probability distribution
#for each value in x
y <- dnorm(x, population_mean, population_sd)

#plot normal distribution with customized x-axis labels
plot(x,y, type = "l", lwd = 2, axes = FALSE, xlab = "", ylab = "")
sd_axis_bounds = 5
axis_bounds <- seq(-sd_axis_bounds * population_sd + population_mean,
                    sd_axis_bounds * population_sd + population_mean,
                    by = population_sd)
axis(side = 1, at = axis_bounds, pos = 0)

Dit levert het volgende plot op:

Met behulp van ggplot2

Een andere manier om een normale verdelingsplot in R te maken is door het ggplot2-pakket te gebruiken. Hier zijn twee voorbeelden van het maken van een normale verdelingsplot met ggplot2.

Voorbeeld 1: normale verdeling met gemiddelde = 0 en standaarddeviatie = 1

Om een normale verdelingsplot te maken met gemiddelde = 0 en standaarddeviatie = 1, kunnen we de volgende code gebruiken:

 #install (if not already installed) and load ggplot2
if(!(require(ggplot2))){install.packages('ggplot2')}

#generate a normal distribution plot
ggplot(data.frame(x = c(-4, 4)), aes(x = x)) +
stat_function(fun = dnorm)

Dit levert het volgende plot op:

Voorbeeld 2: Normale verdeling met behulp van de dataset ‚mtcars‘

De volgende code laat zien hoe u een normale verdeling kunt maken voor de mijlen per gallon- kolom in de in mtcars ingebedde R-gegevensset:

 ggplot(mtcars, aes(x = mpg)) +
stat_function(
fun = dnorm,
args = with(mtcars, c(mean = mean(mpg), sd = sd(mpg)))
) +
scale_x_continuous("Miles per gallon")

Dit levert het volgende plot op:

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert