如何拆分 R 中的数据框以进行统计测试?
How to split dataframe in R to conduct statistical tests?
我有 3 个变量,A1
、A2
和 A3
A1
是温度
A2
是月
A3
是位置
A2
有 2 个月 - 三月和五月。A3
有 2 个城市 - 金奈和迪拜。
但是当我在 A1
和 A3
之间进行关联时:
cor(A1,A3, method = "pearson")
'y' must be numeric
请问我该如何解决这个问题?
非常感谢,
伊沙克
拆分数据的方法有很多种,但首先要回答的问题是"what hypothesis do I wish to test?"
这是使用 timeanddate.com
金奈和迪拜平均每日高温的示例代码
# data collected from average high temperatures collected from 2005 - 2015
# https://www.timeanddate.com/weather/india/chennai/climate
# https://www.timeanddate.com/weather/united-arab-emirates/dubai/climate
rawData <- "
temperature,month,city
75,Jan,Dubai
78,Feb,Dubai
83,Mar,Dubai
92,Apr,Dubai
100,May,Dubai
103,Jun,Dubai
106,Jul,Dubai
107,Aug,Dubai
102,Sep,Dubai
96,Oct,Dubai
87,Nov,Dubai
79,Dec,Dubai
86,Jan,Chennai
89,Feb,Chennai
93,Mar,Chennai
97,Apr,Chennai
102,May,Chennai
100,Jun,Chennai
97,Jul,Chennai
95,Aug,Chennai
95,Sep,Chennai
92,Oct,Chennai
87,Nov,Chennai
86,Dec,Chennai"
tempData <- read.csv(text=rawData)
# t-test for average temperatures
t.test(tempData[tempData$city =="Dubai","temperature"],
tempData[tempData$city == "Chennai","temperature"],
paired=FALSE)
# paired t-test
t.test(tempData[tempData$city =="Dubai","temperature"],
tempData[tempData$city == "Chennai","temperature"],
paired=TRUE)
# correlation
cor(tempData[tempData$city =="Dubai","temperature"],
tempData[tempData$city =="Chennai","temperature"])
双样本 t 检验
双样本 t 检验检验两个均值相等的零假设,而不考虑检验中两组之间收集的数据之间的关联。有时两组之间的关联可能基于时间(如温度数据的情况),但配对可能基于其他特征(例如,双胞胎在具有测试组和对照组的研究中,每对双胞胎是随机的分配到测试和控制组)。
> t.test(tempData[tempData$city =="Dubai","temperature"],
+ tempData[tempData$city == "Chennai","temperature"],
+ paired=FALSE)
Welch Two Sample t-test
data: tempData[tempData$city == "Dubai", "temperature"] and tempData[tempData$city == "Chennai", "temperature"]
t = -0.24817, df = 15.546, p-value = 0.8073
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-8.765568 6.932235
sample estimates:
mean of x mean of y
92.33333 93.25000
由于 0 在 95% 置信区间内,我们接受零假设,即钦奈和迪拜之间的月平均高温没有差异。
配对 t 检验
配对 t 检验计算观察值对之间的差异并检验平均差异为 0 的原假设。
> # paired t-test
> t.test(tempData[tempData$city =="Dubai","temperature"],
+ tempData[tempData$city == "Chennai","temperature"],
+ paired=TRUE)
Paired t-test
data: tempData[tempData$city == "Dubai", "temperature"] and tempData[tempData$city == "Chennai", "temperature"]
t = -0.39555, df = 11, p-value = 0.7
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-6.017343 4.184009
sample estimates:
mean of the differences
-0.9166667
由于 0 在 95% 的置信区间内,我们接受零假设,即在对月平均高温的成对差异进行检验时,金奈和迪拜之间的月平均高温没有差异温度值。
相关性
Pearson 相关性衡量两个变量之间线性关系的强度,-1.0 = 完全负相关,0 = 无线性相关,1 = 完全正相关。
> cor(tempData[tempData$city =="Dubai","temperature"],
+ tempData[tempData$city =="Chennai","temperature"])
[1] 0.7929018
>
0.79 的相关性表明迪拜和金奈的月平均高温之间存在很强的正线性关系。
用于拆分数据的技术
由于我创建了一个原始数据文件并使用 read.csv()
将其加载到 R 中,因此我使用提取运算符的 [
形式根据 [=17= 的值提取行] 柱子。我还为每个城市按月顺序创建了原始数据文件,因此每个子集中的值顺序按月匹配,从而可以直接使用成对 t 检验。
# extract temperature values for Dubai
tempData[tempData$city =="Dubai","temperature"]
可以使用多种技术从 R 数据框中提取数据子集,例如 which()
函数和 sqldf()
函数。
我有 3 个变量,A1
、A2
和 A3
A1
是温度A2
是月A3
是位置
A2
有 2 个月 - 三月和五月。A3
有 2 个城市 - 金奈和迪拜。
但是当我在 A1
和 A3
之间进行关联时:
cor(A1,A3, method = "pearson")
'y' must be numeric
请问我该如何解决这个问题?
非常感谢, 伊沙克
拆分数据的方法有很多种,但首先要回答的问题是"what hypothesis do I wish to test?"
这是使用 timeanddate.com
金奈和迪拜平均每日高温的示例代码# data collected from average high temperatures collected from 2005 - 2015
# https://www.timeanddate.com/weather/india/chennai/climate
# https://www.timeanddate.com/weather/united-arab-emirates/dubai/climate
rawData <- "
temperature,month,city
75,Jan,Dubai
78,Feb,Dubai
83,Mar,Dubai
92,Apr,Dubai
100,May,Dubai
103,Jun,Dubai
106,Jul,Dubai
107,Aug,Dubai
102,Sep,Dubai
96,Oct,Dubai
87,Nov,Dubai
79,Dec,Dubai
86,Jan,Chennai
89,Feb,Chennai
93,Mar,Chennai
97,Apr,Chennai
102,May,Chennai
100,Jun,Chennai
97,Jul,Chennai
95,Aug,Chennai
95,Sep,Chennai
92,Oct,Chennai
87,Nov,Chennai
86,Dec,Chennai"
tempData <- read.csv(text=rawData)
# t-test for average temperatures
t.test(tempData[tempData$city =="Dubai","temperature"],
tempData[tempData$city == "Chennai","temperature"],
paired=FALSE)
# paired t-test
t.test(tempData[tempData$city =="Dubai","temperature"],
tempData[tempData$city == "Chennai","temperature"],
paired=TRUE)
# correlation
cor(tempData[tempData$city =="Dubai","temperature"],
tempData[tempData$city =="Chennai","temperature"])
双样本 t 检验
双样本 t 检验检验两个均值相等的零假设,而不考虑检验中两组之间收集的数据之间的关联。有时两组之间的关联可能基于时间(如温度数据的情况),但配对可能基于其他特征(例如,双胞胎在具有测试组和对照组的研究中,每对双胞胎是随机的分配到测试和控制组)。
> t.test(tempData[tempData$city =="Dubai","temperature"],
+ tempData[tempData$city == "Chennai","temperature"],
+ paired=FALSE)
Welch Two Sample t-test
data: tempData[tempData$city == "Dubai", "temperature"] and tempData[tempData$city == "Chennai", "temperature"]
t = -0.24817, df = 15.546, p-value = 0.8073
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-8.765568 6.932235
sample estimates:
mean of x mean of y
92.33333 93.25000
由于 0 在 95% 置信区间内,我们接受零假设,即钦奈和迪拜之间的月平均高温没有差异。
配对 t 检验
配对 t 检验计算观察值对之间的差异并检验平均差异为 0 的原假设。
> # paired t-test
> t.test(tempData[tempData$city =="Dubai","temperature"],
+ tempData[tempData$city == "Chennai","temperature"],
+ paired=TRUE)
Paired t-test
data: tempData[tempData$city == "Dubai", "temperature"] and tempData[tempData$city == "Chennai", "temperature"]
t = -0.39555, df = 11, p-value = 0.7
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-6.017343 4.184009
sample estimates:
mean of the differences
-0.9166667
由于 0 在 95% 的置信区间内,我们接受零假设,即在对月平均高温的成对差异进行检验时,金奈和迪拜之间的月平均高温没有差异温度值。
相关性
Pearson 相关性衡量两个变量之间线性关系的强度,-1.0 = 完全负相关,0 = 无线性相关,1 = 完全正相关。
> cor(tempData[tempData$city =="Dubai","temperature"],
+ tempData[tempData$city =="Chennai","temperature"])
[1] 0.7929018
>
0.79 的相关性表明迪拜和金奈的月平均高温之间存在很强的正线性关系。
用于拆分数据的技术
由于我创建了一个原始数据文件并使用 read.csv()
将其加载到 R 中,因此我使用提取运算符的 [
形式根据 [=17= 的值提取行] 柱子。我还为每个城市按月顺序创建了原始数据文件,因此每个子集中的值顺序按月匹配,从而可以直接使用成对 t 检验。
# extract temperature values for Dubai
tempData[tempData$city =="Dubai","temperature"]
可以使用多种技术从 R 数据框中提取数据子集,例如 which()
函数和 sqldf()
函数。