R是用于统计计算和图形的语言和环境。
R提供了各种各样的统计信息(线性和非线性建模,经典统计检验,时间序列分析,分类,聚类……)和图形技术,并且具有高度的可扩展性。S语言通常是统计方法论研究的首选工具,R语言提供了一种开放源代码的途径来参与该活动。
参考连接:link.
link
以下内容都是在相关连接上,学习执行总结的,目前只是只知皮毛。有些也还是不明白,希望在这方面有造诣的人,可以指点一二。
一、随笔笔记
变量分配有R对象,R对象的数据类型变为变量的数据类型。经常使用的数据类型为:
矢量
列表
矩阵
数组
因子
数据帧
1.Matrices 矩阵
矩阵是二维矩形数据集。它可以使用矩形函数的向量输入创建。
matrix(data,nrow = 1,ncol =1 ,byrow = FALSE,dimnames = NULL)
#创建一个矩阵,当把byrow为TRUE的时候
M = matrix( c('a','b','c','e','7','r'), nrow = 2, ncol = 3, byrow = TRUE)
#打印结果
print(M)
[,1] [,2] [,3]
[1,] "a" "b" "c"
[2,] "e" "7" "r"
#创建一个矩阵,当把byrow为FALSE的时候
M = matrix( c('a','b','c','e','7','r'), nrow = 2, ncol = 3, byrow = FALSE)
#打印结果
print(M)
[,1] [,2] [,3]
[1,] "a" "c" "7"
[2,] "e" "b" "r"
#我还测试了一下这样的情况,当聚和向量的个数为5,nrow是2,ncol = 3的时候
M = matrix( c('a','b','c','e','7'), nrow = 2, ncol = 3, byrow = FALSE)
#会报错
Warning message:
In matrix(c('a','b','c','e','7'), nrow = 2, ncol = 3, byrow = FALSE):
数据长度[5]不是矩阵行数[2]的整倍。
同理,聚和向量的个数为4, nrow是2,ncol = 3的时候,也会报错。
2.Array数组
虽然矩阵被限制为二维,但阵列可以具有任何数量的维度。数组函数使用一个dim属性创建一个所需的维数:
# Create an array.
a <- array(c('green','yellow'))
print(a)
运行结果为:
[1] "green" "yellow"
在下面的例子中,我们创建了一个包含两个元素的数组,每个元素为3x3个矩阵。
# Create an array.
a <- array(c('green','yellow'),dim = c(3,3,2))
print(a)
当我们执行上面的代码,它产生以下结果
, , 1
[,1] [,2] [,3]
[1,] "green" "yellow" "green"
[2,] "yellow" "green" "yellow"
[3,] "green" "yellow" "green"
, , 2
[,1] [,2] [,3]
[1,] "yellow" "green" "yellow"
[2,] "green" "yellow" "green"
[3,] "yellow" "green" "yellow"
在下面的例子中,我们创建了一个包含一个元素的数组,每个元素为3x3个矩阵。
# Create an array.
a <- array(c('green','yellow'),dim = c(3,3))
print(a)
当我们执行上面的代码,它产生以下结果
[,1] [,2] [,3]
[1,] "green" "yellow" "green"
[2,] "yellow" "green" "yellow"
[3,] "green" "yellow" "green"
3.factor因子
因子是使用向量创建的R对象。它将向量与向量之间不同的值一起存储为标签。标签总是字符,不管它在输入向量中是数字还是字符还是布尔。它们在统计建模中非常有用。使用factor()创建因子。nlevels函数给出级别计数。
# Create a vector.
apple_colors <- c('green','green','yellow','red','red','red','green')
# Create a factor object.
factor_apple <- factor(apple_colors)
# Print the factor.
print(factor_apple)
print(nlevels(factor_apple))
当我们执行上面的代码,它产生以下结果
[1] green green yellow red red red green
Levels: green red yellow
# applying the nlevels function we can know the number of distinct values
[1] 3
4.data Frame数据帧
数据帧是表格数据对象。与数据帧中的矩阵不同,每列可以包含不同的数据模式。第一列可以是数字,第二列可以是数组,第三列可以是逻辑。使用data.frame()创建数据帧。
# Create the data frame.
BMI <- data.frame(
gender = c("Male", "Male","Female"),
height = c(152, 171.5, 165),
weight = c(81,93, 78),
Age = c(42,38,26)
)
print(BMI)
当我们执行上面的代码,它产生以下结果
gender height weight Age
1 Male 152.0 81 42
2 Male 171.5 93 38
3 Female 165.0 78 26
#注意的是它是等长度的向量的列表。如果值不是一样的长度,会报错参数值意味着不同的行数:3,2。
5.算数运算符
示例如下:
> v <- c(10,8,9)
> t <- c(5,3)
> print(v -t)
运行结果为
[1] 5 5 4
#但是会报错:warning message: In v -t :长的对象长度不是端的对象长度的整倍数
#如果我们对不等长的两个向量应用算术运算,则较短向量的元素被循环以完成操作。
> v <- c(10,8,9,87)
> t <- c(5,3)
> print(v -t)
运行结果为
[1] 5 5 4 84
#这样的运行结果就是正确的
其他的运算符也是同理,具体参考链接:
https://www.w3cschool.cn/r/r_operators.html
6.跨数组元素的计算
我们可以使用apply()函数在数组中的元素上进行计算:
apply(x, margin, fun)
以下是所使用的参数的说明 -
x是一个数组。
margin是所使用的数据集的名称。
fun是要应用于数组元素的函数。
#使用apply()函数,做以下一系列操作
vector1 <- c(1,2,3)
vector2 <- c(1,2,3,4,5,6)
#先创建一个元素的数组,每个数组为 3 *3的矩阵
new.array <- array(c(vector1,vector2),dim = c(3,3))
print(new.array)
#结果
[,1] [,2] [,3]
[1,] 1 1 4
[2,] 2 2 5
[3,] 3 3 6
result <- apply(new.array, c(1), sum)
print(result)
#运行结果
[1] 6 9 12
#c(2)的结果集
result <- apply(new.array, c(2), sum)
print(result)
#运行结果
[1] 6 9 15
#再创建两个元素的数组,每个数组为 3 *3的矩阵
new.array <- array(c(vector1,vector2),dim = c(3,3,2))
print(new.array)
#运行结果
, , 1
[,1] [,2] [,3]
[1,] 1 1 4
[2,] 2 2 5
[3,] 3 3 6
, , 2
[,1] [,2] [,3]
[1,] 1 1 4
[2,] 2 2 5
[3,] 3 3 6
#c(1)数据集的结果
result <- apply(new.array, c(1), sum)
#result的运行结果
[1] 12 18 24
#c(2)数据集的结果
result1 <- apply(new.array, c(2), sum)
#result1的结果集
[1] 12 12 30
#c(3)数据集的结果
result2<- apply(new.array, c(3), sum)
#result2的结果集
[1] 27 27
#这个运行结果我理解了好久,根据数据单纯的理解为 c(1) 为跨行计算;
c(2) 为跨列计算;
c(3) 为整体计算;
这个运行结果我感觉太迷惑了,我实在是理解不了,目前只能这样理解,希望大神们能略指点一二。
7. 线性回归
参考如下:
线性回归的数学公式为:y= ax+b。
以下是所使用的参数的描述 -
y是响应变量。
x是预测变量。
a和b被称为系数常数。
使用R语言中的lm()函数创建关系模型。
lm()函数:此函数是创建预测变量与响应变量之间的关系模型。
lm()的基本语法:
lm(formula,data)
以下是所使用的参数模型説明
formula:公式是表示x和y之间的关系符号。
data:数据是应用公式的向量。
创建关系模型并获取系数:
lm(y~ x)
以下是语法的説明并扩展:
r语言中~运算符的含义:
用在回归模型中lm(y~ x1+x2),~右边为自变量,左边为因变量。
用在箱线图中barpolt(y~ x1),表示将x1视作分组变量,分组输出y的箱线图。
其中:
lm(y ~ x ) 表示有截距的线性回归模型。
lm(y ~ x +1) 表示有截距的线性回归模型。
lm(x+0)和lm(y ~ x -1) :表示过原点的线性回归。
lm(y ~ -1) :-1是指没有截距项。
下图中:
Coefficients()函数是输出模型的参数估计值。
Intercept:指的是截距
x对应的是系数。
对于一元线性回归方程y=ax+b来说,Intercept对应的值便是b的值,x对应的值便是a的值。
lm(y ~ x)的运行结果:
lm(y ~ x +1)的运行结果
lm(y ~ x -1)的运行结果
lm(y ~ -1)的运行结果
总结
目前关于R语言,我学习到了逻辑回归,这篇文章就是我自己的随笔记录,毕竟官网上这些都有,应该帮不到大家。