R语言--统计(六)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mazaiting/article/details/85001691
1. 平均值、中位数和模式
  • Mean平均值
    I. 语法
    用于计算R中的平均值的基本语法是 -
    mean(x, trim = 0, na.rm = FALSE, ...)
    以下是所使用的参数的描述 -
    -- x是输入向量。
    -- trim用于从排序向量的两端丢弃一些观察结果。
    -- na.rm用于从输入向量中删除缺失值。

示例:

# 创建向量
x <- c(12, 7, 3, 4.2, 18, 2, 54, -21, 8, -5)
# 执行
result.mean <- mean(x)
print(result.mean)

打印结果:


3110861-864985be2e68d8e3.png
图1.png

II. 修剪选项

# 创建向量
x <- c(12, 7, 3, 4.2, 18, 2, 54, -21, 8, -5)
# 执行
result.mean <- mean(x)
print(result.mean)
# 修剪选项
result.mean <- mean(x, trim = 0.3)
print(result.mean)

打印结果:


3110861-3d309628f69a3987.png
图2.png

III. NA选项

# NA选项--如果有缺失值,则平均函数返回NA
x <- c(12, 7, 3, 4.2, 18, 2, 54, -21, 8, -5, NA)
result.mean <- mean(x)
print(result.mean)

result.mean <- mean(x, na.rm = TRUE)
print(result.mean)

打印结果:


3110861-bef50146f6a7e745.png
图3.png
  • Median中位数
    I. 语法
    计算R语言中位数的基本语法是 -
    median(x, na.rm = FALSE)
    以下是所使用的参数的描述 -
    -- x是输入向量。
    -- na.rm用于从输入向量中删除缺失值。

II. 示例

# 创建向量
x <- c(12, 7, 3, 4.2, 18, 2, 54, -21, 8, -5)
# 查找中位数
median.result <- median(x)
print(median.result)

打印结果:


3110861-76345f3cd292429e.png
图4.png
  • Mode模式
    I. 模式是一组数据中出现次数最多的值。
    II. 示例
# 创建函数
getmode <- function(v) {
    uniqv <- unique(v)
    uniqv[which.max(tabulate(match(v, uniqv)))]
}
# 创建向量
v <- c(2, 1, 2, 3, 1, 2, 3, 4, 1, 5, 5, 3, 2, 3)
# 计算模式
result <- getmode(v)
print(result)

# 创建字符向量
charv <- c("o", "it", "the", "it", "it")
# 获取模式
result <- getmode(charv)
print(result)

打印结果:


3110861-daf9e029eb0bdabc.png
图5.png
2. 线性回归
  • 方程
    线性回归的一般数学方程为 -
y = ax + b

以下是所使用的参数的描述 -
-- y是响应变量。
-- x是预测变量。
-- ab被称为系数常数。

  • 建立回归步骤
1. 进行收集高度和相应重量的观测值的样本的实验。
2. 使用R语言中的lm()函数创建关系模型。
3. 从创建的模型中找到系数,并使用这些创建数学方程
4. 获得关系模型的摘要以了解预测中的平均误差。 也称为残差。
5. 为了预测新人的体重,使用R中的predict()函数。
  • LM()函数
    此函数创建预测变量和响应变量之间的关系模型。
    语法
    线性回归中lm()函数的基本语法是 -
lm(formula,data)

以下是所使用的参数的说明 -
-- 公式是表示xy之间的关系的符号。
-- 数据是应用公式的向量。

  • 创建关系模型并获取系数
# 创建关系模型并获取系数
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)
# 应用lm()函数
relation <- lm(y~x)
print(relation)

打印结果:


3110861-d7b8079f72540954.png
图6.png

其中a=0.6746, b=-38.4551

  • 获取相关的摘要
# 获取相关摘要
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)
# 应用lm()函数
relation <- lm(y~x)
print(summary(relation))

打印结果:


3110861-b00b1166a7f7059e.png
图7.png
  • predict()函数
    语法
    线性回归中的predict()的基本语法是 -
    predict(object, newdata)
    以下是所使用的参数的描述 -
    -- object是已使用lm()函数创建的公式。
    -- newdata是包含预测变量的新值的向量。

  • 预测新人的体重

# 预测新人体重
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)
# 应用lm()函数
relation <- lm(y~x)
# 身高170,预测体重
a <- data.frame(x = 170)
result <- predict(relation, a)
print(result)

打印结果:


3110861-c23d26ec3b78dea1.png
图8.png
  • 以图形方式可视化回归
