data science foll


  • Home

  • Tags

  • Categories

  • Archives

  • Search

Linux ls 命令

Posted on 2019-03-26 | In Linux | Visitors:

Linux ls命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。

语法
1
ls [-alrtAFR] [name...]
参数
  • -a 显示所有文件及目录 (ls内定将文件名或目录名称开头为”.”的视为隐藏档,不会列出)
  • -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
  • -r 将文件以相反次序显示(原定依英文字母次序)
  • -t 将文件依建立时间之先后次序列出
  • -A 同 -a ,但不列出 “.” (目前目录) 及 “..” (父目录)
  • -F 在列出的文件名称后加一符号;例如可执行档则加 “*”, 目录则加 “/“
  • -R 若目录下有文件,则以下之文件亦皆依序列出
实例

列出根目录()下的所有目录:

1
2
3
4
# ls /
bin dev lib media net root srv upload www
boot etc lib64 misc opt sbin sys usr
home lost+found mnt proc selinux tmp var

列出目前工作目录下所有名称是 s 开头的文件,越新的排越后面 :

1
ls -ltr s*

将 /bin 目录以下所有目录及文件详细资料列出 :

1
ls -lR /bin

列出目前工作目录下所有文件及目录;目录于名称后加 “/“, 可执行档于名称后加 “*” :

1
ls -AF

Linux rmdir 命令

Posted on 2019-03-26 | In Linux | Visitors:

Linux rmdir命令删除空的目录。

语法
1
rmdir [-p] dirName
  • -p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。
    实例
    将工作目录下,名为 AAA 的子目录删除 :
    1
    rmdir AAA

在工作目录下的 BBB 目录中,删除名为 Test 的子目录。若 Test 删除后,BBB 目录成为空目录,则 BBB 亦予删除。

1
rmdir -p BBB/Test

Linux cd 命令

Posted on 2019-03-26 | In Linux | Visitors:

Linux cd命令用于切换当前工作目录至 dirName(目录参数)。
其中 dirName 表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的 home 目录 (也就是刚 login 时所在的目录)。
另外,”~” 也表示为 home 目录 的意思,”.” 则是表示目前所在的目录,”..” 则表示目前目录位置的上一层目录。

语法
1
cd [dirName]
  • dirName:要切换的目标目录。
实例

跳到 /usr/bin/ :

1
cd /usr/bin

跳到自己的 home 目录 :

1
cd ~

跳到目前目录的上上两层 :

1
cd ../..

Linux mkdir 命令

Posted on 2019-03-26 | In Linux | Visitors:

Linux mkdir命令用于建立名称为 dirName 之子目录。

语法
1
mkdir [-p] dirName
参数说明
  • -p 确保目录名称存在,不存在的就建一个。
实例

在工作目录下,建立一个名为 AAA 的子目录 :

1
mkdir AAA

在工作目录下的 BBB 目录中,建立一个名为 Test 的子目录。 若 BBB 目录原本不存在,则建立一个。(注:本例若不加 -p,且原本 BBB目录不存在,则产生错误。)

1
mkdir -p BBB/Test

Linux rm 命令

Posted on 2019-03-26 | In Linux | Visitors:

Linux rm命令用于删除一个文件或者目录。

语法
1
rm [options] name...
参数
  • -i 删除前逐一询问确认。
  • -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
  • -r 将目录及以下之档案亦逐一删除。
实例

删除文件可以直接使用rm命令,若删除目录则必须配合选项”-r”,例如:

1
2
3
4
5
6
# rm  test.txt 
rm:是否删除 一般文件 "test.txt"? y
# rm homework
rm: 无法删除目录"homework": 是一个目录
# rm -r homework
rm:是否删除 目录 "homework"? y

删除当前目录下的所有文件及目录,命令行为:

1
rm  -r  *

文件一旦通过rm命令删除,则无法恢复,所以必须格外小心地使用该命令。

Linux mv 命令

Posted on 2019-03-26 | In Linux | Visitors:

Linux mv命令用来为文件或目录改名、或将文件或目录移入其它位置。

