除了在应用 GLM 系列的某些技术之前使用的线性图形估计(注视散点图方法)之外,还有几种方法可以在算术上进行此估计(即没有图形)。
现在,我将关注 Fisher 的eta 平方- 相关比:在算术上,如果两个变量之间的关系是线性的,则它等于 Pearson r 的平方(决定系数:r 2)。因此,您可以比较eta和r 的值并评估关系类型(线性与否)。它提供有关由自变量解释(线性或非线性)的因变量的方差百分比的信息。因此,您可以在不满足线性假设时应用它。
简单地说:R 中是否有 eta/eta-squared 的例程?
所以我试图在PHP中实现Sample Pearson Correlation Coefficient:
(转到http://en.wikipedia.org/wiki/Pearson_correlation_coefficient并针对我试图实施的特定公式搜索"样本Pearson相关系数的替代公式")
$sum = 0;
$TF1 = 0;
$TF2 = 0;
$wSquare1 = 0;
$wSquare2 = 0;
$m = sizeof($sample);
foreach($sample as $x){
if(!isset($obj1[$x])){
$obj1[$x]['count'] = 0;
}
if(!isset($obj2[$x])){
$obj2[$x]['count'] = 0;
}
$sum += $obj1[$x]['count'] * $obj2[$x]['count'];
$TF1 += $obj1[$x]['count'];
$TF2 += $obj2[$x]['count'];
$wSquare1 += $obj1[$x]['count']^2;
$wSquare2 += $obj2[$x]['count']^2;
}
$numer = $sum * $m - $TF1 * $TF2;
$denom_left = $m*$wSquare1 - $TF1^2;
$denom_right = $m*$wSquare2 - $TF2^2;
$denom = sqrt($denom_left) * sqrt($denom_right); …Run Code Online (Sandbox Code Playgroud) 我对R很新,所以如果这个问题相对较新,我会道歉.我有一个大约33,000行的列表,显示订单ID和订单ID中订购的产品.结构如下:
Order.ID Product
193505 Pineapple Cheddar Burger
193505 Onion Rings
193564 Pineapple Cheddar Burger
193623 Hamburger
193623 French Fries
193623 Fountain Soda
193623 Hot Dog
193631 Hamburger
193631 French Fries
193631 Milkshake
193644 Daily Special
193726 Hamburger
193726 French Fries
193726 Fountain Soda
193728 Hamburger
193728 French Fries
193728 Fountain Soda
193738 Hamburger
193738 French Fries
193762 Hamburger
193762 French Fries
193762 Fountain Soda
193762 Hamburger
193762 French Fries
193762 Fountain Soda
Run Code Online (Sandbox Code Playgroud)
我想生成一个相关矩阵,它反映了与每个其他项目在同一订单ID中订购的每个项目的相关性.我开始使用a table(ID, Product)给了我每个订单中订购的产品.现在我被困在如何计算每个其他产品(产品2-k)的订单数量,因为已经订购了产品1.理想情况下,我想对每个产品进行分析并将其转换为矩阵,但正确评估一个似乎是合乎逻辑的第一步.
我将不胜感激任何有关此问题的指导.提前致谢.
我正在使用 R 创建相关性,代码如下:
Values<-read.csv(inputFile, header = TRUE)
O<-Values$Abundance_O
S<-Values$Abundance_S
cor(O,S)
pear_cor<-round(cor(O,S),4)
outfile<-paste(inputFile, ".jpg", sep = "")
jpeg(filename = outfile, width = 15, height = 10, units = "in", pointsize = 10, quality = 75, bg = "white", res = 300, restoreConsole = TRUE)
rx<-range(0,20000000)
ry<-range(0,200000)
plot(rx,ry, ylab="S", xlab="O", main="O vs S", type="n")
points(O,S, col="black", pch=3, lwd=1)
mtext(sprintf("%s %.4f", "pearson: ", pear_cor), adj=1, padj=0, side = 1, line = 4)
dev.off()
pear_cor
Run Code Online (Sandbox Code Playgroud)
我现在需要找到每组数据的下四分位数并排除下四分位数内的数据。然后我想重写没有这些值的数据,并在相关分析中使用新的数据列(因为我想通过下四分位数对数据进行阈值处理)。如果有一种方法可以编写它,以便通过应用来自 Java 的参数(就像我对输入文件名所做的那样)来轻松更改阈值,那就更好了!
非常感谢。
我现在已经暗示了下面的答案并且这是有效的,但是我需要将数据对保持在一起以进行关联。这是我的数据示例(来自 csv):
Abundance_O Abundance_S
3635900.752 …Run Code Online (Sandbox Code Playgroud) 到目前为止,我曾经习惯于cor测量点之间的对齐.我很满意结果,两者之间的值,-1并0始终发现我想要的线条.但是,由于这里的答案和评论,我意识到这不是最强大的方法,因为扁平线的标准偏差为零,例如:
> cor(1:10, rep(10,10))
[1] NA
Warning message:
In cor(1:10, rep(10, 10)) : the standard deviation is zero
Run Code Online (Sandbox Code Playgroud)
我的目标是定义一个函数,它给出1完美对齐的点(无论斜率)和更接近于0不符合点的值.你会建议一个比我更强大的方法吗?
编辑:
按照@Hong Ooi的建议,我得到了
data1 <- data.frame(date = c(13636, 13636, 14403, 14761, 15201, 15741),
value = c(865310, 999989, 999989, 2, 999989, 26))
data2 <- data.frame(date = c(12667, 12745, 13106, 13276, 13461, 13626),
value = c(1904, 2055, 2740, 3376, 3567, 4099))
m <- cbind(data1$date, data1$value)
sdev <- prcomp(m)$sdev
sdev[1]/sum(sdev)
# 0.9986399 …Run Code Online (Sandbox Code Playgroud) 有没有人知道如何规范化
scipy.ndimage.filters.correlate
Run Code Online (Sandbox Code Playgroud)
获得的功能:
XCM = 1/N(xc(a-mu_a,b-mu_b)/(sig_a*sig_b))
Run Code Online (Sandbox Code Playgroud)
什么是N相关性?它通常是图像的数据点/像素数.我应该选择哪个值scipy.ndimage.filters.correlate?我的图片大小不同.我猜scipy correlate函数将小图像填充为零?
最终矩阵的大小
N = XCM.sizeX() * XCM.sizeY()
?
谢谢,El
我正在尝试在WEKA(分类问题)中进行PCA降维.
我的数据中有200个属性,接近2100行.
以下是我遵循的步骤
在WEKA资源管理器中导入csv文件
在预处理选项卡中,应用,规范化数据(使整个数据的范围为[0,1]
然后实施PCA.
我怀疑是
在任何一种情况下,我应该在PCA WEKA中为centerData选项选择什么选项?
one = pd.DataFrame(data=[1,2,3,4,5], index=[1,2,3,4,5])
two = pd.DataFrame(data=[5,4,3,2,1], index=[1,2,3,4,5])
one.corr(two)
Run Code Online (Sandbox Code Playgroud)
我认为它应该返回一个浮点数= -1.00,但它产生以下错误:
TypeError:无法将['pearson']与块值进行比较
在此先感谢您的帮助.
我从两个数据帧开始使用此函数(请参阅底部)来计算Pearson和Pval,但是我对Pval的结果不满意:似乎有太多的负相关性很重要。
为了与Pearson一起计算Pval,是否有更优雅的方法(如单行代码)?
这两个答案(pandas.DataFrame corrwith()方法)和(一个数据帧与另一个数据帧的相关矩阵)提供了很好的解决方案,但是缺少了P值计算。
这是代码:
def pearson_cross_map(df1, df2):
"""Correlate each Mvar with each Nvar.
Parameters
----------
df1 : dataframe1
Shape Mobs X Mvar.
df2 : dataframe2
Shape Nobs X Nvar.
Returns
-------
DFcorr, dataframe Mvar x Nvar in which each element is a Pearson
correlation coefficient.
DFpval, dataframe Mvar x Nvar in which each element is a P value (one-tailed).
"""
intersection = (df1.index & df2.index).tolist()
df1 = df1.convert_objects(convert_numeric=True)
df1 = df1.T[intersection].T
df1 = …Run Code Online (Sandbox Code Playgroud) 我想计算我的因变量y和我所有的x之间的相关性.我使用下面的代码,
cor(loan_data_10v[sapply(loan_data_10v, is.numeric)],use="complete.obs")
Run Code Online (Sandbox Code Playgroud)
结果是相关矩阵.我怎么能用变量y得到一列.