# 图形方式可视化回归
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)
# 应用lm()函数
relation <- lm(y~x)
# 设置文件名
png(file = "linearregression.png")
# 绘制图表
# 绘制点
plot(y, x, col = "blue", main = "Height & Weight Regression")
# 绘制线
abline(lm(x~y), cex = 1.3, pch = 16, xlab = "Weight in Kg", ylab = "Height in cm")

# 保存文件
dev.off()

效果:


3110861-bc3e4f0cdda0d854.png
linearregression.png
3. 多重回归
  • 方程
    多元回归的一般数学方程为 -
y = a + b1x1 + b2x2 +...bnxn

以下是所使用的参数的描述 -
-- y是响应变量。
-- a,b1,b2 ... bn是系数。
-- x1,x2,... xn是预测变量。

  • lm()函数
    此函数创建预测变量和响应变量之间的关系模型。
    语法
    lm()函数在多元回归中的基本语法是 -
lm(y ~ x1+x2+x3...,data)

以下是所使用的参数的描述 -
-- 公式是表示响应变量和预测变量之间的关系的符号。
-- 数据是应用公式的向量。

  • 创建关系模型并获取系数
# 创建模型并获取系数
input <- mtcars[,c("mpg", "disp", "hp", "wt")]
# 创建关系模型
model <- lm(mpg~disp+hp+wt, data = input)
# 显示模型
print(model)
# 打印系数
cat("# # # # The Coefficient Values # # # ","
")
# 打印系数
a <- coef(model)[1]
print(a)
Xdisp <- coef(model)[2]
Xhp <- coef(model)[3]
Xwt <- coef(model)[4]
print(Xdisp)
print(Xhp)
print(Xwt)

打印结果:


3110861-f0461a812e1cac52.png
图9.png
4. 逻辑回归
  • 逻辑回归
y = 1/(1+e^-(a+b1x1+b2x2+b3x3+...))

以下是所使用的参数的描述 -
-- y是响应变量。
-- x是预测变量。
-- a和b是作为数字常数的系数。
用于创建回归模型的函数是glm()函数。

  • 语法
    逻辑回归中glm()函数的基本语法是 -
glm(formula,data,family)

以下是所使用的参数的描述 -
-- formula是表示变量之间的关系的符号。
-- data是给出这些变量的值的数据集。
-- family是R语言对象来指定模型的细节。 它的值是二项逻辑回归。

  • 创建回归模型
# 创建回归模型
input <- mtcars[,c("am", "cyl", "hp", "wt")]
am.data = glm(formula = am ~ cyl + hp + wt, data = input, family = binomial)
print(summary(am.data))

打印结果:


3110861-692cbd17454db4e4.png
图10.png
5. 标准分布
  • 函数
dnorm(x, mean, sd)
pnorm(x, mean, sd)
qnorm(p, mean, sd)
rnorm(n, mean, sd)

以下是在上述功能中使用的参数的描述 -
-- x是数字的向量。
-- p是概率的向量。
-- n是观察的数量(样本大小)。
-- mean是样本数据的平均值。 它的默认值为零。
-- sd是标准偏差。 它的默认值为1。

  • dnorm()
# dnorm() - 该函数给出给定平均值和标准偏差在每个点的概率分布的高度。
x <- seq(-10, 10, .1)
y <- dnorm(x, mean = 2.5, sd = 0.5)
# 设置文件名
png(file = "dnorm.png")
# 绘制点
plot(x,y)
dev.off()

效果:


3110861-fb697d9b07ce9806.png
dnorm.png
  • pnorm()
# pnorm() - 该函数给出正态分布随机数的概率小于给定数的值。 它也被称为“累积分布函数”。
x <- seq(-10, 10, .2)
y <- pnorm(x, mean = 2.5, sd = 2)
# 设置文件名
png(file = "pnorm.png")
# 绘制点
plot(x, y)
dev.off()

效果:


3110861-6720eb296b1f4016.png
pnorm.png
  • qnorm
# qnorm() - 该函数采用概率值,并给出累积值与概率值匹配的数字。
x <- seq(0, 1, by = 0.02)
y <- qnorm(x, mean = 2, sd = 1)
# 设置文件名
png(file = "qnorm.png")
plot(x, y)
dev.off()

效果:


3110861-9fc5643c4ac67649.png
qnorm.png
  • rnorm()
# rnorm() - 此函数用于生成分布正常的随机数。 它将样本大小作为输入,并生成许多随机数。 我们绘制一个直方图来显示生成的数字的分布。
y = rnorm(50)
png(file = "rnorm.png")
hist(y, main = "Normal Distribution")
dev.off()

效果:


3110861-22fcf178b2ad31d9.png
rnorm.png
6. 二项分布
  • 函数
dbinom(x, size, prob)
pbinom(x, size, prob)
qbinom(p, size, prob)
rbinom(n, size, prob)

以下是所使用的参数的描述 -
-- x是数字的向量。
-- p是概率向量。
-- n是观察的数量。
-- size是试验的数量。
-- prob是每个试验成功的概率。

  • dbinom()
x = seq(0, 50, 1)
y = dbinom(x, 50, 0.5)
png(file = "dbinom.png")
plot(x, y)
dev.off()

效果:


3110861-5de9a82fee0f4913.png
dbinom.png
  • pbinom()
# pbinom() - 此函数给出事件的累积概率。 它是表示概率的单个值。
x <- pbinom(26, 51, 0.5)
print(x)

打印结果:


3110861-150ffea00a3a80c7.png
图11.png
  • qbinom()
# qbinom() - 该函数采用概率值,并给出累积值与概率值匹配的数字。
x <- qbinom(0.25, 51, 1/2)
print(x)

打印结果:


3110861-a808b2619584609b.png
图12.png
  • rbinom()
# rbinom() - 该函数从给定样本产生给定概率的所需数量的随机值。
x <- rbinom(8, 150, .4)
print(x)

打印结果:


3110861-914dcf59ce61631b.png
图13.png
7. 泊松分布
  • 数学方程
log(y) = a + b1x1 + b2x2 + bnxn.....

以下是所使用的参数的描述 -

  • y是响应变量。
  • a和b是数字系数。
  • x是预测变量。
    用于创建泊松回归模型的函数是glm()函数。
  • glm()语法
glm(formula,data,family)

以下是在上述功能中使用的参数的描述 -
-- formula是表示变量之间的关系的符号。
-- data是给出这些变量的值的数据集。
-- family是R语言对象来指定模型的细节。 它的值是“泊松”的逻辑回归。

  • 创建回归
# 创建回归模型
# 内置的数据集“warpbreaks”
output <- glm(formula = breaks ~ wool + tension,
        data = warpbreaks,
        family = poisson
    )
print(summary(output))

打印结果:


3110861-7a82a18f94256886.png
图14.png
8. 协方差分析
  • 模型与分类变量和预测变量之间的相互作用
# 模型与分类变量和预测变量之间的相互作用
result <- aov(mpg~hp*am, data = mtcars)
print(summary(result))

打印结果:


3110861-d5b5ab1fcbf3e80e.png
图15.png
  • 没有分类变量和预测变量之间相互作用的模型
# 没有分类变量和预测变量之间相互作用的模型
result <- aov(mpg~hp+am, data = mtcars)
print(summary(result))

打印结果:


3110861-06563c18609f5375.png
图16.png
  • 比较两个模型
# 比较两个模型
input <- mtcars
result1 <- aov(mpg~hp*am, data = input)
result2 <- aov(mpg~hp+am, data = input)
# 比较两个模型
print(anova(result1, result2))

打印结果:


3110861-eac637daf5abd3ed.png
图17.png
9. 时间序列分析
  • 语法
timeseries.object.name <-  ts(data, start, end, frequency)

以下是所使用的参数的描述 -
-- data是包含在时间序列中使用的值的向量或矩阵。
-- start以时间序列指定第一次观察的开始时间。
-- end指定时间序列中最后一次观测的结束时间。
-- frequency指定每单位时间的观测数。
除了参数“data”,所有其他参数是可选的。

  • 单时间序列
# 单时间序列
rainfall <- c(799,1174.8,865.1,1334.6,635.4,918.5,685.5,998.6,784.2,985,882.8,1071)
# 转换为时间序列对象
rainfall.timeseries <- ts(rainfall, start = c(2012, 1), frequency = 12)
print(rainfall.timeseries)
# 设置图片
png(file = "rainfall.png")
# 绘图
plot(rainfall.timeseries)
# 保存图片
dev.off()

打印结果:


3110861-0b09eae8a6763759.png
图18.png

效果:


3110861-6691d51af213cfa1.png
rainfall.png
  • 不同的时间间隔
    ts()函数中的频率参数值决定了测量数据点的时间间隔。 值为12表示时间序列为12个月。 其他值及其含义如下 -
    -- 频率= 12指定一年中每个月的数据点。
    -- 频率= 4每年的每个季度的数据点。
    -- 频率= 6每小时的10分钟的数据点。
    -- 频率= 24 * 6将一天的每10分钟的数据点固定。
  • 多时间序列
# 多时间序列
rainfall1 <- c(799,1174.8,865.1,1334.6,635.4,918.5,685.5,998.6,784.2,985,882.8,1071)
rainfall2 <- c(655,1306.9,1323.4,1172.2,562.2,824,822.4,1265.5,799.6,1105.6,1106.7,1337.8)
# 转换为矩阵
combined.rainfall <- matrix(c(rainfall1, rainfall2), nrow = 12)
# 转换为时间序列
rainfall.timeseries <- ts(combined.rainfall, start = c(2012, 1), frequency = 12)
print(rainfall.timeseries)
# 设置文件名
png(file = "rainfall_combined.png")
# 绘制点
plot(rainfall.timeseries, main = "Multiple Time Series")
# 保存文件
dev.off()

打印结果:


3110861-dc71031ec0f63279.png
图19.png

效果:


3110861-a694da5fdf910950.png
rainfall_combined.png
10. 非线性最小二乘
  • 语法
nls(formula, data, start)

以下是所使用的参数的描述 -
-- formula是包括变量和参数的非线性模型公式。
-- data是用于计算公式中变量的数据框。
-- start是起始估计的命名列表或命名数字向量。

  • 示例
# 非线性最小二乘法
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)
# 设置图片
png(file = "nls.png")
# 绘图
plot(xvalues, yvalues)
# 取假设值并适合模型。
model <- nls(yvalues ~ b1 * xvalues^2 + b2, start = list(b1 = 1, b2 = 3))
# 绘制图表
new.data <- data.frame(xvalues = seq(min(xvalues), max(xvalues), len = 100))
lines(new.data$xvalues, predict(model, newdata = new.data))
# 保存文件
dev.off()
# 获取model平法和
print(sum(resid(model)^2))
# 获得所选系数值的置信区间。
print(confint(model))