语法
1
2
mv [options] source dest
mv [options] source... directory
参数说明
  • -i: 若指定目录已有同名文件,则先询问是否覆盖旧文件;
  • -f: 在mv操作要覆盖某已有的目标文件时不给任何指示;
    mv参数设置与运行结果
命令格式 运行结果
mv 文件名 文件名 将源文件名改为目标文件名
mv 文件名 目录名 将文件移动到目标目录
mv 目录名 目录名 目标目录已存在,将源目录移动到目标目录;目标目录不存在则改名
mv 目录名 文件名 出错
实例

将文件 aaa 更名为 bbb :

1
mv aaa bbb

将info目录放入logs目录中。注意,如果logs目录不存在,则该命令将info改名为logs。

1
mv info/ logs

再如将/usr/student下的所有文件和目录移到当前目录下,命令行为:

1
$ mv /usr/student/*  .

Linux grep 命令

Posted on 2019-03-26 | In Linux | Visitors:

Linux grep命令用于查找文件里符合条件的字符串。
grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为”-“,则
grep指令会从标准输入设备读取数据。

语法
1
grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]
参数
  • -a 或 –text : 不要忽略二进制的数据。
  • -A<显示行数> 或 –after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
  • -b 或 –byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
  • -B<显示行数> 或 –before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。
  • -c 或 –count : 计算符合样式的列数。
  • -C<显示行数> 或 –context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
  • -d <动作> 或 –directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
  • -e<范本样式> 或 –regexp=<范本样式> : 指定字符串做为查找文件内容的样式。
  • -E 或 –extended-regexp : 将样式为延伸的普通表示法来使用。
  • -f<规则文件> 或 –file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
  • -F 或 –fixed-regexp : 将样式视为固定字符串的列表。
  • -G 或 –basic-regexp : 将样式视为普通的表示法来使用。
  • -h 或 –no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。
  • -H 或 –with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。
  • -i 或 –ignore-case : 忽略字符大小写的差别。
  • -l 或 –file-with-matches : 列出文件内容符合指定的样式的文件名称。
  • -L 或 –files-without-match : 列出文件内容不符合指定的样式的文件名称。
  • -n 或 –line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
  • -o 或 –only-matching : 只显示匹配PATTERN 部分。
  • -q 或 –quiet或–silent : 不显示任何信息。
  • -r 或 –recursive : 此参数的效果和指定”-d recurse”参数相同。
  • -s 或 –no-messages : 不显示错误信息。
  • -v 或 –revert-match : 显示不包含匹配文本的所有行。
  • -V 或 –version : 显示版本信息。
  • -w 或 –word-regexp : 只显示全字符合的列。
  • -x –line-regexp : 只显示全列符合的列。
  • -y : 此参数的效果和指定”-i”参数相同。
实例
  1. 在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行。此时,可以使用如下命令:
    1
    grep test *file

结果如下所示:

1
2
3
4
$ grep test test* #查找前缀有“test”的文件包含“test”字符串的文件  
testfile1:This a Linux testfile! #列出testfile1 文件中包含test字符的行
testfile_2:This is a linux testfile! #列出testfile_2 文件中包含test字符的行
testfile_2:Linux test #列出testfile_2 文件中包含test字符的行

  1. 以递归的方式查找符合条件的文件。例如,查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串”update”的文件,并打印出该字符串所在行的内容,使用的命令为:
    1
    grep -r update /etc/acpi

输出结果如下:

1
2
3
4
5
6
7
$ grep -r update /etc/acpi #以递归的方式查找“etc/acpi”  
#下包含“update”的文件
/etc/acpi/ac.d/85-anacron.sh:# (Things like the slocate updatedb cause a lot of IO.)
Rather than
/etc/acpi/resume.d/85-anacron.sh:# (Things like the slocate updatedb cause a lot of
IO.) Rather than
/etc/acpi/events/thinkpad-cmos:action=/usr/sbin/thinkpad-keys--update

  1. 反向查找。前面各个例子是查找并打印出符合条件的行,通过”-v”参数可以打印出不符合条件行的内容。
    查找文件名中包含 test 的文件中不包含test 的行,此时,使用的命令为:
    1
    grep -v test *test*

结果如下所示:

1
2
3
4
5
6
7
8
9
$ grep-v test* #查找文件名中包含test 的文件中不包含test 的行  
testfile1:helLinux!
testfile1:Linis a free Unix-type operating system.
testfile1:Lin
testfile_1:HELLO LINUX!
testfile_1:LINUX IS A FREE UNIX-TYPE OPTERATING SYSTEM.
testfile_1:THIS IS A LINUX TESTFILE!
testfile_2:HELLO LINUX!
testfile_2:Linux is a free unix-type opterating system.

Linux sed 命令

Posted on 2019-03-25 | In Linux | Visitors:

Linux sed命令是利用script来处理文本文件。
sed可依照script的指令,来处理、编辑文本文件。
Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

语法
1
sed [-hnV][-e][-f][文本文件]
参数说明
  • -e或–expression=以选项中指定的script来处理输入的文本文件。
  • -f<script文件>或–file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
  • -h或–help 显示帮助。
  • -n或–quiet或–silent 仅显示script处理后的结果。
  • -V或–version 显示版本信息。
参数
  • a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
  • c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
  • d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
  • i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
  • p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
  • s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g
实例

在testfile文件的第四行后添加一行,并将结果输出到标准输出,在命令行提示符下输入如下命令:

1
sed -e 4a\newLine testfile

首先查看testfile中的内容如下:

1
2
3
4
5
$ cat testfile #查看testfile 中的内容  
HELLO LINUX!
Linux is a free unix-type opterating system.
This is a linux testfile!
Linux test

使用sed命令后,输出结果如下:

1
2
3
4
5
6
$ sed -e 4a\newline testfile #使用sed 在第四行后添加新字符串  
HELLO LINUX! #testfile文件原有的内容
Linux is a free unix-type opterating system.
This is a linux testfile!
Linux test
newline

以行为单位的新增/删除

将 /etc/passwd 的内容列出并且列印行号,同时,请将第 2~5 行删除!

1
2
3
4
5
[root@www ~]# nl /etc/passwd | sed '2,5d'
1 root:x:0:0:root:/root:/bin/bash
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
.....(后面省略).....

sed 的动作为 ‘2,5d’ ,那个 d 就是删除!因为 2-5 行给他删除了,所以显示的数据就没有 2-5 行罗~ 另外,注意一下,原本应该是要下达 sed -e 才对,没有 -e 也行啦!同时也要注意的是, sed 后面接的动作,请务必以 ‘’ 两个单引号括住喔!

只要删除第 2 行

1
nl /etc/passwd | sed '2d'

要删除第 3 到最后一行

1
nl /etc/passwd | sed '3,$d'

在第二行后(亦即是加在第三行)加上『drink tea?』字样!

1
2
3
4
5
6
[root@www ~]# nl /etc/passwd | sed '2a drink tea'
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
drink tea
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
.....(后面省略).....

那如果是要在第二行前

1
nl /etc/passwd | sed '2i drink tea'

如果是要增加两行以上,在第二行后面加入两行字,例如 Drink tea or ….. 与 drink beer?

1
2
3
4
5
6
7
8
[root@www ~]# nl /etc/passwd | sed '2a Drink tea or ......\
> drink beer ?'
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
Drink tea or ......
drink beer ?
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
.....(后面省略).....

每一行之间都必须要以反斜杠『 \ 』来进行新行的添加喔!所以,上面的例子中,我们可以发现在第一行的最后面就有 \ 存在。

以行为单位的替换与显示

将第2-5行的内容取代成为『No 2-5 number』呢?

1
2
3
4
5
[root@www ~]# nl /etc/passwd | sed '2,5c No 2-5 number'
1 root:x:0:0:root:/root:/bin/bash
No 2-5 number
6 sync:x:5:0:sync:/sbin:/bin/sync
.....(后面省略).....

透过这个方法我们就能够将数据整行取代了!

仅列出 /etc/passwd 文件内的第 5-7 行

1
2
3
4
[root@www ~]# nl /etc/passwd | sed -n '5,7p'
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

可以透过这个 sed 的以行为单位的显示功能, 就能够将某一个文件内的某些行号选择出来显示。

数据的搜寻并显示

搜索 /etc/passwd有root关键字的行

1
2
3
4
5
6
7
8
nl /etc/passwd | sed '/root/p'
1 root:x:0:0:root:/root:/bin/bash
1 root:x:0:0:root:/root:/bin/bash
2 daemon:x:1:1:daemon:/usr/sbin:/bin/sh
3 bin:x:2:2:bin:/bin:/bin/sh
4 sys:x:3:3:sys:/dev:/bin/sh
5 sync:x:4:65534:sync:/bin:/bin/sync
....下面忽略

如果root找到,除了输出所有行,还会输出匹配行。

使用-n的时候将只打印包含模板的行。

1
2
nl /etc/passwd | sed -n '/root/p'
1 root:x:0:0:root:/root:/bin/bash

数据的搜寻并删除

删除/etc/passwd所有包含root的行,其他行输出

1
2
3
4
5
nl /etc/passwd | sed  '/root/d'
2 daemon:x:1:1:daemon:/usr/sbin:/bin/sh
3 bin:x:2:2:bin:/bin:/bin/sh
....下面忽略
#第一行的匹配root已经删除了

数据的搜寻并执行命令

搜索/etc/passwd,找到root对应的行,执行后面花括号中的一组命令,每个命令之间用分号分隔,这里把bash替换为blueshell,再输出这行:

1
2
nl /etc/passwd | sed -n '/root/{s/bash/blueshell/;p;q}'    
1 root:x:0:0:root:/root:/bin/blueshell

最后的q是退出。

数据的搜寻并替换

除了整行的处理模式之外, sed 还可以用行为单位进行部分数据的搜寻并取代。基本上 sed 的搜寻与替代的与 vi 相当的类似!他有点像这样:

1
sed 's/要被取代的字串/新的字串/g'

先观察原始信息,利用 /sbin/ifconfig 查询 IP

1
2
3
4
5
6
[root@www ~]# /sbin/ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:90:CC:A6:34:84
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::290:ccff:fea6:3484/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
.....(以下省略).....

本机的ip是192.168.1.100。
将 IP 前面的部分予以删除

1
2
[root@www ~]# /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g'
192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0

接下来则是删除后续的部分,亦即: 192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
将 IP 后面的部分予以删除

1
2
[root@www ~]# /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g' | sed 's/Bcast.*$//g'
192.168.1.100

多点编辑

一条sed命令,删除/etc/passwd第三行到末尾的数据,并把bash替换为blueshell

1
2
3
nl /etc/passwd | sed -e '3,$d' -e 's/bash/blueshell/'
1 root:x:0:0:root:/root:/bin/blueshell
2 daemon:x:1:1:daemon:/usr/sbin:/bin/sh

-e表示多点编辑,第一个编辑命令删除/etc/passwd第三行到末尾的数据,第二条命令搜索bash替换为blueshell。

直接修改文件内容(危险动作)

sed 可以直接修改文件的内容,不必使用管道命令或数据流重导向! 不过,由於这个动作会直接修改到原始的文件,所以请你千万不要随便拿系统配置来测试! 我们还是使用文件 regular_express.txt 文件来测试看看吧!
regular_express.txt 文件内容如下:

1
2
3
4
5
6
7
[root@www ~]# cat regular_express.txt 
runoob.
google.
taobao.
facebook.
zhihu-
weibo-

利用 sed 将 regular_express.txt 内每一行结尾若为 . 则换成 !

1
2
3
4
5
6
7
8
[root@www ~]# sed -i 's/\.$/\!/g' regular_express.txt
[root@www ~]# cat regular_express.txt
runoob!
google!
taobao!
facebook!
zhihu-
weibo-

:q:q
利用 sed 直接在 regular_express.txt 最后一行加入 # This is a test:

1
2
3
4
5
6
7
8
9
[root@www ~]# sed -i '$a # This is a test' regular_express.txt
[root@www ~]# cat regular_express.txt
runoob!
google!
taobao!
facebook!
zhihu-
weibo-
# This is a test

由於 $ 代表的是最后一行,而 a 的动作是新增,因此该文件最后新增 # This is a test!

sed 的 -i 选项可以直接修改文件内容,这功能非常有帮助!举例来说,如果你有一个 100 万行的文件,你要在第 100 行加某些文字,此时使用 vim 可能会疯掉!因为文件太大了!那怎办?就利用 sed 啊!透过 sed 直接修改/取代的功能,你甚至不需要使用 vim 去修订!

Linux cat 命令

Posted on 2019-03-25 | In Linux | Visitors:

cat 命令用于连接文件并打印到标准输出设备上。

语法格式
1
cat [-AbeEnstTuv] [--help] [--version] fileName
参数说明

-n 或 –number:由 1 开始对所有输出的行数编号。

-b 或 –number-nonblank:和 -n 相似,只不过对于空白行不编号。

-s 或 –squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。

-v 或 –show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。

-E 或 –show-ends : 在每行结束处显示 $。

-T 或 –show-tabs: 将 TAB 字符显示为 ^I。

-A, –show-all:等价于 -vET。

-e:等价于”-vE”选项;

-t:等价于”-vT”选项;

实例

把 textfile1 的文档内容加上行号后输入 textfile2 这个文档里:

1
cat -n textfile1 > textfile2

把 textfile1 和 textfile2 的文档内容加上行号(空白行不加)之后将内容附加到 textfile3 文档里:

1
cat -b textfile1 textfile2 >> textfile3

批量合并相似文件test1、test2、test3…..

1
cat text* >> testfile

清空 /etc/test.txt 文档内容:

1
cat /dev/null > /etc/test.txt

cat 也可以用来制作镜像文件。例如要制作软盘的镜像文件,将软盘放好后输入:

1
cat /dev/fd0 > OUTFILE

相反的,如果想把 image file 写到软盘,输入:

1
cat IMG_FILE > /dev/fd0

注
  1. OUTFILE 指输出的镜像文件名。
  2. IMG_FILE 指镜像文件。
  3. 若从镜像文件写回 device 时,device 容量需与相当。
  4. 通常用制作开机磁片。

基于R语言的相关性显著性检验

Posted on 2019-01-14 | In R | Visitors:

作者介绍:白马长枪儒雅将
原文链接:https://blog.csdn.net/u012429555/article/details/78905585
已授权转载

相关性的显著性检验.png

       p 值可以解释如下:一个很小的p 值表示,在预测变量和响应变量之间的真实关系未知的情况下,不太可能完全由于偶然而观察到预测变量和响应变量之间的强相关。因此,如果看到一个很小的p 值,就可以推断预测变量和响应变量问存在关联。如果p 值足够小,我们便拒绝零假设( reject the null hypothesis) 也就是声明X 和Y 之间存在关系。

一、 相关

相关系数可以用来描述定量变量之间的关系。相关系数的符号()表明关系的方向(正相关或负相关),其值的大小表示关系的强弱程度(完全不相关时为0,完全相关时为1)我们将使用R基础安装中的 state.x77 数据集,它提供了美国50个州在1977年的人口、收入、文盲率、预期寿命、谋杀率和高中毕业率数据。数据集中还收录了气温和土地面积数据,但为了节约空间,这里将其丢弃。你可以使用help(state.x77)了解数据集的更多信息。除了基础安装以外,我们还将使用psych和ggm包。

1
2
3
4
5
6
7
8
install.packages("psych")
library(psych)

install.packages("igraph")
library(igraph)

install.packages("ggm")
library(ggm)
1
2
3
4
5
6
7
8
9
10
11
12
13
相关的类型
R可以计算多种相关系数,包括Pearson相关系数、Spearman相关系数、Kendall相关系数、偏
相关系数、多分格(polychoric)相关系数和多系列(polyserial)相关系数。
1. Pearson、Spearman和Kendall相关
Pearson积差相关系数衡量了两个定量变量之间的线性相关程度。Spearman等级相关系数则衡
量分级定序变量之间的相关程度。Kendall’s Tau相关系数也是一种非参数的等级相关度量。
cor()函数可以计算这三种相关系数,而cov()函数可用来计算协方差。
cor(x,use = ,method = )
x 矩阵或数据框
use 指定缺失数据的处理方式。可选的方式为all.obs(假设不存在缺失数据——遇到缺失数据时将报
错)、everything(遇到缺失数据时,相关系数的计算结果将被设为missing)、complete.obs (行删除)以及 pairwise.complete.obs(成对删除,pairwise deletion)
method 指定相关系数的类型。可选类型为pearson、spearman或kendall
协方差和相关系数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
states<-state.x77[,1:6]
cov(states)
> cov(states)

Population Income Illiteracy Life Exp Murder
Population 19931683.7588 571229.7796 292.8679592 -407.8424612 5663.523714
Income 571229.7796 377573.3061 -163.7020408 280.6631837 -521.894286
Illiteracy 292.8680 -163.7020 0.3715306 -0.4815122 1.581776
Life Exp -407.8425 280.6632 -0.4815122 1.8020204 -3.869480
Murder 5663.5237 -521.8943 1.5817755 -3.8694804 13.627465
HS Grad -3551.5096 3076.7690 -3.2354694 6.3126849 -14.549616
HS Grad
Population -3551.509551
Income 3076.768980
Illiteracy -3.235469
Life Exp 6.312685
Murder -14.549616
HS Grad 65.237894


cor(states)
cor(states,method = "spearman")

Population Income Illiteracy Life Exp Murder HS Grad
Population 1.0000000 0.1246098 0.3130496 -0.1040171 0.3457401 -0.3833649
Income 0.1246098 1.0000000 -0.3145948 0.3241050 -0.2174623 0.5104809
Illiteracy 0.3130496 -0.3145948 1.0000000 -0.5553735 0.6723592 -0.6545396
Life Exp -0.1040171 0.3241050 -0.5553735 1.0000000 -0.7802406 0.5239410
Murder 0.3457401 -0.2174623 0.6723592 -0.7802406 1.0000000 -0.4367330
HS Grad -0.3833649 0.5104809 -0.6545396 0.5239410 -0.4367330 1.0000000

首个语句计算了方差和协方差,第二个语句则计算了Pearson积差相关系数,而第三个语句计算
了Spearman等级相关系数。举例来说,我们可以看到收入和高中毕业率之间存在很强的正相关,
而文盲率和预期寿命之间存在很强的负相关

请注意,在默认情况下得到的结果是一个方阵(所有变量之间两两计算相关)。你同样可以计算非方形的相关矩阵。当你对某一组变量与另外一组变量之间的关系感兴趣时,cor()函数的这种用法是非常实用的。注意,上述结果并未指明相关系数是否显著不为0(即,根据样本数据是否有足够的证据得出总体相关系数不为0的结论)。由于这个原因,你需要对相关系数进行显著性检验

二、 偏相关

偏相关是指在控制一个或多个定量变量时,另外两个定量变量之间的相互关系。你可以使用ggm包中的pcor()函数计算偏相关系数。ggm包没有被默认安装,在第一次使用之前需要先进行安装。函数调用格式为:pcor(u,s)其中的u是一个数值向量,前两个数值表示要计算相关系数的变量下标,其余的数值为条件变量(即要排除影响的变量)的下标。S为变量的协方差阵。

1
2
library(ggm)
pcor(c(1,5,2,3,6),cov(states))
1
[1] 0.3462724

本例中,在控制了收入、文盲率和高中毕业率的影响时,人口和谋杀率之间的相关系数为0.346。偏相关系数常用于社会科学的研究中。

三、 其他类型的相关

polycor包中的hetcor()函数可以计算一种混合的相关矩阵,其中包括数值型变量的Pearson积差相关系数、数值型变量和有序变量之间的多系列相关系数、有序变量之间的多分格相关系数以及二分变量之间的四分相关系数。多系列、多分格和四分相关系数都假设有序变量或二分变量由潜在的正态分布导出。请相关性的显著性检验
在计算好相关系数以后,如何对它们进行统计显著性检验呢?常用的原假设为变量间不相关(即总体的相关系数为0)。cor.test()函数对单个的Pearson、Spearman和Kendall相关系数进行检验:cor.test(x,y,alternative=,method=)其中的x和y为要检验相关性的变量,alternative则用来指定进行双侧检验或单侧检验(取值为”two.side”、”less”或”greater”),而method用以指定要计算的相关类型(”pearson”、”kendall”或”spearman”)。当研究的假设为总体的相关系数小于0时,请使用alternative=”less”
在研究的假设为总体的相关系数大于0时,应使用alternative=”greater”。

#默认情况下:为alternative=”two.side”(总体相关系数不等于0)

1
cor.test(states[,3],states[,5])
1
2
3
4
5
6
7
8
9
10
Pearson's product-moment correlation

data: states[, 3] and states[, 5]
t = 6.8479, df = 48, p-value = 1.258e-08
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.5279280 0.8207295
sample estimates:
cor
0.7029752

这段代码检验了预期寿命和谋杀率的Pearson相关系数为0的原假设。假设总体的相关度为0,则预计在一千万次中只会有少于一次的机会见到0.703这样大的样本相关度(即p = 1.258e08)。由于这种情况几乎不可能发生,所以你可以拒绝原假设,从而支持了要研究的猜想,即预期寿命和谋杀率之间的总体相关度不为0。遗憾的是,cor.test每次只能检验一种相关关系。但幸运的是,psych包中提供的corr.test()函数可以一次做更多事情。。corr.test()函数可以为Pearson、Spearman或Kendall相关计算相关矩阵和显著性水平 corr.test 计算相关矩阵并进行显著性检验 corr.test(states,use = “complete”)

1
corr.test(states,use = "complete")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Call:corr.test(x = states, use = "complete")
Correlation matrix
Population Income Illiteracy Life Exp Murder HS Grad
Population 1.00 0.21 0.11 -0.07 0.34 -0.10
Income 0.21 1.00 -0.44 0.34 -0.23 0.62
Illiteracy 0.11 -0.44 1.00 -0.59 0.70 -0.66
Life Exp -0.07 0.34 -0.59 1.00 -0.78 0.58
Murder 0.34 -0.23 0.70 -0.78 1.00 -0.49
HS Grad -0.10 0.62 -0.66 0.58 -0.49 1.00
Sample Size
[1] 50
Probability values (Entries above the diagonal are adjusted for multiple tests.)
Population Income Illiteracy Life Exp Murder HS Grad
Population 0.00 0.59 1.00 1.0 0.10 1
Income 0.15 0.00 0.01 0.1 0.54 0
Illiteracy 0.46 0.00 0.00 0.0 0.00 0
Life Exp 0.64 0.02 0.00 0.0 0.00 0
Murder 0.01 0.11 0.00 0.0 0.00 0
HS Grad 0.50 0.00 0.00 0.0 0.00 0

To see confidence intervals of the correlations, print with the short=FALSE option
1
2
3
4
5
参数use=的取值可为"pairwise"或"complete"(分别表示对缺失值执行成对删除或行删除)。参数method=的取值可为"pearson"(默认值)、"spearman"或"kendall"。人口数量和高中毕业率的相关系数(-0.10)并不显著地不为0(p = 0.5)其他显著性检验,我们关注了偏相关系数。在多元正态性的假设下,psych包中的pcor.test()函数①可以用来检验在控制一个或多个额外变量时两个变量之间的条件独立性。使用格式为:其中的r是由pcor()函数计算得到的偏相关系数,q为要控制的变量数(以数值表示位置),n为样本大小。在结束这个话题之前应当指出的是,psych包中的r.test()函数提供了多种实用的显著性检验方法。此函数可用来检验:
 某种相关系数的显著性;
 两个独立相关系数的差异是否显著;
 两个基于一个共享变量得到的非独立相关系数的差异是否显著;
 两个基于完全不同的变量得到的非独立相关系数的差异是否显著。

补充知识:

一 、相关性和显著性的关系:

  1. 关系的显著性(the significance of the relationship):指两(或多)变量之间关系的统计显著水平,一般要求p < 0.05。这是解释的第一步,如果不显著(p > 0.05)、不管其相关系数(回归系数或其它描述关系强度的统计量)多强(这在小样本的情况下会发生),都没有继续讨论的意义,因为在总体中这种关系存在的可能性很低,如接受这种关系的风险太大(即Type I错误)。

  2. 关系的强度(the strength of the relationship):指相关系数(或其它类似统计量)的大小。以相关系数为例,一般认为0.3以下为弱相关、0.3-0.7之间为中相关、0.7-1.0为强相关。这种分类也适用于其它标准化统计量(如标准回归系数, standardized regression coefficient,在SPSS中叫BETA)。大家知道,这些标准化的统计量的平方描述了两(或多)个变量之间的重合部分(如我最近详细解释的回归模型R2描述了自变量对因变量的解释部分),从那个角度来看,弱相关的变量之间的重合不到10%、中相关变量之间的重合在10-50%,强相关变量之间的重合在50%以上。

  3. 关系的方向(the direction of the relationship):指相关系数(或其它类似统计量)的正负符号。如果原先的假设是单尾(one-tailed),如“上网会减少社交时间”、“上网会增加孤独感”等,那么其相关系数的方向就十分重要。(从可证伪性原则来看,单尾假设比双尾假设更好。)当一对变量的关系是显著并强烈、但是其方向与假设相反,该研究假设也必须被拒绝。当然研究者应该深入分析这种情况为何会发生。

  4. 关系的形式(the form of the relationship):指变量之间的关系是线性(linear)还是非线性(nonlinear)。上述统计量描述的都是线性关系,如果不显著、显著而弱、显著并强烈但反方向,也许其真正的关系不是线性而是非线性,所以我们不能简单地收工回家,而要探索其非线性关系。当然,后者更复杂、对于没有良好的理论和方法训练的研究者更是容易掉进种种陷阱。

二、 只有显著性水平显著时,相关系数才是可信的


       也就说只看相关系数是说明不了问题的,还得看显著性,而且还是显著性水平显著的时候,就可以说明相关系数论证的点可信的,我们知道相关系数有以下含义:

这里,

,

是一个可以表征 x 和 y 之间线性关系紧密程度的量。它具有两个性质:

的充要条件是,存在常数a,b,使得

由性质衍生:

  1. 相关系数定量地刻画了 X 和 Y的相关程度,即
    越大,相关程度越大;

    对应相关程度最低;

  2. X 和Y 完全相关的含义是在概率为1的意义下存在线性关系,于是
    是一个可以表征X 和Y 之间线性关系紧密程度的量。当

    较大时,通常说X 和Y相关程度较好;当
    较小时,通常说X 和Y相关程度较差;当X和Y不相关,通常认为X和Y之间不存在线性关系,但并不能排除X和Y之间可能存在其他关系。

  3. 若X和Y不相关

    通常认为X和Y之间不存在线性关系,但并不能排除X和Y之间可能存在其他关系;若

    则X和Y不相关。若X和Y独立,则必有

    因而X和Y不相关;若X和Y不相关,则仅仅是不存在线性关系,可能存在其他关系,如

    X和Y不独立。

  4. 看例图:

R之相关性的显著性检验_例图

显著系数P:
P值即概率,反映某一事件发生的可能性大小。统计学根据显著性检验方法所得到的P 值,一般以P < 0.05 为有统计学差异, P<0.01 为有显著统计学差异,P<0.001为有极其显著的统计学差异。

P值 碰巧的概率 对无效假设 统计意义
P>0.05 碰巧出现的可能性大于5% 不能否定无效假设 两组差别无显著意义
P<0.05 碰巧出现的可能性小于5% 可以否定无效假设 两组差别有显著意义
P <0.01 碰巧出现的可能性小于1% 可以否定无效假设 两者差别有非常显著意义
123…7
庞锦烽

庞锦烽

山高路远,道阻且长

61 posts
14 categories
90 tags
RSS
GitHub weibo
© 2018 — 2019 庞锦烽
Powered by Hexo
|
Theme — NexT.Muse v5.1.4