打印结果:


3110861-2c22f3c35c20c364.png
图20.png

效果图:


3110861-472d5aa445522b94.png
nls.png
11. 决策树
  • 安装包
# 安装包 -- party包中用于创建和分析决策树的函数ctree()
install.packages("party", repos="https://cran.cnr.berkeley.edu/")
  • 语法
ctree(formula, data)

以下是所使用的参数的描述 -
-- formula是描述预测变量和响应变量的公式。
-- data是所使用的数据集的名称。

  • 创建决策树
# 创建决策树
library(party)
# 创建输入数据帧
input.data <- readingSkills[c(1:105),]
# 设置文件名
png(file = "decision_tree.png")
# 创建树
output.tree <- ctree(
        nativeSpeaker ~ age + shoeSize + score,
        data = input.data
    )
# 绘图
plot(output.tree)
# 保存文件
dev.off()

打印结果:


3110861-81a10c26797415e5.png
图21.png

效果:


3110861-2c68aeed9034d82c.png
decision_tree.png
12. 随机森林算法
  • 安装包
# 安装包 -- randomForest具有函数randomForest(),用于创建和分析随机森林。
install.packages("randomForest", repos="https://cran.cnr.berkeley.edu/")
  • 语法
randomForest(formula, data)

以下是所使用的参数的描述 -
formula是描述预测变量和响应变量的公式。
data是所使用的数据集的名称。

  • 创建森林
library(party)
library(randomForest)

# 创建森林
output.forest <- randomForest(nativeSpeaker ~ age + shoeSize + score, data = readingSkills)
print(output.forest)
print(importance(output.forest, type = 2))

打印结果:


3110861-0fcbf78d78bfabcb.png
图22.png
13. 生存分析
  • 语法
Surv(time,event)
survfit(formula)

以下是所使用的参数的描述 -
-- time是直到事件发生的跟踪时间。
-- event指示预期事件的发生的状态。
-- formula是预测变量之间的关系。

  • 应用生存分析
# 应用函数
library("survival")
# 创建生存对象
survfit(Surv(pbc$time, pbc$status == 2) ~ 1)
# 设置文件名
png(file = "survival.png")
# 绘制图
plot(survfit(Surv(pbc$time, pbc$status == 2) ~ 1))
# 保存
dev.off()

打印结果:


3110861-d1c49a002c64178f.png
图23.png

效果图:


3110861-187162b239c07d21.png
survival.png
14. 卡方检验
  • 语法
chisq.test(data)

以下是所使用的参数的描述 -
-- data是以包含观察中变量的计数值的表的形式的数据。

  • 卡方校验
# 卡方检验
library("MASS")
# 创建数据帧
car.data <- data.frame(Cars93$AirBags, Cars93$Type)
# 创建表
car.data = table(Cars93$AirBags, Cars93$Type)
print(car.data)
# 卡方校验
print(chisq.test(car.data))

打印结果:


3110861-0f2e6423b6ca89ba.png
图24.png

代码下载

猜你喜欢

转载自blog.csdn.net/mazaiting/article/details/85001691